<?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>140959</bug_id>
          
          <creation_ts>2015-01-27 14:44:32 -0800</creation_ts>
          <short_desc>Move DFGBinarySwitch out of the DFG so that all of the JITs can use it</short_desc>
          <delta_ts>2015-01-27 14:56:26 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140660</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064666</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-27 14:44:32 -0800</bug_when>
    <thetext>Patch forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064667</commentid>
    <comment_count>1</comment_count>
      <attachid>245473</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-27 14:48:02 -0800</bug_when>
    <thetext>Created attachment 245473
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064668</commentid>
    <comment_count>2</comment_count>
      <attachid>245473</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-27 14:49:07 -0800</bug_when>
    <thetext>Comment on attachment 245473
the patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064676</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-27 14:56:26 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/179223</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245473</attachid>
            <date>2015-01-27 14:48:02 -0800</date>
            <delta_ts>2015-01-27 14:49:07 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>41244</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5MjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE1LTAxLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBERkdCaW5hcnlTd2l0Y2ggb3V0IG9mIHRoZSBERkcgc28gdGhhdCBhbGwgb2YgdGhlIEpJ
VHMgY2FuIHVzZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQwOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBJIHdhbnQgdG8gdXNlIHRoaXMgZm9yIHBvbHltb3JwaGljIHN0dWJzIGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwNjYwLgorICAgICAg
ICBUaGlzIGNvZGUgbm8gbG9uZ2VyIGhhcyBERkcgZGVwZW5kZW5jaWVzIHNvIHRoaXMgaXMgYSB2
ZXJ5IGNsZWFuIG1vdmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcv
REZHQmluYXJ5U3dpdGNoLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkZmcvREZHQmluYXJ5U3dp
dGNoLmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCaW5hcnlTd2l0Y2guY3BwLgorICAgICAgICAqIGppdC9CaW5hcnlTd2l0
Y2guaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCaW5hcnlTd2l0
Y2guaC4KKwogMjAxNS0wMS0yNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3OTE5Mi4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3OTEzNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcg
KzEyNSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR0F2YWlsYWJp
bGl0eU1hcC5jcHAKICAgICBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKICAg
ICBkZmcvREZHQmFzaWNCbG9jay5jcHAKLSAgICBkZmcvREZHQmluYXJ5U3dpdGNoLmNwcAogICAg
IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKICAgICBkZmcvREZHQmxvY2tTZXQuY3BwCiAg
ICAgZGZnL0RGR0Jsb2NrV29ya2xpc3QuY3BwCkBAIC0zMjcsNiArMzI2LDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBqaXQvQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3Bw
CiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKICAgICBqaXQvQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3MuY3BwCisgICAgaml0L0JpbmFyeVN3aXRjaC5jcHAKICAgICBqaXQvQ2xvc3VyZUNh
bGxTdHViUm91dGluZS5jcHAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNzkxMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdBdmFpbGFiaWxpdHlNYXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0Jhc2ljQmxvY2suY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0JpbmFyeVN3aXRjaC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0Jsb2NrU2V0LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdCbG9ja1dvcmtsaXN0LmNwcCIgLz4KQEAgLTU5OCw2ICs1
OTcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxq
aXRcQXNzZW1ibHlIZWxwZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGpp
dFxCaW5hcnlTd2l0Y2guY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XENs
b3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aml0XEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caml0XEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAiIC8+CkBAIC0xMDE1LDcgKzEwMTUsNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdCYXNpY0Jsb2Nr
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQmFzaWNCbG9ja0lubGlu
ZXMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdCaW5hcnlTd2l0Y2gu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdCbG9ja0luc2VydGlvblNl
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0Jsb2NrTWFwLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQmxvY2tNYXBJbmxpbmVzLmgiIC8+
CkBAIC0xMzMyLDYgKzEzMzEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFj
Y2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxqaXRcQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGppdFxBc3NlbWJseUhlbHBlcnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGppdFxCaW5hcnlTd2l0Y2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGppdFxDQ2FsbEhlbHBlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxq
aXRcQ29tcGFjdEpJVENvZGVNYXAuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNzkxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzUzLDYg
KzM1Myw4IEBACiAJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjYzOTQ3NjE1RENFMzQ3MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjM5
NDg0MTVFNDgxMTgwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0ODExNUU0ODExNDAwNkE1OTdDIC8q
IERGR0FycmF5TW9kZS5jcHAgKi87IH07CiAJCTBGNjM5NDg1MTVFNDgxMUIwMDZBNTk3QyAvKiBE
RkdBcnJheU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjY0QjI3MTFBNzg0QkFG
MDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0
Y2guY3BwICovOyB9OworCQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0QjI3
MDFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzAxODM1NjZGOTAwRDAxN0YxIC8q
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxC
eXRlY29kZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2
NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUMyMTgzNTY3MkIwMEQwMTdG
MSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICovOyB9OwpAQCAtMTI0NCw4ICsxMjQ2LDYgQEAKIAkJ
QTcwNEQ5MDcxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNEQ5MDIxN0EwQkFBODAwNkJBNTU0
IC8qIERGR01lcmdlTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE3MDlGMkYwMTdBMEFDMDQwMDUxMkU5OCAvKiBTbG93UGF0aENhbGwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDlGMkVGMTdB
MEFDMDQwMDUxMkU5OCAvKiBTbG93UGF0aENhbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzA5RjJGMjE3QTBBQzJBMDA1MTJFOTggLyogQ29t
bW9uU2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MDlGMkYxMTdBMEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0aHMuY3BwICov
OyB9OwotCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdB
MEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwotCQlBNzBCMDgzMzE3
QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZH
QmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRP
cGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87
IH07CiAJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQx
Nzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAy
OEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4
QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjAyMyw2ICsyMDIzLDggQEAKIAkJMEY2Mzk0NzYxNURDRTM0
NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOyBwYXRoID0gZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY2Mzk0ODExNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBcnJheU1vZGUuY3BwOyBwYXRoID0gZGZn
L0RGR0FycmF5TW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjM5NDgy
MTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQXJyYXlNb2RlLmg7IHBhdGggPSBkZmcvREZHQXJyYXlNb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBC
aW5hcnlTd2l0Y2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmlu
YXJ5U3dpdGNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NEIyNzAxQTc4
NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaW5hcnlTd2l0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2
NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2NkVCRjE4MzU2
NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY2NjZFQzIxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBdmFpbGFiaWxpdHku
Y3BwOyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yOTM1LDggKzI5MzcsNiBAQAogCQlBNzA0RDkwMjE3QTBCQUE4MDA2QkE1NTQg
LyogREZHTWVyZ2VNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01l
cmdlTW9kZS5oOyBwYXRoID0gZGZnL0RGR01lcmdlTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzA5RjJFRjE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhDYWxsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzA5RjJGMTE3QTBBQzJBMDA1MTJFOTggLyogQ29tbW9uU2xv
d1BhdGhzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vblNs
b3dQYXRocy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3MEIwODMwMTdBMEI3
OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQmluYXJ5U3dpdGNoLmNwcDsgcGF0aCA9IGRmZy9ERkdCaW5hcnlT
d2l0Y2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzBCMDgzMTE3QTBCNzlC
MDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0JpbmFyeVN3aXRjaC5oOyBwYXRoID0gZGZnL0RGR0JpbmFyeVN3aXRjaC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyog
SklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThG
NjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc0NCw2ICszNzQ0LDggQEAKIAkJCQkw
RjZCMUNDODE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCAq
LywKIAkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAq
LywKIAkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggKi8s
CisJCQkJMEY2NEIyNkYxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5jcHAgKi8sCisJ
CQkJMEY2NEIyNzAxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oICovLAogCQkJCTBG
MjRFNTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLywKIAkJCQkwRjczRDdB
QjE2NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8sCiAJCQkJ
MEY3M0Q3QUMxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAqLywK
QEAgLTM3ODUsOCArMzc4Nyw4IEBACiAJCQkJMTRBNjU4MUEwRjRFMzZGNDAwMDE1MEZEIC8qIEpJ
VFN0dWJzLmggKi8sCiAJCQkJRkVGNjgzNUExNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJN
LmggKi8sCiAJCQkJRkVGNjgzNUIxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzQVJNdjcuaCAq
LywKLQkJCQlGRUY2ODM1RDE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODYuaCAqLywKIAkJ
CQlGRUY2ODM1QzE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODZfNjQuaCAqLywKKwkJCQlG
RUY2ODM1RDE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODYuaCAqLywKIAkJCQlBN0E0QUUw
QzE3OTczQjREMDA1NjEyQjEgLyogSklUU3R1YnNYODZDb21tb24uaCAqLywKIAkJCQkwRjVFRjkx
QjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLywKIAkJCQkwRjVFRjkxQzE2ODc4
Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmggKi8sCkBAIC00NjU1LDggKzQ2NTcsNiBAQAogCQkJ
CUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkw
RjYyMDE3MDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oICovLAogCQkJCTBGRDU2
NTIyMTZBQjc4MEEwMDE5NzY1MyAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oICovLAotCQkJCUE3
MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovLAotCQkJCUE3
MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLywKIAkJCQlBN0Q4
OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovLAogCQkJ
CUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovLAog
CQkJCTBGQzNDQ0Y1MTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5oICovLApAQCAtNTU1
NSw3ICs1NTU1LDYgQEAKIAkJCQkwRjcxNENBNTE2RUE5MkYyMDBGM0VCRUIgLyogREZHQmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzYxNDNGQ0Qz
QjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFB
MTZEMDJFQzUwMDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQTcwQjA4MzMxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyog
REZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgy
MDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTg5MSw2
ICs1ODkwLDcgQEAKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxsSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U0NKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYg
LyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjVBMzBGMTEzNTAwN0UxMDBD
REI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFE
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NsYXNzUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUz
QzYxMzE2N0JBQkQ3MDA2RDc2MEEgLyogSlNDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTY4
MjAsNyArNjgyMCw2IEBACiAJCQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3
YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRUMxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkE4ODA2NzgxOTEwN0Q1NTAwQ0IwQkJCIC8qIERG
R0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC02OTk1LDYgKzY5OTQsNyBAQAogCQkJCTBGRjBGMTlGMTZCNzJBMTcwMDVE
Rjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUy
QjMxMEZEMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0MxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNjRCMjcxMUE3ODRCQUYwMDZFNEU2NiAv
KiBCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMkYxNUE4RENFMDAw
OEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
MjIzOUQxQTE2MjYyQkREMDA1QUM1RkQgLyogR0NUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzIxMTIyRTExNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmluYXJ5U3dp
dGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFy
eVN3aXRjaC5jcHAJKHJldmlzaW9uIDE3OTEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmluYXJ5U3dpdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxOTggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiREZHQmluYXJ5U3dpdGNoLmgiCi0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewotCi1CaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaChHUFJSZWcgdmFsdWUsIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUgdHlwZSkKLSAgICA6IG1fdmFsdWUodmFs
dWUpCi0gICAgLCBtX2luZGV4KDApCi0gICAgLCBtX2Nhc2VJbmRleChVSU5UX01BWCkKLSAgICAs
IG1fbWVkaWFuQmlhcygwKQotICAgICwgbV90eXBlKHR5cGUpCi17Ci0gICAgaWYgKGNhc2VzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9jYXNlcy5hcHBlbmQoQ2FzZShjYXNl
c1tpXSwgaSkpOwotICAgIHN0ZDo6c29ydChtX2Nhc2VzLmJlZ2luKCksIG1fY2FzZXMuZW5kKCkp
OwotICAgIGJ1aWxkKDAsIG1fY2FzZXMuc2l6ZSgpKTsKLX0KLQotYm9vbCBCaW5hcnlTd2l0Y2g6
OmFkdmFuY2UoTWFjcm9Bc3NlbWJsZXImIGppdCkKLXsKLSAgICBpZiAobV9jYXNlcy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgbV9mYWxsVGhyb3VnaC5hcHBlbmQoaml0Lmp1bXAoKSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1faW5kZXggPT0gbV9icmFuY2hl
cy5zaXplKCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9qdW1wU3RhY2suaXNFbXB0eSgp
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBmb3IgKDs7KSB7Ci0g
ICAgICAgIGNvbnN0IEJyYW5jaENvZGUmIGNvZGUgPSBtX2JyYW5jaGVzW21faW5kZXgrK107Ci0g
ICAgICAgIHN3aXRjaCAoY29kZS5raW5kKSB7Ci0gICAgICAgIGNhc2UgTm90RXF1YWxUb0ZhbGxU
aHJvdWdoOgotICAgICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2Ug
SW50MzI6Ci0gICAgICAgICAgICAgICAgbV9mYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDMy
KAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG1fdmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihzdGF0aWNfY2FzdDxp
bnQzMl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgSW50UHRyOgotICAgICAgICAgICAgICAgIG1fZmFsbFRo
cm91Z2guYXBwZW5kKGppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb3RF
cXVhbFRvUHVzaDoKLSAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgICAgICBj
YXNlIEludDMyOgotICAgICAgICAgICAgICAgIG1fanVtcFN0YWNrLmFwcGVuZChqaXQuYnJhbmNo
MzIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1
ZSwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHN0YXRpY19jYXN0
PGludDMyX3Q+KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSkpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJbnRQdHI6Ci0gICAgICAgICAgICAgICAgbV9qdW1w
U3RhY2suYXBwZW5kKGppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMZXNz
VGhhblRvUHVzaDoKLSAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgICAgICBj
YXNlIEludDMyOgotICAgICAgICAgICAgICAgIG1fanVtcFN0YWNrLmFwcGVuZChqaXQuYnJhbmNo
MzIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1
ZSwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHN0YXRpY19jYXN0
PGludDMyX3Q+KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSkpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJbnRQdHI6Ci0gICAgICAgICAgICAgICAgbV9qdW1w
U3RhY2suYXBwZW5kKGppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb3A6
Ci0gICAgICAgICAgICBtX2p1bXBTdGFjay50YWtlTGFzdCgpLmxpbmsoJmppdCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFeGVjdXRlQ2FzZToKLSAgICAgICAgICAgIG1fY2Fz
ZUluZGV4ID0gY29kZS5pbmRleDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotfQotCi12b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCkKLXsKLSAgICB1bnNpZ25lZCBzaXplID0gZW5kIC0gc3RhcnQ7Ci0gICAgCi0g
ICAgc3dpdGNoIChzaXplKSB7Ci0gICAgY2FzZSAwOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCi0gICAgY2Fz
ZSAxOiB7Ci0gICAgICAgIGlmIChzdGFydAotICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCAt
IDFdLnZhbHVlID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQotICAgICAgICAgICAgJiYgc3Rh
cnQgKyAxIDwgbV9jYXNlcy5zaXplKCkKLSAgICAgICAgICAgICYmIG1fY2FzZXNbc3RhcnQgKyAx
XS52YWx1ZSA9PSBtX2Nhc2VzW3N0YXJ0XS52YWx1ZSArIDEpIHsKLSAgICAgICAgICAgIG1fYnJh
bmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQo
QnJhbmNoQ29kZShOb3RFcXVhbFRvRmFsbFRocm91Z2gsIHN0YXJ0KSk7Ci0gICAgICAgIG1fYnJh
bmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSAyOiB7Ci0gICAgICAgIGlmIChtX2Nhc2Vz
W3N0YXJ0XS52YWx1ZSArIDEgPT0gbV9jYXNlc1tzdGFydCArIDFdLnZhbHVlCi0gICAgICAgICAg
ICAmJiBzdGFydAotICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCAtIDFdLnZhbHVlID09IG1f
Y2FzZXNbc3RhcnRdLnZhbHVlIC0gMQotICAgICAgICAgICAgJiYgc3RhcnQgKyAyIDwgbV9jYXNl
cy5zaXplKCkKLSAgICAgICAgICAgICYmIG1fY2FzZXNbc3RhcnQgKyAyXS52YWx1ZSA9PSBtX2Nh
c2VzW3N0YXJ0ICsgMV0udmFsdWUgKyAxKSB7Ci0gICAgICAgICAgICBtX2JyYW5jaGVzLmFwcGVu
ZChCcmFuY2hDb2RlKE5vdEVxdWFsVG9QdXNoLCBzdGFydCkpOwotICAgICAgICAgICAgbV9icmFu
Y2hlcy5hcHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQpKTsKLSAgICAgICAgICAg
IG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7Ci0gICAgICAgICAgICBtX2JyYW5j
aGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCArIDEpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBmaXJzdENh
c2UgPSBzdGFydDsKLSAgICAgICAgdW5zaWduZWQgc2Vjb25kQ2FzZSA9IHN0YXJ0ICsgMTsKLSAg
ICAgICAgaWYgKG1fbWVkaWFuQmlhcykKLSAgICAgICAgICAgIHN0ZDo6c3dhcChmaXJzdENhc2Us
IHNlY29uZENhc2UpOwotICAgICAgICBtX21lZGlhbkJpYXMgXj0gMTsKLSAgICAgICAgCi0gICAg
ICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoTm90RXF1YWxUb1B1c2gsIGZpcnN0Q2Fz
ZSkpOwotICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBm
aXJzdENhc2UpKTsKLSAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShQb3ApKTsK
LSAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRvRmFsbFRocm91
Z2gsIHNlY29uZENhc2UpKTsKLSAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShF
eGVjdXRlQ2FzZSwgc2Vjb25kQ2FzZSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgICAg
IAotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgdW5zaWduZWQgbWVkaWFuSW5kZXggPSAoc3RhcnQg
KyBlbmQpIC8gMjsKLSAgICAgICAgaWYgKCEoc2l6ZSAmIDEpKSB7Ci0gICAgICAgICAgICAvLyBC
ZWNhdXNlIGVuZCBpcyBleGNsdXNpdmUsIGluIHRoZSBldmVuIGNhc2UsIHRoaXMgcm91bmRzIHVw
IGJ5Ci0gICAgICAgICAgICAvLyBkZWZhdWx0LiBIZW5jZSBtZWRpYW4gYmlhcyBzb21ldGltZXMg
ZmxpcHMgdG8gc3VidHJhY2luZyBvbmUKLSAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGdldCBy
b3VuZC1kb3duIGJlaGF2aW9yLgotICAgICAgICAgICAgbWVkaWFuSW5kZXggLT0gbV9tZWRpYW5C
aWFzOwotICAgICAgICAgICAgbV9tZWRpYW5CaWFzIF49IDE7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ID4gc3RhcnQpOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVChtZWRpYW5JbmRleCArIDEgPCBlbmQpOwotICAgICAgICAKLSAgICAgICAg
bV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVzaCwgbWVkaWFuSW5kZXgp
KTsKLSAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRvUHVzaCwg
bWVkaWFuSW5kZXgpKTsKLSAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShFeGVj
dXRlQ2FzZSwgbWVkaWFuSW5kZXgpKTsKLSAgICAgICAgCi0gICAgICAgIG1fYnJhbmNoZXMuYXBw
ZW5kKEJyYW5jaENvZGUoUG9wKSk7Ci0gICAgICAgIGJ1aWxkKG1lZGlhbkluZGV4ICsgMSwgZW5k
KTsKLSAgICAgICAgCi0gICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7
Ci0gICAgICAgIGJ1aWxkKHN0YXJ0LCBtZWRpYW5JbmRleCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0gfQotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCaW5hcnlTd2l0
Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFyeVN3
aXRjaC5oCShyZXZpc2lvbiAxNzkxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0JpbmFyeVN3aXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHQmluYXJ5
U3dpdGNoX2gKLSNkZWZpbmUgREZHQmluYXJ5U3dpdGNoX2gKLQotI2lmIEVOQUJMRShERkdfSklU
KQotCi0jaW5jbHVkZSAiR1BSSW5mby5oIgotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotLy8gVGhlIEJpbmFyeVN3aXRjaCBj
bGFzcyBtYWtlcyBpdCBlYXN5IHRvIGVtaXQgYSBzd2l0Y2ggc3RhdGVtZW50IG92ZXIgZWl0aGVy
Ci0vLyAzMi1iaXQgaW50ZWdlcnMgb3IgcG9pbnRlcnMsIHdoZXJlIHRoZSBzd2l0Y2ggdXNlcyBh
IHRyZWUgb2YgYnJhbmNoZXMKLS8vIHJhdGhlciB0aGFuIGEganVtcCB0YWJsZS4gVGhpcyBtYWtl
cyBpdCBwYXJ0aWN1bGFybHkgdXNlZnVsIGlmIHRoZSBjYXNlCi0vLyB2YWx1ZXMgYXJlIHRvbyBm
YXIgYXBhcnQgdG8gbWFrZSBhIGp1bXAgdGFibGUgcHJhY3RpY2FsLCBvciBpZiB0aGVyZSBhcmUK
LS8vIHN1ZmZpY2llbnRseSBmZXcgY2FzZXMgdGhhdCB0aGUgdG90YWwgY29zdCBvZiBsb2cobnVt
Q2FzZXMpIGJyYW5jaGVzIGlzCi0vLyBsZXNzIHRoYW4gdGhlIGNvc3Qgb2YgYW4gaW5kaXJlY3Rl
ZCBqdW1wLgotLy8KLS8vIEluIGFuIGVmZm9ydCB0byBzaW1wbGlmeSB0aGUgbG9naWMgb2YgZW1p
dHRpbmcgY29kZSBmb3IgZWFjaCBjYXNlLCB0aGlzCi0vLyB1c2VzIGFuIGl0ZXJhdG9yIHN0eWxl
LCByYXRoZXIgdGhhbiBhIGZ1bmN0b3IgY2FsbGJhY2sgc3R5bGUuIFRoaXMgbWFrZXMKLS8vIHNl
bnNlIGJlY2F1c2UgZXZlbiB0aGUgaXRlcmF0b3IgaW1wbGVtZW50YXRpb24gZm91bmQgaGVyZWlu
IGlzIHJlbGF0aXZlbHkKLS8vIHNpbXBsZSwgd2hlcmVhcyB0aGUgY29kZSBpdCdzIHVzZWQgZnJv
bSBpcyB1c3VhbGx5IHF1aXRlIGNvbXBsZXggLSBvbmUKLS8vIGV4YW1wbGUgYmVpbmcgdGhlIHRy
aWUtb2YtdHJlZXMgc3RyaW5nIHN3aXRjaCBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlCi0vLyBj
b2RlIGVtaXR0ZWQgZm9yIGVhY2ggY2FzZSBpbnZvbHZlcyByZWN1cnNpbmcgdG8gZW1pdCBjb2Rl
IGZvciBhIHN1Yi10cmllLgotLy8KLS8vIFVzZSB0aGlzIGxpa2Ugc286Ci0vLwotLy8gQmluYXJ5
U3dpdGNoIHN3aXRjaCh2YWx1ZVJlZywgY2FzZXNWZWN0b3IsIEJpbmFyeVN3aXRjaDo6SW50MzIp
OwotLy8gd2hpbGUgKHN3aXRjaC5hZHZhbmNlKGppdCkpIHsKLS8vICAgICBpbnQgdmFsdWUgPSBz
d2l0Y2guY2FzZVZhbHVlKCk7Ci0vLyAgICAgdW5zaWduZWQgaW5kZXggPSBzd2l0Y2guY2FzZUlu
ZGV4KCk7IC8vIGluZGV4IGludG8gY2FzZXNWZWN0b3IsIGFib3ZlCi0vLyAgICAgLi4uIC8vIGdl
bmVyYXRlIGNvZGUgZm9yIHRoaXMgY2FzZQotLy8gfQotLy8gc3dpdGNoLmZhbGxUaHJvdWdoKCku
bGluaygmaml0KTsKLQotY2xhc3MgQmluYXJ5U3dpdGNoIHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5
cGUgewotICAgICAgICBJbnQzMiwKLSAgICAgICAgSW50UHRyCi0gICAgfTsKLSAgICAKLSAgICBC
aW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBU
eXBlKTsKLSAgICAKLSAgICB1bnNpZ25lZCBjYXNlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Nh
c2VzW21fY2FzZUluZGV4XS5pbmRleDsgfQotICAgIGludDY0X3QgY2FzZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYXNlc1ttX2Nhc2VJbmRleF0udmFsdWU7IH0KLSAgICAKLSAgICBib29sIGFk
dmFuY2UoTWFjcm9Bc3NlbWJsZXImKTsKLSAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmIGZhbGxUaHJvdWdoKCkgeyByZXR1cm4gbV9mYWxsVGhyb3VnaDsgfQotICAgIAotcHJpdmF0
ZToKLSAgICB2b2lkIGJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOwotICAgIAot
ICAgIEdQUlJlZyBtX3ZhbHVlOwotICAgIAotICAgIHN0cnVjdCBDYXNlIHsKLSAgICAgICAgQ2Fz
ZSgpIHsgfQotCi0gICAgICAgIENhc2UoaW50NjRfdCB2YWx1ZSwgdW5zaWduZWQgaW5kZXgpCi0g
ICAgICAgICAgICA6IHZhbHVlKHZhbHVlKQotICAgICAgICAgICAgLCBpbmRleChpbmRleCkKLSAg
ICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPChjb25z
dCBDYXNlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHZhbHVl
IDwgb3RoZXIudmFsdWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGludDY0X3QgdmFs
dWU7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgIH07Ci0gICAgCi0gICAgVmVjdG9yPENh
c2U+IG1fY2FzZXM7Ci0gICAgCi0gICAgZW51bSBCcmFuY2hLaW5kIHsKLSAgICAgICAgTm90RXF1
YWxUb0ZhbGxUaHJvdWdoLAotICAgICAgICBOb3RFcXVhbFRvUHVzaCwKLSAgICAgICAgTGVzc1Ro
YW5Ub1B1c2gsCi0gICAgICAgIFBvcCwKLSAgICAgICAgRXhlY3V0ZUNhc2UKLSAgICB9OwotICAg
ICAgICAKLSAgICBzdHJ1Y3QgQnJhbmNoQ29kZSB7Ci0gICAgICAgIEJyYW5jaENvZGUoKSB7IH0K
LSAgICAgICAgCi0gICAgICAgIEJyYW5jaENvZGUoQnJhbmNoS2luZCBraW5kLCB1bnNpZ25lZCBp
bmRleCA9IFVJTlRfTUFYKQotICAgICAgICAgICAgOiBraW5kKGtpbmQpCi0gICAgICAgICAgICAs
IGluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEJy
YW5jaEtpbmQga2luZDsKLSAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgfTsKLSAgICAKLSAg
ICBWZWN0b3I8QnJhbmNoQ29kZT4gbV9icmFuY2hlczsKLQotICAgIHVuc2lnbmVkIG1faW5kZXg7
Ci0gICAgdW5zaWduZWQgbV9jYXNlSW5kZXg7Ci0gICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpK
dW1wPiBtX2p1bXBTdGFjazsKLSAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9m
YWxsVGhyb3VnaDsKLSAgICAKLSAgICB1bnNpZ25lZCBtX21lZGlhbkJpYXM7Ci0gICAgCi0gICAg
VHlwZSBtX3R5cGU7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIERGR0JpbmFyeVN3aXRjaF9oCi0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAxNzkxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShE
RkdfSklUKQogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQmluYXJ5U3dpdGNo
LmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgiCi0jaW5jbHVkZSAiREZHQmluYXJ5U3dp
dGNoLmgiCiAjaW5jbHVkZSAiREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5
VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QmluYXJ5U3dpdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0JpbmFyeVN3aXRjaC5jcHAJKHJldmlzaW9uIDE3OTEzNikJKGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCaW5hcnlTd2l0Y2guY3BwOjE3OTEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHQmluYXJ5U3dpdGNoLmgiCisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgeworCitCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaChHUFJSZWcgdmFs
dWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUgdHlwZSkKKyAgICA6IG1fdmFs
dWUodmFsdWUpCisgICAgLCBtX2luZGV4KDApCisgICAgLCBtX2Nhc2VJbmRleChVSU5UX01BWCkK
KyAgICAsIG1fbWVkaWFuQmlhcygwKQorICAgICwgbV90eXBlKHR5cGUpCit7CisgICAgaWYgKGNh
c2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9jYXNlcy5hcHBlbmQoQ2Fz
ZShjYXNlc1tpXSwgaSkpOworICAgIHN0ZDo6c29ydChtX2Nhc2VzLmJlZ2luKCksIG1fY2FzZXMu
ZW5kKCkpOworICAgIGJ1aWxkKDAsIG1fY2FzZXMuc2l6ZSgpKTsKK30KKworYm9vbCBCaW5hcnlT
d2l0Y2g6OmFkdmFuY2UoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBpZiAobV9jYXNlcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgbV9mYWxsVGhyb3VnaC5hcHBlbmQoaml0Lmp1bXAoKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1faW5kZXggPT0gbV9i
cmFuY2hlcy5zaXplKCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9qdW1wU3RhY2suaXNF
bXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIGNvbnN0IEJyYW5jaENvZGUmIGNvZGUgPSBtX2JyYW5jaGVzW21faW5kZXgr
K107CisgICAgICAgIHN3aXRjaCAoY29kZS5raW5kKSB7CisgICAgICAgIGNhc2UgTm90RXF1YWxU
b0ZhbGxUaHJvdWdoOgorICAgICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgbV9mYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJy
YW5jaDMyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG1f
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihzdGF0aWNf
Y2FzdDxpbnQzMl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSW50UHRyOgorICAgICAgICAgICAgICAgIG1f
ZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBOb3RFcXVhbFRvUHVzaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAg
ICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgIG1fanVtcFN0YWNrLmFwcGVuZChqaXQu
YnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
bV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJbnRQdHI6CisgICAgICAgICAgICAgICAg
bV9qdW1wU3RhY2suYXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBMZXNzVGhhblRvUHVzaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAg
ICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgIG1fanVtcFN0YWNrLmFwcGVuZChqaXQu
YnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwg
bV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJbnRQdHI6CisgICAgICAgICAgICAgICAg
bV9qdW1wU3RhY2suYXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBQb3A6CisgICAgICAgICAgICBtX2p1bXBTdGFjay50YWtlTGFzdCgpLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFeGVjdXRlQ2FzZToKKyAgICAgICAgICAg
IG1fY2FzZUluZGV4ID0gY29kZS5pbmRleDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCkKK3sKKyAgICB1bnNpZ25lZCBzaXplID0gZW5kIC0gc3RhcnQ7Cisg
ICAgCisgICAgc3dpdGNoIChzaXplKSB7CisgICAgY2FzZSAwOiB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSAxOiB7CisgICAgICAgIGlmIChzdGFydAorICAgICAgICAgICAgJiYgbV9jYXNlc1tz
dGFydCAtIDFdLnZhbHVlID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQorICAgICAgICAgICAg
JiYgc3RhcnQgKyAxIDwgbV9jYXNlcy5zaXplKCkKKyAgICAgICAgICAgICYmIG1fY2FzZXNbc3Rh
cnQgKyAxXS52YWx1ZSA9PSBtX2Nhc2VzW3N0YXJ0XS52YWx1ZSArIDEpIHsKKyAgICAgICAgICAg
IG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9icmFuY2hlcy5h
cHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRvRmFsbFRocm91Z2gsIHN0YXJ0KSk7CisgICAgICAg
IG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSAyOiB7CisgICAgICAgIGlmICht
X2Nhc2VzW3N0YXJ0XS52YWx1ZSArIDEgPT0gbV9jYXNlc1tzdGFydCArIDFdLnZhbHVlCisgICAg
ICAgICAgICAmJiBzdGFydAorICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCAtIDFdLnZhbHVl
ID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQorICAgICAgICAgICAgJiYgc3RhcnQgKyAyIDwg
bV9jYXNlcy5zaXplKCkKKyAgICAgICAgICAgICYmIG1fY2FzZXNbc3RhcnQgKyAyXS52YWx1ZSA9
PSBtX2Nhc2VzW3N0YXJ0ICsgMV0udmFsdWUgKyAxKSB7CisgICAgICAgICAgICBtX2JyYW5jaGVz
LmFwcGVuZChCcmFuY2hDb2RlKE5vdEVxdWFsVG9QdXNoLCBzdGFydCkpOworICAgICAgICAgICAg
bV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQpKTsKKyAgICAg
ICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgICAgICBt
X2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCArIDEpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBm
aXJzdENhc2UgPSBzdGFydDsKKyAgICAgICAgdW5zaWduZWQgc2Vjb25kQ2FzZSA9IHN0YXJ0ICsg
MTsKKyAgICAgICAgaWYgKG1fbWVkaWFuQmlhcykKKyAgICAgICAgICAgIHN0ZDo6c3dhcChmaXJz
dENhc2UsIHNlY29uZENhc2UpOworICAgICAgICBtX21lZGlhbkJpYXMgXj0gMTsKKyAgICAgICAg
CisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoTm90RXF1YWxUb1B1c2gsIGZp
cnN0Q2FzZSkpOworICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVD
YXNlLCBmaXJzdENhc2UpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShQ
b3ApKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRvRmFs
bFRocm91Z2gsIHNlY29uZENhc2UpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNo
Q29kZShFeGVjdXRlQ2FzZSwgc2Vjb25kQ2FzZSkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgICAgIAorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgdW5zaWduZWQgbWVkaWFuSW5kZXggPSAo
c3RhcnQgKyBlbmQpIC8gMjsKKyAgICAgICAgaWYgKCEoc2l6ZSAmIDEpKSB7CisgICAgICAgICAg
ICAvLyBCZWNhdXNlIGVuZCBpcyBleGNsdXNpdmUsIGluIHRoZSBldmVuIGNhc2UsIHRoaXMgcm91
bmRzIHVwIGJ5CisgICAgICAgICAgICAvLyBkZWZhdWx0LiBIZW5jZSBtZWRpYW4gYmlhcyBzb21l
dGltZXMgZmxpcHMgdG8gc3VidHJhY2luZyBvbmUKKyAgICAgICAgICAgIC8vIGluIG9yZGVyIHRv
IGdldCByb3VuZC1kb3duIGJlaGF2aW9yLgorICAgICAgICAgICAgbWVkaWFuSW5kZXggLT0gbV9t
ZWRpYW5CaWFzOworICAgICAgICAgICAgbV9tZWRpYW5CaWFzIF49IDE7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ID4gc3RhcnQpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtZWRpYW5JbmRleCArIDEgPCBlbmQpOworICAgICAgICAKKyAg
ICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVzaCwgbWVkaWFu
SW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRv
UHVzaCwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29k
ZShFeGVjdXRlQ2FzZSwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgCisgICAgICAgIG1fYnJhbmNo
ZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgIGJ1aWxkKG1lZGlhbkluZGV4ICsg
MSwgZW5kKTsKKyAgICAgICAgCisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUo
UG9wKSk7CisgICAgICAgIGJ1aWxkKHN0YXJ0LCBtZWRpYW5JbmRleCk7CisgICAgICAgIGJyZWFr
OworICAgIH0gfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlT
d2l0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5
U3dpdGNoLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9C
aW5hcnlTd2l0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwxMyArMjQsMTMgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHQmluYXJ5U3dpdGNoLmgiCisjaW5jbHVk
ZSAiQmluYXJ5U3dpdGNoLmgiCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoSklU
KQogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CituYW1lc3BhY2UgSlNDIHsKIAogQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BS
UmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUpCiAgICAg
OiBtX3ZhbHVlKHZhbHVlKQpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpi
dWlsZCh1bnNpZ25lZCBzdGFydCwKICAgICB9IH0KIH0KIAotfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRworfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jp
bmFyeVN3aXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmlu
YXJ5U3dpdGNoLmgJKHJldmlzaW9uIDE3OTEzNikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCaW5hcnlTd2l0Y2guaDoxNzkxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0JpbmFyeVN3aXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQmlu
YXJ5U3dpdGNoX2gKKyNkZWZpbmUgREZHQmluYXJ5U3dpdGNoX2gKKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhlIEJpbmFyeVN3aXRj
aCBjbGFzcyBtYWtlcyBpdCBlYXN5IHRvIGVtaXQgYSBzd2l0Y2ggc3RhdGVtZW50IG92ZXIgZWl0
aGVyCisvLyAzMi1iaXQgaW50ZWdlcnMgb3IgcG9pbnRlcnMsIHdoZXJlIHRoZSBzd2l0Y2ggdXNl
cyBhIHRyZWUgb2YgYnJhbmNoZXMKKy8vIHJhdGhlciB0aGFuIGEganVtcCB0YWJsZS4gVGhpcyBt
YWtlcyBpdCBwYXJ0aWN1bGFybHkgdXNlZnVsIGlmIHRoZSBjYXNlCisvLyB2YWx1ZXMgYXJlIHRv
byBmYXIgYXBhcnQgdG8gbWFrZSBhIGp1bXAgdGFibGUgcHJhY3RpY2FsLCBvciBpZiB0aGVyZSBh
cmUKKy8vIHN1ZmZpY2llbnRseSBmZXcgY2FzZXMgdGhhdCB0aGUgdG90YWwgY29zdCBvZiBsb2co
bnVtQ2FzZXMpIGJyYW5jaGVzIGlzCisvLyBsZXNzIHRoYW4gdGhlIGNvc3Qgb2YgYW4gaW5kaXJl
Y3RlZCBqdW1wLgorLy8KKy8vIEluIGFuIGVmZm9ydCB0byBzaW1wbGlmeSB0aGUgbG9naWMgb2Yg
ZW1pdHRpbmcgY29kZSBmb3IgZWFjaCBjYXNlLCB0aGlzCisvLyB1c2VzIGFuIGl0ZXJhdG9yIHN0
eWxlLCByYXRoZXIgdGhhbiBhIGZ1bmN0b3IgY2FsbGJhY2sgc3R5bGUuIFRoaXMgbWFrZXMKKy8v
IHNlbnNlIGJlY2F1c2UgZXZlbiB0aGUgaXRlcmF0b3IgaW1wbGVtZW50YXRpb24gZm91bmQgaGVy
ZWluIGlzIHJlbGF0aXZlbHkKKy8vIHNpbXBsZSwgd2hlcmVhcyB0aGUgY29kZSBpdCdzIHVzZWQg
ZnJvbSBpcyB1c3VhbGx5IHF1aXRlIGNvbXBsZXggLSBvbmUKKy8vIGV4YW1wbGUgYmVpbmcgdGhl
IHRyaWUtb2YtdHJlZXMgc3RyaW5nIHN3aXRjaCBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlCisv
LyBjb2RlIGVtaXR0ZWQgZm9yIGVhY2ggY2FzZSBpbnZvbHZlcyByZWN1cnNpbmcgdG8gZW1pdCBj
b2RlIGZvciBhIHN1Yi10cmllLgorLy8KKy8vIFVzZSB0aGlzIGxpa2Ugc286CisvLworLy8gQmlu
YXJ5U3dpdGNoIHN3aXRjaCh2YWx1ZVJlZywgY2FzZXNWZWN0b3IsIEJpbmFyeVN3aXRjaDo6SW50
MzIpOworLy8gd2hpbGUgKHN3aXRjaC5hZHZhbmNlKGppdCkpIHsKKy8vICAgICBpbnQgdmFsdWUg
PSBzd2l0Y2guY2FzZVZhbHVlKCk7CisvLyAgICAgdW5zaWduZWQgaW5kZXggPSBzd2l0Y2guY2Fz
ZUluZGV4KCk7IC8vIGluZGV4IGludG8gY2FzZXNWZWN0b3IsIGFib3ZlCisvLyAgICAgLi4uIC8v
IGdlbmVyYXRlIGNvZGUgZm9yIHRoaXMgY2FzZQorLy8gfQorLy8gc3dpdGNoLmZhbGxUaHJvdWdo
KCkubGluaygmaml0KTsKKworY2xhc3MgQmluYXJ5U3dpdGNoIHsKK3B1YmxpYzoKKyAgICBlbnVt
IFR5cGUgeworICAgICAgICBJbnQzMiwKKyAgICAgICAgSW50UHRyCisgICAgfTsKKyAgICAKKyAg
ICBCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2Vz
LCBUeXBlKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjYXNlSW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2Nhc2VzW21fY2FzZUluZGV4XS5pbmRleDsgfQorICAgIGludDY0X3QgY2FzZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9jYXNlc1ttX2Nhc2VJbmRleF0udmFsdWU7IH0KKyAgICAKKyAgICBib29s
IGFkdmFuY2UoTWFjcm9Bc3NlbWJsZXImKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmIGZhbGxUaHJvdWdoKCkgeyByZXR1cm4gbV9mYWxsVGhyb3VnaDsgfQorICAgIAorcHJp
dmF0ZToKKyAgICB2b2lkIGJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOworICAg
IAorICAgIEdQUlJlZyBtX3ZhbHVlOworICAgIAorICAgIHN0cnVjdCBDYXNlIHsKKyAgICAgICAg
Q2FzZSgpIHsgfQorCisgICAgICAgIENhc2UoaW50NjRfdCB2YWx1ZSwgdW5zaWduZWQgaW5kZXgp
CisgICAgICAgICAgICA6IHZhbHVlKHZhbHVlKQorICAgICAgICAgICAgLCBpbmRleChpbmRleCkK
KyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG9wZXJhdG9yPChj
b25zdCBDYXNlJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZh
bHVlIDwgb3RoZXIudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDY0X3Qg
dmFsdWU7CisgICAgICAgIHVuc2lnbmVkIGluZGV4OworICAgIH07CisgICAgCisgICAgVmVjdG9y
PENhc2U+IG1fY2FzZXM7CisgICAgCisgICAgZW51bSBCcmFuY2hLaW5kIHsKKyAgICAgICAgTm90
RXF1YWxUb0ZhbGxUaHJvdWdoLAorICAgICAgICBOb3RFcXVhbFRvUHVzaCwKKyAgICAgICAgTGVz
c1RoYW5Ub1B1c2gsCisgICAgICAgIFBvcCwKKyAgICAgICAgRXhlY3V0ZUNhc2UKKyAgICB9Owor
ICAgICAgICAKKyAgICBzdHJ1Y3QgQnJhbmNoQ29kZSB7CisgICAgICAgIEJyYW5jaENvZGUoKSB7
IH0KKyAgICAgICAgCisgICAgICAgIEJyYW5jaENvZGUoQnJhbmNoS2luZCBraW5kLCB1bnNpZ25l
ZCBpbmRleCA9IFVJTlRfTUFYKQorICAgICAgICAgICAgOiBraW5kKGtpbmQpCisgICAgICAgICAg
ICAsIGluZGV4KGluZGV4KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEJyYW5jaEtpbmQga2luZDsKKyAgICAgICAgdW5zaWduZWQgaW5kZXg7CisgICAgfTsKKyAgICAK
KyAgICBWZWN0b3I8QnJhbmNoQ29kZT4gbV9icmFuY2hlczsKKworICAgIHVuc2lnbmVkIG1faW5k
ZXg7CisgICAgdW5zaWduZWQgbV9jYXNlSW5kZXg7CisgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVy
OjpKdW1wPiBtX2p1bXBTdGFjazsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
bV9mYWxsVGhyb3VnaDsKKyAgICAKKyAgICB1bnNpZ25lZCBtX21lZGlhbkJpYXM7CisgICAgCisg
ICAgVHlwZSBtX3R5cGU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0JpbmFyeVN3aXRjaF9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guaAkod29ya2luZyBjb3B5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTUgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIERG
R0JpbmFyeVN3aXRjaF9oCi0jZGVmaW5lIERGR0JpbmFyeVN3aXRjaF9oCisjaWZuZGVmIEJpbmFy
eVN3aXRjaF9oCisjZGVmaW5lIEJpbmFyeVN3aXRjaF9oCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkK
KyNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVzcGFj
ZSBKU0MgewogCiAvLyBUaGUgQmluYXJ5U3dpdGNoIGNsYXNzIG1ha2VzIGl0IGVhc3kgdG8gZW1p
dCBhIHN3aXRjaCBzdGF0ZW1lbnQgb3ZlciBlaXRoZXIKIC8vIDMyLWJpdCBpbnRlZ2VycyBvciBw
b2ludGVycywgd2hlcmUgdGhlIHN3aXRjaCB1c2VzIGEgdHJlZSBvZiBicmFuY2hlcwpAQCAtMTMy
LDkgKzEzMiw5IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7CiB9OwogCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCit9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLSNlbmRpZiAvLyBERkdCaW5hcnlTd2l0
Y2hfaAorI2VuZGlmIC8vIEJpbmFyeVN3aXRjaF9oCiAK
</data>
<flag name="review"
          id="270415"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>