<?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>164835</bug_id>
          
          <creation_ts>2016-11-16 14:44:06 -0800</creation_ts>
          <short_desc>Wasm function parser should use template functions for each binary and unary opcode</short_desc>
          <delta_ts>2016-11-16 15:34:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252026</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-16 14:44:06 -0800</bug_when>
    <thetext>Wasm function parser should use template functions for each binary and unary opcode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252029</commentid>
    <comment_count>1</comment_count>
      <attachid>294979</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-16 14:49:10 -0800</bug_when>
    <thetext>Created attachment 294979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252031</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-16 14:50:25 -0800</bug_when>
    <thetext>Attachment 294979 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:767:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/wasm/WasmFunctionParser.h:211:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 10 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>1252046</commentid>
    <comment_count>3</comment_count>
      <attachid>294979</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-16 15:14:00 -0800</bug_when>
    <thetext>Comment on attachment 294979
Patch

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

LGTM

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:169
&gt; +

Why the blank line here but not below at line 171-172?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252051</commentid>
    <comment_count>4</comment_count>
      <attachid>294979</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-16 15:18:13 -0800</bug_when>
    <thetext>Comment on attachment 294979
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:169
&gt;&gt; +
&gt; 
&gt; Why the blank line here but not below at line 171-172?

It felt weird to have a blank have the templates on top of each other. I don&apos;t feel strongly about it. So, I can change it if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252062</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-16 15:34:47 -0800</bug_when>
    <thetext>Committed r208821: &lt;http://trac.webkit.org/changeset/208821&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294979</attachid>
            <date>2016-11-16 14:49:10 -0800</date>
            <delta_ts>2016-11-16 15:14:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164835-20161116144907.patch</filename>
            <type>text/plain</type>
            <size>22089</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzQyOWRhOTJiZWZmMTk3YmRjZDQ4OTExZTNiNGRmNjE3YWNlMDljLi5kZjdhNzZkNmU3OWNmY2Y5
MjVlY2IwZDRmMGE2ZmY3Y2FmY2M1OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNi0xMS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXYXNtIGZ1bmN0aW9uIHBhcnNlciBzaG91bGQgdXNlIHRlbXBsYXRl
IGZ1bmN0aW9ucyBmb3IgZWFjaCBiaW5hcnkgYW5kIHVuYXJ5IG9wY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODM1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRo
ZSB3YXNtIGZ1bmN0aW9uIHBhcnNlciB0byBjYWxsIGludG8gYSB0ZW1wbGF0ZSBzcGVjaWFsaXph
dGlvbgorICAgICAgICBmb3IgZWFjaCBiaW5hcnkvdW5hcnkgb3Bjb2RlLiBUaGlzIGNoYW5nZSBt
YWtlcyBpdCBlYXNpZXIgdG8gaGF2ZSBjdXN0b20gaW1wbGVtZW50YXRpb25zCisgICAgICAgIG9m
IHZhcmlvdXMgb3Bjb2Rlcy4gSXQgaXMgYWxzbywgaW4gdGhlb3J5IGEgc3BlZWR1cCBzaW5jZSBp
dCBkb2VzIG5vdCByZXF1aXJlIHN3aXRjaGluZworICAgICAgICBvbiB0aGUgb3Bjb2RlIHR3aWNl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKCk6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmJpbmFyeUNhc2UpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6dW5hcnlDYXNlKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgICogd2FzbS9XYXNtVmFsaWRhdGUuY3BwOgorICAgICAgICAqIHdhc20vZ2VuZXJh
dGVXYXNtLnB5OgorICAgICAgICAoaXNCaW5hcnkpOgorICAgICAgICAoaXNTaW1wbGUpOgorICAg
ICAgICAqIHdhc20vZ2VuZXJhdGVXYXNtQjNJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHk6IEFk
ZGVkLgorICAgICAgICAoZ2VuZXJhdGVTaW1wbGVDb2RlKToKKyAgICAgICAgKiB3YXNtL2dlbmVy
YXRlV2FzbU9wc0hlYWRlci5weToKKyAgICAgICAgKG9wY29kZU1hY3JvaXplcik6CisgICAgICAg
ICogd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0ZUlubGluZXNIZWFkZXIucHk6CisKIDIwMTYtMTEt
MTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQcmV2aWV3IG90aGVyIENTUyBAbWVkaWEgaW4gYnJvd3NlciB3aW5kb3cgKHBy
aW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVlZjhiNGU0MDBmZjMx
ODJmZGEzNmVlMWNlNGEyNWNlY2M0NGFjMjEuLmVmZWVmMmVhY2ViODk2ZjIxMWRjNjgwZjFhMDQx
NjdkYWVhZTlhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNTcs
NiArMTE1Nyw3IEBAIG1hY3JvKEdFTkVSQVRFX1BZVEhPTiBfZ2VuZXJhdG9yIF9pbnB1dCBfb3V0
cHV0KQogZW5kbWFjcm8oKQogR0VORVJBVEVfUFlUSE9OKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vd2FzbS93YXNtLmpzb24gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9XYXNtT3BzLmgpCiBHRU5FUkFURV9QWVRIT04oJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5ICR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS93YXNtL3dhc20uanNvbiAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L1dhc21WYWxpZGF0ZUlubGluZXMuaCkKK0dFTkVSQVRFX1BZVEhPTigke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vd2FzbS9nZW5lcmF0ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5l
c0hlYWRlci5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2FzbS93YXNtLmpzb24gJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9XYXNtQjNJUkdlbmVyYXRvcklubGlu
ZXMuaCkKIAogIyBMVVQgZ2VuZXJhdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggNTY5Y2MxYWZlNmNlMDJkYmFmYTQzNGQwOTRlOTZlMWNmN2ViNWEz
ZC4uZmI5MjM0NTY3NWQxZThmZWMwOTgyOTc4YTI2ZDIwNDM1ODZlYzc5MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY1LDYgKzY1LDcgQEAgYWxsIDog
XAogICAgIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCBcCiAgICAgV2FzbU9wcy5oIFwKICAg
ICBXYXNtVmFsaWRhdGVJbmxpbmVzLmggXAorICAgIFdhc21CM0lSR2VuZXJhdG9ySW5saW5lcy5o
IFwKICMKIAogIyBKYXZhU2NyaXB0IGJ1aWx0aW5zLgpAQCAtMzA2LDYgKzMwNyw5IEBAIFdhc21P
cHMuaDogJChKYXZhU2NyaXB0Q29yZSkvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkgJChK
YXZhU2NyaXB0Q29yZSkvd2FzCiBXYXNtVmFsaWRhdGVJbmxpbmVzLmg6ICQoSmF2YVNjcmlwdENv
cmUpL3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5ICQoSmF2YVNjcmlw
dENvcmUpL3dhc20vZ2VuZXJhdGVXYXNtLnB5ICQoSmF2YVNjcmlwdENvcmUpL3dhc20vd2FzbS5q
c29uCiAJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRh
dGVJbmxpbmVzSGVhZGVyLnB5ICQoSmF2YVNjcmlwdENvcmUpL3dhc20vd2FzbS5qc29uIC4vV2Fz
bVZhbGlkYXRlSW5saW5lcy5oCiAKK1dhc21CM0lSR2VuZXJhdG9ySW5saW5lcy5oOiAkKEphdmFT
Y3JpcHRDb3JlKS93YXNtL2dlbmVyYXRlV2FzbUIzSVJHZW5lcmF0b3JJbmxpbmVzSGVhZGVyLnB5
ICQoSmF2YVNjcmlwdENvcmUpL3dhc20vZ2VuZXJhdGVXYXNtLnB5ICQoSmF2YVNjcmlwdENvcmUp
L3dhc20vd2FzbS5qc29uCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL3dhc20vZ2VuZXJh
dGVXYXNtQjNJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkgJChKYXZhU2NyaXB0Q29yZSkvd2Fz
bS93YXNtLmpzb24gLi9XYXNtQjNJUkdlbmVyYXRvcklubGluZXMuaAorCiAjIER5bmFtaWNhbGx5
LWRlZmluZWQgdGFyZ2V0cyBhcmUgbGlzdGVkIGJlbG93LiBTdGF0aWMgdGFyZ2V0cyBiZWxvbmcg
dXAgdG9wLgogCiBhbGwgOiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggY2MxZjdkZGQ5Mzk1NWY1MjhjOGMyNzQzNTY1ODNkMTYy
NWUyYWE0MC4uYmI3MWEyZDA2YTkxZmU5ZWIzMTAyYzY4MjAzZDQxMjY2YzU1NDY5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAt
NTMsMTEgKzUzLDExIEBAIHZvaWQgZHVtcFByb2NlZHVyZSh2b2lkKiBwdHIpCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLW5hbWVzcGFjZSB7Ci0KIHVzaW5nIG5hbWVzcGFj
ZSBCMzsKIAorbmFtZXNwYWNlIHsKIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBp
bmxpbmUgQjM6Ok9wY29kZSB0b0IzT3AoQmluYXJ5T3BUeXBlIG9wKQogewpAQCAtMTY0LDggKzE2
NCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RvcmUoU3RvcmVP
cFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50
MzJfdCBvZmZzZXQpOwogCiAgICAgLy8gQmFzaWMgb3BlcmF0b3JzCi0gICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gYmluYXJ5T3AoQmluYXJ5T3BUeXBlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBF
eHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gdW5hcnlPcChVbmFyeU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgYXJn
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICB0ZW1wbGF0ZTxPcFR5cGU+CisgICAgYm9v
bCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkT3AoRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKKworICAgIHRlbXBsYXRlPE9wVHlwZT4KKyAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRPcChFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdo
dCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUgbm9uWmVy
bywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAv
LyBDb250cm9sIGZsb3cKQEAgLTQ1MCwyMiArNDUzLDYgQEAgYm9vbCBCM0lSR2VuZXJhdG9yOjpz
dG9yZShTdG9yZU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5
cGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVu
YXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
Ci17Ci0gICAgaWYgKCFpc1NpbXBsZShvcCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRvQjNPcChv
cCksIE9yaWdpbigpLCBhcmcpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEIzSVJHZW5l
cmF0b3I6OmJpbmFyeU9wKEJpbmFyeU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhw
cmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCi17Ci0gICAgaWYgKCFp
c1NpbXBsZShvcCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRvQjNPcChvcCksIE9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgQjNJUkdlbmVyYXRvcjo6
YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUgbm9uWmVy
bywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAgICBy
ZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpTZWxl
Y3QsIE9yaWdpbigpLCBjb25kaXRpb24sIG5vblplcm8sIHplcm8pOwpAQCAtNjc1LDkgKzY2Miw2
IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYg
Y29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzCiAgICAgZGF0YUxvZ0xuKCJcbiIpOwogfQogCi19
IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbXBp
bGF0aW9uPiBjcmVhdGVKU1dyYXBwZXIoVk0mIHZtLCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVy
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwgTWVtb3J5KiBtZW1vcnkpCiB7
CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC03ODAsNCArNzY0LDYgQEAgc3RkOjp1bmlxdWVfcHRy
PEZ1bmN0aW9uQ29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIGNvbnN0IHVpbnQ4
X3QqIGZ1bmMKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAorI2luY2x1ZGUgIldhc21C
M0lSR2VuZXJhdG9ySW5saW5lcy5oIgorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRl
eCAxZTU4NDk5NDU4Yzc4YWFlZWNkZTdhNTM4NjBjYWM4ZTk0N2ZlNmM0Li4zOGZhNGM5OWVlYjQ0
Yjk2MTg1ZmRlMTc4OTE3MjdlNjllODJhZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtNjUsNiArNjUsMTIgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBvcEV4cHJlc3Npb25TdGFjayhFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKIAorICAgIHRlbXBsYXRlPE9wVHlwZT4KKyAgICBib29sIFdBUk5f
VU5VU0VEX1JFVFVSTiB1bmFyeUNhc2UoKTsKKworICAgIHRlbXBsYXRlPE9wVHlwZT4KKyAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlDYXNlKCk7CisKICAgICB2b2lkIHNldEVycm9y
TWVzc2FnZShTdHJpbmcmJiBtZXNzYWdlKSB7IG1fY29udGV4dC5zZXRFcnJvck1lc3NhZ2UoV1RG
TW92ZShtZXNzYWdlKSk7IH0KIAogICAgIENvbnRleHQmIG1fY29udGV4dDsKQEAgLTE2MywzOSAr
MTY5LDUxIEBAIGJvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmFkZFJldHVybigpCiAgICAg
cmV0dXJuIG1fY29udGV4dC5hZGRSZXR1cm4ocmV0dXJuVmFsdWVzKTsKIH0KIAotI2RlZmluZSBD
UkVBVEVfQ0FTRShuYW1lLCBpZCwgYjNvcCkgY2FzZSBuYW1lOgotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb250ZXh0PgotYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9u
KE9wVHlwZSBvcCkKK3RlbXBsYXRlPE9wVHlwZSBvcD4KK2Jvb2wgRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OmJpbmFyeUNhc2UoKQogewotICAgIHN3aXRjaCAob3ApIHsKLSAgICBGT1JfRUFDSF9X
QVNNX0JJTkFSWV9PUChDUkVBVEVfQ0FTRSkgewotICAgICAgICBFeHByZXNzaW9uVHlwZSByaWdo
dDsKLSAgICAgICAgaWYgKCFwb3BFeHByZXNzaW9uU3RhY2socmlnaHQpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIEV4cHJlc3Npb25UeXBlIHJpZ2h0OworICAgIGlmICghcG9wRXhw
cmVzc2lvblN0YWNrKHJpZ2h0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIEV4
cHJlc3Npb25UeXBlIGxlZnQ7Ci0gICAgICAgIGlmICghcG9wRXhwcmVzc2lvblN0YWNrKGxlZnQp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEV4cHJlc3Npb25UeXBlIGxlZnQ7Cisg
ICAgaWYgKCFwb3BFeHByZXNzaW9uU3RhY2sobGVmdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7Ci0gICAgICAgIGlmICghbV9jb250ZXh0
LmJpbmFyeU9wKHN0YXRpY19jYXN0PEJpbmFyeU9wVHlwZT4ob3ApLCBsZWZ0LCByaWdodCwgcmVz
dWx0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9leHByZXNzaW9uU3Rh
Y2suYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSByZXN1bHQ7CisgICAgaWYgKCFtX2NvbnRleHQudGVtcGxhdGUgYWRkT3A8b3A+
KGxlZnQsIHJpZ2h0LCByZXN1bHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9leHBy
ZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBG
T1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9DQVNFKSB7Ci0gICAgICAgIEV4cHJlc3Npb25U
eXBlIHZhbHVlOwotICAgICAgICBpZiAoIXBvcEV4cHJlc3Npb25TdGFjayh2YWx1ZSkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgordGVtcGxh
dGU8T3BUeXBlIG9wPgorYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6dW5hcnlDYXNlKCkK
K3sKKyAgICBFeHByZXNzaW9uVHlwZSB2YWx1ZTsKKyAgICBpZiAoIXBvcEV4cHJlc3Npb25TdGFj
ayh2YWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBFeHByZXNzaW9uVHlw
ZSByZXN1bHQ7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LnVuYXJ5T3Aoc3RhdGljX2Nhc3Q8VW5h
cnlPcFR5cGU+KG9wKSwgdmFsdWUsIHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9CisgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OworICAgIGlmICghbV9j
b250ZXh0LnRlbXBsYXRlIGFkZE9wPG9wPih2YWx1ZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOworICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgorYm9vbCBGdW5jdGlvblBh
cnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKK3sKKyAgICBzd2l0Y2gg
KG9wKSB7CisjZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM29wKSBjYXNlIE9wVHlwZTo6
bmFtZTogcmV0dXJuIGJpbmFyeUNhc2U8T3BUeXBlOjpuYW1lPigpOworICAgIEZPUl9FQUNIX1dB
U01fU0lNUExFX0JJTkFSWV9PUChDUkVBVEVfQ0FTRSkKKyN1bmRlZiBDUkVBVEVfQ0FTRQorCisj
ZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM29wKSBjYXNlIE9wVHlwZTo6bmFtZTogcmV0
dXJuIHVuYXJ5Q2FzZTxPcFR5cGU6Om5hbWU+KCk7CisgICAgRk9SX0VBQ0hfV0FTTV9TSU1QTEVf
VU5BUllfT1AoQ1JFQVRFX0NBU0UpCisjdW5kZWYgQ1JFQVRFX0NBU0UKIAogICAgIGNhc2UgT3BU
eXBlOjpTZWxlY3Q6IHsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uOwpAQCAtMjE4
LDYgKzIzNiw3IEBAIGJvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lv
bihPcFR5cGUgb3ApCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorI2RlZmluZSBDUkVB
VEVfQ0FTRShuYW1lLCBpZCwgYjNvcCkgY2FzZSBPcFR5cGU6Om5hbWU6CiAgICAgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfTE9BRF9PUChDUkVBVEVfQ0FTRSkgewogICAgICAgICB1aW50MzJfdCBhbGln
bm1lbnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoYWxpZ25tZW50KSkKQEAgLTI1Nyw2
ICsyNzYsNyBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24o
T3BUeXBlIG9wKQogCiAgICAgICAgIHJldHVybiBtX2NvbnRleHQuc3RvcmUoc3RhdGljX2Nhc3Q8
U3RvcmVPcFR5cGU+KG9wKSwgcG9pbnRlciwgdmFsdWUsIG9mZnNldCk7CiAgICAgfQorI3VuZGVm
IENSRUFURV9DQVNFCiAKICAgICBjYXNlIE9wVHlwZTo6RjMyQ29uc3Q6CiAgICAgY2FzZSBPcFR5
cGU6OkkzMkNvbnN0OiB7CkBAIC00NTQsMTUgKzQ3NCwxMSBAQCBib29sIEZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBjYXNlIE9wVHlwZTo6Tm9wOgotICAgIGNhc2UgT3BUeXBlOjpEcm9w
OgotICAgIGNhc2UgT3BUeXBlOjpUZWVMb2NhbDoKLSAgICBjYXNlIE9wVHlwZTo6R2V0R2xvYmFs
OgotICAgIGNhc2UgT3BUeXBlOjpTZXRHbG9iYWw6Ci0gICAgY2FzZSBPcFR5cGU6OkNhbGxJbmRp
cmVjdDoKKyAgICBkZWZhdWx0OiB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVu
dGVkLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIH0KIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtNTQwLDggKzU1Niw2IEBAIGJvb2wgRnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OnBvcEV4cHJlc3Npb25TdGFjayhFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotI3VuZGVmIENSRUFURV9DQVNFCi0KIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAppbmRleCBlZGQ2OTcyNDBiYjg3ODY2
NjI0MWVmZGI0OTk2MmIwNGRhYjU2MDJiLi5jNzVkYjMyZjZlNTY2MDkzNjM0NTc4ZGUzZmYxYzk2
YzdlZDUyZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFs
aWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5j
cHAKQEAgLTkxLDggKzkxLDExIEBAIHB1YmxpYzoKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBzdG9yZShTdG9yZU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5
cGUgdmFsdWUsIHVpbnQzMl90IG9mZnNldCk7CiAKICAgICAvLyBCYXNpYyBvcGVyYXRvcnMKLSAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4cHJlc3Np
b25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBlLCBFeHBy
ZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIHRlbXBsYXRlPE9w
VHlwZT4KKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRPcChFeHByZXNzaW9uVHlwZSBh
cmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworCisgICAgdGVtcGxhdGU8T3BUeXBlPgorICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZE9wKEV4cHJlc3Npb25UeXBlIGxlZnQsIEV4cHJl
c3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBib29sIFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBFeHByZXNz
aW9uVHlwZSBub25aZXJvLCBFeHByZXNzaW9uVHlwZSB6ZXJvLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKIAogICAgIC8vIENvbnRyb2wgZmxvdwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
Z2VuZXJhdGVXYXNtLnB5CmluZGV4IDg4ZTI4ZGIzYmYxNGEwYzJhNWZiZjlkMDUxZjVmYjQyMGM1
ZjQ5MjkuLjUzYTQ1YTdhMDgxMzc3NDQxZjAyNTQ0ZDExODU1Njc5MjhmN2ZiYTIgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbS5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc20ucHkKQEAgLTI4LDcgKzI4LDYgQEAK
IGltcG9ydCBqc29uCiBpbXBvcnQgcmUKIAotCiBjbGFzcyBXYXNtOgogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzY3JpcHROYW1lLCBqc29uUGF0aCk6CiAgICAgICAgIHdhc21GaWxlID0gb3Blbihq
c29uUGF0aCwgInIiKQpAQCAtODYsMyArODUsNyBAQCBkZWYgaXNVbmFyeShvcCk6CiAKIGRlZiBp
c0JpbmFyeShvcCk6CiAgICAgcmV0dXJuIGlzTm9ybWFsKG9wKSBhbmQgbGVuKG9wWyJwYXJhbWV0
ZXIiXSkgPT0gMgorCisKK2RlZiBpc1NpbXBsZShvcCk6CisgICAgcmV0dXJuICJiM29wIiBpbiBv
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtQjNJ
UkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5lc0hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmE1
ZTZiMGU2ZjI5ZGVlMDRjZTgyZWUyZWUxMzdmMTNlYmM5ZTc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtQjNJUkdlbmVyYXRvcklubGlu
ZXNIZWFkZXIucHkKQEAgLTAsMCArMSw3NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMg
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Om4KKyMKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGhpcyB0b29sIGhhcyBhIGNvdXBsZSBv
ZiBoZWxwZnVsIG1hY3JvcyB0byBwcm9jZXNzIFdhc20gZmlsZXMgZnJvbSB0aGUgd2FzbS5qc29u
LgorCitmcm9tIGdlbmVyYXRlV2FzbSBpbXBvcnQgKgoraW1wb3J0IG9wdHBhcnNlCitpbXBvcnQg
c3lzCisKK3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9n
IDx3YXNtLmpzb24+IDxXYXNtT3BzLmg+IikKKyhvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJz
ZV9hcmdzKHN5cy5hcmd2WzA6XSkKK2lmIGxlbihhcmdzKSAhPSAzOgorICAgIHBhcnNlci5lcnJv
cihwYXJzZXIudXNhZ2UpCisKK3dhc20gPSBXYXNtKGFyZ3NbMF0sIGFyZ3NbMV0pCitvcGNvZGVz
ID0gd2FzbS5vcGNvZGVzCit3YXNtQjNJUkdlbmVyYXRvckhGaWxlID0gb3BlbihhcmdzWzJdLCAi
dyIpCisKKworZGVmIGdlbmVyYXRlU2ltcGxlQ29kZShvcCk6CisgICAgb3Bjb2RlID0gb3BbIm9w
Y29kZSJdCisgICAgYjNvcCA9IG9wY29kZVsiYjNvcCJdCisgICAgYXJncyA9IFsiRXhwcmVzc2lv
blR5cGUgYXJnIiArIHN0cihwYXJhbSkgZm9yIHBhcmFtIGluIHJhbmdlKGxlbihvcGNvZGVbInBh
cmFtZXRlciJdKSldCisgICAgYXJncy5hcHBlbmQoIkV4cHJlc3Npb25UeXBlJiByZXN1bHQiKQor
ICAgIHBhcmFtcyA9IFsiYXJnIiArIHN0cihwYXJhbSkgZm9yIHBhcmFtIGluIHJhbmdlKGxlbihv
cGNvZGVbInBhcmFtZXRlciJdKSldCisgICAgcmV0dXJuICIiIgordGVtcGxhdGU8PiBib29sIEIz
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6IiIiICsgd2FzbS50b0NwcChvcFsibmFtZSJdKSAr
ICI+KCIgKyAiLCAiLmpvaW4oYXJncykgKyAiIiIpCit7CisgICAgcmVzdWx0ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6IiIiICsgb3Bjb2RlWyJiM29wIl0g
KyAiLCBPcmlnaW4oKSwgIiArICIsICIuam9pbihwYXJhbXMpICsgIiIiKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKyIiIgorCitkZWZpbml0aW9ucyA9IFtnZW5lcmF0ZVNpbXBsZUNvZGUob3ApIGZv
ciBvcCBpbiB3YXNtLm9wY29kZUl0ZXJhdG9yKGxhbWJkYSBvcDogaXNTaW1wbGUob3ApIGFuZCAo
aXNCaW5hcnkob3ApIG9yIGlzVW5hcnkob3ApKSldCitjb250ZW50cyA9IHdhc20uaGVhZGVyICsg
IiIiCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFdhc20geworCisiIiIgKyAiIi5qb2luKGRlZmluaXRpb25zKSAr
ICIiIgorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkFTU0VNQkxZKQorCisiIiIKKword2FzbUIzSVJHZW5lcmF0b3JIRmlsZS53cml0ZShjb250ZW50
cykKK3dhc21CM0lSR2VuZXJhdG9ySEZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5CmluZGV4IGNmYTc5OTVhM2Rj
OWY1MDNjMjY1ZGVmODYzMWI0MTZhZWYyMTNkMDQuLjcyOWI4MmE0MzlhNmZmYjZjYmQ2ODYxMTMz
ZmRiOWFjMDAxZTY3M2EgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dl
bmVyYXRlV2FzbU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZGVmIGNwcE1hY3JvKHdh
c21PcGNvZGUsIHZhbHVlLCBiM09wY29kZSk6CiBkZWYgb3Bjb2RlTWFjcm9pemVyKGZpbHRlcik6
CiAgICAgZm9yIG9wIGluIHdhc20ub3Bjb2RlSXRlcmF0b3IoZmlsdGVyKToKICAgICAgICAgYjNv
cCA9ICJPb3BzIgotICAgICAgICBpZiAiYjNvcCIgaW4gb3BbIm9wY29kZSJdOgorICAgICAgICBp
ZiBpc1NpbXBsZShvcFsib3Bjb2RlIl0pOgogICAgICAgICAgICAgYjNvcCA9IG9wWyJvcGNvZGUi
XVsiYjNvcCJdCiAgICAgICAgIHlpZWxkIGNwcE1hY3JvKG9wWyJuYW1lIl0sIG9wWyJvcGNvZGUi
XVsidmFsdWUiXSwgYjNvcCkKIApAQCAtNTUsMTMgKzU1LDEzIEBAIGRlZmluZXMuZXh0ZW5kKFtv
cCBmb3Igb3AgaW4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDogb3BbImNhdGVnb3J5Il0gPT0g
InNwZWNpCiBkZWZpbmVzLmFwcGVuZCgiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9DT05UUk9M
X0ZMT1dfT1AobWFjcm8pIikKIGRlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gb3Bjb2RlTWFj
cm9pemVyKGxhbWJkYSBvcDogb3BbImNhdGVnb3J5Il0gPT0gImNvbnRyb2wiKV0pCiBkZWZpbmVz
LmFwcGVuZCgiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9TSU1QTEVfVU5BUllfT1AobWFjcm8p
IikKLWRlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBv
cDogaXNVbmFyeShvcCkgYW5kICJiM29wIiBpbiBvcCldKQorZGVmaW5lcy5leHRlbmQoW29wIGZv
ciBvcCBpbiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBpc1VuYXJ5KG9wKSBhbmQgaXNTaW1w
bGUob3ApKV0pCiBkZWZpbmVzLmFwcGVuZCgiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9VTkFS
WV9PUChtYWNybykgXFxcbiAgICBGT1JfRUFDSF9XQVNNX1NJTVBMRV9VTkFSWV9PUChtYWNybyki
KQotZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9w
OiBpc1VuYXJ5KG9wKSBhbmQgbm90ICgiYjNvcCIgaW4gb3ApKV0pCitkZWZpbmVzLmV4dGVuZChb
b3AgZm9yIG9wIGluIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IGlzVW5hcnkob3ApIGFuZCBu
b3QgKGlzU2ltcGxlKG9wKSkpXSkKIGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFD
SF9XQVNNX1NJTVBMRV9CSU5BUllfT1AobWFjcm8pIikKLWRlZmluZXMuZXh0ZW5kKFtvcCBmb3Ig
b3AgaW4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDogaXNCaW5hcnkob3ApIGFuZCAiYjNvcCIg
aW4gb3ApXSkKK2RlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gb3Bjb2RlTWFjcm9pemVyKGxh
bWJkYSBvcDogaXNCaW5hcnkob3ApIGFuZCBpc1NpbXBsZShvcCkpXSkKIGRlZmluZXMuYXBwZW5k
KCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChtYWNybykgXFxcbiAgICBGT1Jf
RUFDSF9XQVNNX1NJTVBMRV9CSU5BUllfT1AobWFjcm8pIikKLWRlZmluZXMuZXh0ZW5kKFtvcCBm
b3Igb3AgaW4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDogaXNCaW5hcnkob3ApIGFuZCBub3Qg
KCJiM29wIiBpbiBvcCkpXSkKK2RlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gb3Bjb2RlTWFj
cm9pemVyKGxhbWJkYSBvcDogaXNCaW5hcnkob3ApIGFuZCBub3QgKGlzU2ltcGxlKG9wKSkpXSkK
IGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09Q
KG1hY3JvKSIpCiBkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIG9wY29kZU1hY3JvaXplcihs
YW1iZGEgb3A6IChvcFsiY2F0ZWdvcnkiXSA9PSAibWVtb3J5IiBhbmQgbGVuKG9wWyJyZXR1cm4i
XSkgPT0gMSkpXSkKIGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX01F
TU9SWV9TVE9SRV9PUChtYWNybykiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5CmluZGV4
IGFjNWIzZjg0ZDMxN2E4OTc5NmFkNjkxYjYzMDRmZGM5MWJmZmFjMmYuLmJiZTUxZTE0OTBlMzE5
NWU0Mzg1M2M0NGY4NmI2YTliZTE4MjgxYmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5saW5lc0hlYWRlci5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0ZUlubGluZXNIZWFkZXIu
cHkKQEAgLTYwLDM1ICs2MCwzOCBAQCBkZWYgdG9DcHAobmFtZSk6CiBkZWYgdW5hcnlNYWNybyhu
YW1lKToKICAgICBvcCA9IG9wY29kZXNbbmFtZV0KICAgICByZXR1cm4gIiIiCi0gICAgY2FzZSBV
bmFyeU9wVHlwZTo6IiIiICsgdG9DcHAobmFtZSkgKyAiIiI6IHsKLSAgICAgICAgaWYgKHZhbHVl
ICE9ICIiIiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzBdKSArICIiIikgewotICAgICAgICAg
ICAgbV9lcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKFwiIiIiICsgbmFtZSArICIiIiBleHBlY3Rz
IHRoZSB2YWx1ZSB0byBiZSBvZiB0eXBlOiAiLCB0b1N0cmluZygiIiIgKyBjcHBUeXBlKG9wWyJw
YXJhbWV0ZXIiXVswXSkgKyAiIiIpLCAiIGJ1dCBnb3QgYSB2YWx1ZSB3aXRoIHR5cGU6ICIsIHRv
U3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KK3Rl
bXBsYXRlPD4gYm9vbCBWYWxpZGF0ZTo6YWRkT3A8T3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSAr
ICIiIj4oRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCit7Cisg
ICAgaWYgKHZhbHVlICE9ICIiIiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzBdKSArICIiIikg
eworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoXCIiIiIgKyBuYW1lICsgIiIi
IGV4cGVjdHMgdGhlIHZhbHVlIHRvIGJlIG9mIHR5cGU6ICIsIHRvU3RyaW5nKCIiIiArIGNwcFR5
cGUob3BbInBhcmFtZXRlciJdWzBdKSArICIiIiksICIgYnV0IGdvdCBhIHZhbHVlIHdpdGggdHlw
ZTogIiwgdG9TdHJpbmcodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAot
ICAgICAgICByZXN1bHQgPSAiIiIgKyBjcHBUeXBlKG9wWyJyZXR1cm4iXVswXSkgKyAiIiI7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0iIiIKKyAgICByZXN1bHQgPSAiIiIgKyBjcHBUeXBl
KG9wWyJyZXR1cm4iXVswXSkgKyAiIiI7CisgICAgcmV0dXJuIHRydWU7Cit9CisiIiIKIAogCiBk
ZWYgYmluYXJ5TWFjcm8obmFtZSk6CiAgICAgb3AgPSBvcGNvZGVzW25hbWVdCiAgICAgcmV0dXJu
ICIiIgotICAgIGNhc2UgQmluYXJ5T3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIjogewot
ICAgICAgICBpZiAobGVmdCAhPSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAi
IiIpIHsKLSAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZyhcIiIiIiArIG5h
bWUgKyAiIiIgZXhwZWN0cyB0aGUgbGVmdCB2YWx1ZSB0byBiZSBvZiB0eXBlOiAiLCB0b1N0cmlu
ZygiIiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpLCAiIGJ1dCBnb3QgYSB2
YWx1ZSB3aXRoIHR5cGU6ICIsIHRvU3RyaW5nKGxlZnQpKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyaWdodCAhPSAiIiIgKyBjcHBUeXBlKG9w
WyJwYXJhbWV0ZXIiXVsxXSkgKyAiIiIpIHsKLSAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0g
bWFrZVN0cmluZyhcIiIiIiArIG5hbWUgKyAiIiIgZXhwZWN0cyB0aGUgcmlnaHQgdmFsdWUgdG8g
YmUgb2YgdHlwZTogIiwgdG9TdHJpbmcoIiIiICsgY3BwVHlwZShvcFsicGFyYW1ldGVyIl1bMF0p
ICsgIiIiKSwgIiBidXQgZ290IGEgdmFsdWUgd2l0aCB0eXBlOiAiLCB0b1N0cmluZyhyaWdodCkp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Cit0ZW1wbGF0ZTw+IGJvb2wg
VmFsaWRhdGU6OmFkZE9wPE9wVHlwZTo6IiIiICsgdG9DcHAobmFtZSkgKyAiIiI+KEV4cHJlc3Np
b25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQoreworICAgIGlmIChsZWZ0ICE9ICIiIiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzBdKSAr
ICIiIikgeworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoXCIiIiIgKyBuYW1l
ICsgIiIiIGV4cGVjdHMgdGhlIGxlZnQgdmFsdWUgdG8gYmUgb2YgdHlwZTogIiwgdG9TdHJpbmco
IiIiICsgY3BwVHlwZShvcFsicGFyYW1ldGVyIl1bMF0pICsgIiIiKSwgIiBidXQgZ290IGEgdmFs
dWUgd2l0aCB0eXBlOiAiLCB0b1N0cmluZyhsZWZ0KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAKLSAgICAgICAgcmVzdWx0ID0gIiIiICsgY3BwVHlwZShvcFsicmV0dXJuIl1bMF0p
ICsgIiIiOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IiIiCisgICAgaWYgKHJpZ2h0ICE9
ICIiIiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzFdKSArICIiIikgeworICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoXCIiIiIgKyBuYW1lICsgIiIiIGV4cGVjdHMgdGhlIHJp
Z2h0IHZhbHVlIHRvIGJlIG9mIHR5cGU6ICIsIHRvU3RyaW5nKCIiIiArIGNwcFR5cGUob3BbInBh
cmFtZXRlciJdWzBdKSArICIiIiksICIgYnV0IGdvdCBhIHZhbHVlIHdpdGggdHlwZTogIiwgdG9T
dHJpbmcocmlnaHQpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAorICAgIHJlc3Vs
dCA9ICIiIiArIGNwcFR5cGUob3BbInJldHVybiJdWzBdKSArICIiIjsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyIiIgogCiBkZWYgbG9hZE1hY3JvKG5hbWUpOgogICAgIG9wID0gb3Bjb2Rlc1tuYW1l
XQpAQCAtMTIyLDggKzEyNSw4IEBAIGRlZiBzdG9yZU1hY3JvKG5hbWUpOgogICAgIH0iIiIKIAog
Ci11bmFyeUNhc2VzID0gIiIuam9pbihbb3AgZm9yIG9wIGluIHdhc20ub3Bjb2RlSXRlcmF0b3Io
aXNVbmFyeSwgdW5hcnlNYWNybyldKQotYmluYXJ5Q2FzZXMgPSAiIi5qb2luKFtvcCBmb3Igb3Ag
aW4gd2FzbS5vcGNvZGVJdGVyYXRvcihpc0JpbmFyeSwgYmluYXJ5TWFjcm8pXSkKK3VuYXJ5U3Bl
Y2lhbGl6YXRpb25zID0gIiIuam9pbihbb3AgZm9yIG9wIGluIHdhc20ub3Bjb2RlSXRlcmF0b3Io
aXNVbmFyeSwgdW5hcnlNYWNybyldKQorYmluYXJ5U3BlY2lhbGl6YXRpb25zID0gIiIuam9pbihb
b3AgZm9yIG9wIGluIHdhc20ub3Bjb2RlSXRlcmF0b3IoaXNCaW5hcnksIGJpbmFyeU1hY3JvKV0p
CiBsb2FkQ2FzZXMgPSAiIi5qb2luKFtvcCBmb3Igb3AgaW4gd2FzbS5vcGNvZGVJdGVyYXRvcihs
YW1iZGEgb3A6IG9wWyJjYXRlZ29yeSJdID09ICJtZW1vcnkiIGFuZCBsZW4ob3BbInJldHVybiJd
KSA9PSAxLCBsb2FkTWFjcm8pXSkKIHN0b3JlQ2FzZXMgPSAiIi5qb2luKFtvcCBmb3Igb3AgaW4g
d2FzbS5vcGNvZGVJdGVyYXRvcihsYW1iZGEgb3A6IG9wWyJjYXRlZ29yeSJdID09ICJtZW1vcnki
IGFuZCBsZW4ob3BbInJldHVybiJdKSA9PSAwLCBzdG9yZU1hY3JvKV0pCiAKQEAgLTEzNiwxOSAr
MTM5LDcgQEAgY29udGVudHMgPSB3YXNtLmhlYWRlciArICIiIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20gewogCi1ib29sIFZhbGlkYXRlOjp1bmFyeU9wKFVuYXJ5T3BUeXBlIG9w
LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKLXsKLSAgICBz
d2l0Y2ggKG9wKSB7Ci0iIiIgKyB1bmFyeUNhc2VzICsgIiIiCi0gICAgfQotfQotCi1ib29sIFZh
bGlkYXRlOjpiaW5hcnlPcChCaW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIGxlZnQsIEV4
cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQotewotICAgIHN3aXRj
aCAob3ApIHsKLSIiIiArIGJpbmFyeUNhc2VzICsgIiIiCi0gICAgfQotfQorIiIiICsgdW5hcnlT
cGVjaWFsaXphdGlvbnMgKyBiaW5hcnlTcGVjaWFsaXphdGlvbnMgKyAiIiIKIAogYm9vbCBWYWxp
ZGF0ZTo6bG9hZChMb2FkT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCkKIHsK
</data>
<flag name="review"
          id="317631"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>