<?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>35716</bug_id>
          
          <creation_ts>2010-03-03 20:53:18 -0800</creation_ts>
          <short_desc>Allow static property getters to interact with JSCs caching</short_desc>
          <delta_ts>2010-09-23 15:45:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>46423</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195874</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-03 20:53:18 -0800</bug_when>
    <thetext>Allow static property getters to interact with JSCs caching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195880</commentid>
    <comment_count>1</comment_count>
      <attachid>49982</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-03 21:15:32 -0800</bug_when>
    <thetext>Created attachment 49982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195882</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-03 21:19:12 -0800</bug_when>
    <thetext>Attachment 49982 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/interpreter/Interpreter.cpp:2248:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
JavaScriptCore/interpreter/Interpreter.cpp:2421:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
JavaScriptCore/interpreter/Interpreter.cpp:2533:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195896</commentid>
    <comment_count>3</comment_count>
      <attachid>49982</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-03-03 22:24:19 -0800</bug_when>
    <thetext>Comment on attachment 49982
Patch

 2318         // Polymorphic self access caching currently only supported when JITting.
 2319         ASSERT_NOT_REACHED();
 2320         // This case of the switch must not be empty, else (op_get_by_id_self_list == op_get_by_id_chain)!
 2321         vPC += OPCODE_LENGTH(op_get_by_id_self_list);
 2322         NEXT_INSTRUCTION();
 2323     }

 2324     DEFINE_OPCODE(op_get_by_id_custom_proto_list) {
 2325         // Polymorphic prototype access caching currently only supported when JITting.
 2326         ASSERT_NOT_REACHED();
 2327         // This case of the switch must not be empty, else (op_get_by_id_proto_list == op_get_by_id_chain)!
 2328         vPC += OPCODE_LENGTH(op_get_by_id_proto_list);
 2329         NEXT_INSTRUCTION();

Probably best to remove the vPC increment in these cases.  In case of error (or maliciously bad input) it would probably be better to hang than to continue execution of invalid bytecode.

In &apos;op_get_by_id_custom_proto&apos; implementation in the interpreter, comments incorrectly refer to &apos;op_get_by_id_getter_proto&apos; (from copy and paste, presumably).  (ditto errors in comments in op_get_by_id_custom_self, op_get_by_id_custom_chain )

r-, you mix &apos;C&apos; and &apos;c&apos; in naming the prgramming language in the changelog.  r+ if you fix that. :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196286</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-04 17:34:15 -0800</bug_when>
    <thetext>Committed r55564: &lt;http://trac.webkit.org/changeset/55564&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49982</attachid>
            <date>2010-03-03 21:15:32 -0800</date>
            <delta_ts>2010-03-03 22:24:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35716-20100303211530.patch</filename>
            <type>text/plain</type>
            <size>69126</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyOGE5NTMyLi40ZTg3Yzg3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTAtMDMtMDMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBzdGF0aWMgcHJv
cGVydHkgZ2V0dGVycyB0byBpbnRlcmFjdCB3aXRoIEpTQ3MgY2FjaGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3MTYKKworICAgICAgICBBZGQg
bmV3IG9wY29kZXMgZm9yIGhhbmRsaW5nIGNhY2hlZCBsb29rdXAgb2Ygc3RhdGljIHZhbHVlIGdl
dHRlcnMuCisgICAgICAgIE1vcmUgb3IgbGVzcyB0aGUgc2FtZSBhcyB3aXRoIEpTIGdldHRlcnMs
IGFsbCB0aGF0IGNoYW5nZXMgaXMgdGhhdAorICAgICAgICBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhy
b3VnaCBhIEpTRnVuY3Rpb24gd2UgYWx3YXlzIGtub3cgdGhhdCB3ZSBoYXZlCisgICAgICAgIGEg
QyBmdW5jdGlvbiB0byBjYWxsLgorCisgICAgICAgIEZvciB0aGUgcGF0Y2hpbmcgcm91dGluZXMg
aW4gdGhlIEpJVCB3ZSBub3cgbmVlZCB0byBwYXNzIGEgZmV3CisgICAgICAgIG5ldyBwYXJhbWV0
ZXJzIHRvIGFsbG93IHVzIHRvIHBhc3MgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHRoZSBzdHViCisg
ICAgICAgIGZ1bmN0aW9uIHRvIGFsbG93IHVzIHRvIGNhbGwgdGhlIGMgZnVuY3Rpb24gY29ycmVj
dGx5LiAgTG9naWNhbGx5CisgICAgICAgIHRoaXMgc2hvdWxkbid0IGFjdHVhbGx5IGJlIG5lY2Vz
c2FyeSBhcyBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGlnbm9yZQorICAgICAgICB0aGUgaWRlbnRp
ZmllciwgYnV0IHJlbW92aW5nIHRoZSBpZGVudCBwYXJhbWV0ZXIgd291bGQgcmVxdWlyZQorICAg
ICAgICBzb21ld2hhdCBpbnZvbHZlZCBjaGFuZ2VzIHRvIHRoZSB3YXkgd2UgaW1wbGVtZW50IGdl
dE93blByb3BlcnR5U2xvdCwKKyAgICAgICAgZXRjLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkZXJlZlN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnJlZlN0cnVjdHVyZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Okluc3Ry
dWN0aW9uOjopOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkU2Vs
Zkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRT
ZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9M
aXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qp
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAg
ICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnRyeUNhY2hl
R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAg
KiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OmdldFN0YXRp
Y1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90
OjopOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5U2xvdDo6Y2FjaGVkUHJvcGVydHlUeXBlKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6
aXNDYWNoZWFibGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWVT
bG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVDdXN0b20pOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldEdldHRlclNsb3QpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVNsb3Q6OmNsZWFyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90Ojpj
dXN0b21HZXR0ZXIpOgorCiAyMDEwLTAzLTAzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA2OGRlYmIyLi4xZjA5MGE0IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTc4NSw2ICs3ODUsMjYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVy
YXRvciYKICAgICAgICAgICAgIHByaW50R2V0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdl
dF9ieV9pZF9nZXR0ZXJfY2hhaW4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOiB7CisgICAgICAgICAgICBwcmlu
dEdldEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWRfY3VzdG9tX3NlbGYiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X2N1c3RvbV9zZWxmX2xpc3Q6IHsKKyAgICAgICAgICAgIHByaW50R2V0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImdldF9ieV9pZF9jdXN0b21fc2VsZl9saXN0Iik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG86
IHsKKyAgICAgICAgICAgIHByaW50R2V0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9i
eV9pZF9jdXN0b21fcHJvdG8iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90b19saXN0OiB7CisgICAgICAgICAgICBw
cmludEdldEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWRfY3VzdG9tX3Byb3Rv
X2xpc3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9jaGFpbjogeworICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhl
YywgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbiIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZ2VuZXJpYzogewog
ICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lk
X2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3NSw3ICsxMzk1LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJlcyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogewog
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7
CiAKLSAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
Z2V0X2J5X2lkX3NlbGYpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZikpIHsKKyAgICBpZiAodlBDWzBdLnUub3Bjb2Rl
ID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3NlbGYpIHx8IHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfc2Vs
ZikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5
X2lkX2N1c3RvbV9zZWxmKSkgewogICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPmRlcmVmKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDIyLDcgKzE0NDIsNyBAQCB2b2lkIENvZGVC
bG9jazo6cmVmU3RydWN0dXJlcyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogewogICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CiAKLSAgICBp
ZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lk
X3NlbGYpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dl
dF9ieV9pZF9nZXR0ZXJfc2VsZikpIHsKKyAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3NlbGYpIHx8IHZQQ1swXS51Lm9wY29kZSA9
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZikgfHwgdlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3Rv
bV9zZWxmKSkgewogICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJlZigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggYmNl
ZjdmYi4uYWI2NjU5ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC0z
MSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIk9w
Y29kZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFpdHMuaD4KIApAQCAtMTQ0LDYgKzE0NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbihTdHJ1Y3R1cmVDaGFpbiogc3RydWN0
dXJlQ2hhaW4pIHsgdS5zdHJ1Y3R1cmVDaGFpbiA9IHN0cnVjdHVyZUNoYWluOyB9CiAgICAgICAg
IEluc3RydWN0aW9uKEpTQ2VsbCoganNDZWxsKSB7IHUuanNDZWxsID0ganNDZWxsOyB9CiAgICAg
ICAgIEluc3RydWN0aW9uKFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBo
aWNTdHJ1Y3R1cmVzKSB7IHUucG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0gcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzOyB9CisgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
IGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogCiAgICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGU7CkBAIC0xNTIsNiArMTU0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW47
CiAgICAgICAgICAgICBKU0NlbGwqIGpzQ2VsbDsKICAgICAgICAgICAgIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOworICAgICAgICAgICAgUHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKICAgICAgICAgfSB1OwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggNTY1NTVmMy4uNTA5ZGFlYiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTEwOSw2ICsxMDksMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG8sIDgpIFwKICAgICAgICAg
bWFjcm8ob3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90b19saXN0LCA4KSBcCiAgICAgICAgIG1hY3Jv
KG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4sIDgpIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5
X2lkX2N1c3RvbV9zZWxmLCA4KSBcCisgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9jdXN0b21f
c2VsZl9saXN0LCA4KSBcCisgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG8s
IDgpIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90b19saXN0LCA4KSBc
CisgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9jdXN0b21fY2hhaW4sIDgpIFwKICAgICAgICAg
bWFjcm8ob3BfZ2V0X2J5X2lkX2dlbmVyaWMsIDgpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2Fy
cmF5X2xlbmd0aCwgOCkgXAogICAgICAgICBtYWNybyhvcF9nZXRfc3RyaW5nX2xlbmd0aCwgOCkg
XApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDhlMDVj
MTIuLjA0ZmUxZjYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKQEAgLTEwMzAsOCArMTAzMCwyMCBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6
dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqCiAgICAgLy8g
Q2FjaGUgaGl0OiBTcGVjaWFsaXplIGluc3RydWN0aW9uIGFuZCByZWYgU3RydWN0dXJlcy4KIAog
ICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgIHZQQ1swXSA9
IHNsb3QuaXNHZXR0ZXIoKSA/IGdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGYpIDog
Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKTsKLSAgICAgICAgdlBDWzVdID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKKyAgICAgICAgc3dpdGNoIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpKSB7
CisgICAgICAgIGNhc2UgUHJvcGVydHlTbG90OjpHZXR0ZXI6CisgICAgICAgICAgICB2UENbMF0g
PSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmKTsKKyAgICAgICAgICAgIHZQQ1s1
XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbToKKyAgICAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShv
cF9nZXRfYnlfaWRfY3VzdG9tX3NlbGYpOworICAgICAgICAgICAgdlBDWzVdID0gc2xvdC5jdXN0
b21HZXR0ZXIoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKTsKKyAgICAgICAgICAg
IHZQQ1s1XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogCiAgICAgICAgIGNvZGVCbG9jay0+cmVmU3RydWN0dXJlcyh2UEMpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xMDU2LDEwICsxMDY4LDIyIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJl
dGVyOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAg
ICAgICAgfQogCiAgICAgICAgIEFTU0VSVCghYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpOwotCi0gICAgICAgIHZQQ1swXSA9IHNsb3QuaXNHZXR0ZXIo
KSA/IGdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvKSA6IGdldE9wY29kZShvcF9n
ZXRfYnlfaWRfcHJvdG8pOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChzbG90LmNhY2hlZFBy
b3BlcnR5VHlwZSgpKSB7CisgICAgICAgIGNhc2UgUHJvcGVydHlTbG90OjpHZXR0ZXI6CisgICAg
ICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90byk7Cisg
ICAgICAgICAgICB2UENbNl0gPSBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbToKKyAgICAgICAgICAgIHZQQ1swXSA9IGdldE9wY29k
ZShvcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvKTsKKyAgICAgICAgICAgIHZQQ1s2XSA9IHNsb3Qu
Y3VzdG9tR2V0dGVyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG8pOworICAgICAg
ICAgICAgdlBDWzZdID0gb2Zmc2V0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgdlBDWzVdID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKCk7Ci0gICAgICAgIHZQQ1s2XSA9
IG9mZnNldDsKIAogICAgICAgICBjb2RlQmxvY2stPnJlZlN0cnVjdHVyZXModlBDKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA3MiwxMSArMTA5NiwyNCBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRl
cnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sq
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB2UENbMF0gPSBzbG90LmlzR2V0dGVyKCkg
PyBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbikgOiBnZXRPcGNvZGUob3BfZ2V0
X2J5X2lkX2NoYWluKTsKKyAgICAKKyAgICBzd2l0Y2ggKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBl
KCkpIHsKKyAgICBjYXNlIFByb3BlcnR5U2xvdDo6R2V0dGVyOgorICAgICAgICB2UENbMF0gPSBn
ZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbik7CisgICAgICAgIHZQQ1s3XSA9IG9m
ZnNldDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbToKKyAg
ICAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fY2hhaW4pOworICAg
ICAgICB2UENbN10gPSBzbG90LmN1c3RvbUdldHRlcigpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKTsK
KyAgICAgICAgdlBDWzddID0gb2Zmc2V0OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgdlBD
WzRdID0gc3RydWN0dXJlOwogICAgIHZQQ1s1XSA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4o
Y2FsbEZyYW1lKTsKICAgICB2UENbNl0gPSBjb3VudDsKLSAgICB2UENbN10gPSBvZmZzZXQ7CiAg
ICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CiB9CiAKQEAgLTIyMDcsNiArMjI0NCw0
OCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZs
YWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogI2lmIEhBVkUoQ09NUFVURURfR09UTykKICAg
ICBza2lwX2lkX2dldHRlcl9wcm90bzoKICNlbmRpZgorI2lmIEhBVkUoQ09NUFVURURfR09UTykK
KyAgICBnb3RvICooJiZza2lwX2lkX2N1c3RvbV9wcm90byk7CisjZW5kaWYKKyAgICBERUZJTkVf
T1BDT0RFKG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG8pIHsKKyAgICAgICAgLyogb3BfZ2V0X2J5
X2lkX2dldHRlcl9wcm90byBkc3QocikgYmFzZShyKSBwcm9wZXJ0eShpZCkgc3RydWN0dXJlKHNJ
RCkgcHJvdG90eXBlU3RydWN0dXJlKHNJRCkgb2Zmc2V0KG4pIG5vcChuKQorICAgICAgICAgCisg
ICAgICAgICBDYWNoZWQgcHJvcGVydHkgYWNjZXNzOiBBdHRlbXB0cyB0byBnZXQgYSBjYWNoZWQg
Z2V0dGVyIHByb3BlcnR5IGZyb20gdGhlCisgICAgICAgICB2YWx1ZSBiYXNlJ3MgcHJvdG90eXBl
LiBJZiB0aGUgY2FjaGUgbWlzc2VzLCBvcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvCisgICAgICAg
ICByZXZlcnRzIHRvIG9wX2dldF9ieV9pZC4KKyAgICAgICAgICovCisgICAgICAgIGludCBiYXNl
ID0gdlBDWzJdLnUub3BlcmFuZDsKKyAgICAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBjYWxsRnJh
bWUtPnIoYmFzZSkuanNWYWx1ZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKExJS0VMWShiYXNl
VmFsdWUuaXNDZWxsKCkpKSB7CisgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYXNDZWxs
KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51
LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2Vs
bC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpLmlzT2JqZWN0KCkpOworICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFzT2JqZWN0KHN0cnVjdHVyZS0+
cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0dXJlOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChMSUtFTFkocHJvdG9PYmplY3QtPnN0cnVjdHVyZSgp
ID09IHByb3RvdHlwZVN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGRzdCA9
IHZQQ1sxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIGludCBwcm9wZXJ0eSA9IHZQ
Q1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXImIGlkZW50ID0g
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
YyBnZXR0ZXIgPSB2UENbNl0udS5nZXR0ZXJGdW5jOworICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGdldHRlcihjYWxsRnJhbWUsIHByb3RvT2JqZWN0LCBpZGVudCk7CisgICAg
ICAgICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIHZQQyAr
PSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG8pOworICAgICAgICAgICAg
ICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHVuY2FjaGVHZXRCeUlEKGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCksIHZQQyk7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CisjaWYgSEFW
RShDT01QVVRFRF9HT1RPKQorICAgIHNraXBfaWRfY3VzdG9tX3Byb3RvOgorI2VuZGlmCiAgICAg
REVGSU5FX09QQ09ERShvcF9nZXRfYnlfaWRfc2VsZl9saXN0KSB7CiAgICAgICAgIC8vIFBvbHlt
b3JwaGljIHNlbGYgYWNjZXNzIGNhY2hpbmcgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIHdoZW4g
SklUdGluZy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjM1LDYgKzIzMTQs
MjAgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBm
bGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5H
VEgob3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7
CiAgICAgfQorICAgIERFRklORV9PUENPREUob3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmX2xpc3Qp
IHsKKyAgICAgICAgLy8gUG9seW1vcnBoaWMgc2VsZiBhY2Nlc3MgY2FjaGluZyBjdXJyZW50bHkg
b25seSBzdXBwb3J0ZWQgd2hlbiBKSVR0aW5nLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgLy8gVGhpcyBjYXNlIG9mIHRoZSBzd2l0Y2ggbXVzdCBub3QgYmUgZW1wdHks
IGVsc2UgKG9wX2dldF9ieV9pZF9zZWxmX2xpc3QgPT0gb3BfZ2V0X2J5X2lkX2NoYWluKSEKKyAg
ICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkX3NlbGZfbGlzdCk7CisgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CisgICAgREVGSU5FX09QQ09ERShvcF9nZXRf
YnlfaWRfY3VzdG9tX3Byb3RvX2xpc3QpIHsKKyAgICAgICAgLy8gUG9seW1vcnBoaWMgcHJvdG90
eXBlIGFjY2VzcyBjYWNoaW5nIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCB3aGVuIEpJVHRpbmcu
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAvLyBUaGlzIGNhc2Ugb2Yg
dGhlIHN3aXRjaCBtdXN0IG5vdCBiZSBlbXB0eSwgZWxzZSAob3BfZ2V0X2J5X2lkX3Byb3RvX2xp
c3QgPT0gb3BfZ2V0X2J5X2lkX2NoYWluKSEKKyAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Cisg
ICAgfQogICAgIERFRklORV9PUENPREUob3BfZ2V0X2J5X2lkX2NoYWluKSB7CiAgICAgICAgIC8q
IG9wX2dldF9ieV9pZF9jaGFpbiBkc3QocikgYmFzZShyKSBwcm9wZXJ0eShpZCkgc3RydWN0dXJl
KHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIGNvdW50KG4pIG9mZnNldChuKQogCkBAIC0yMzI0
LDYgKzI0MTcsNDMgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0
aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICNpZiBIQVZFKENPTVBVVEVE
X0dPVE8pCiAgICAgc2tpcF9pZF9nZXR0ZXJfc2VsZjoKICNlbmRpZgorI2lmIEhBVkUoQ09NUFVU
RURfR09UTykKKyAgICBnb3RvICooJiZza2lwX2lkX2N1c3RvbV9zZWxmKTsKKyNlbmRpZgorICAg
IERFRklORV9PUENPREUob3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmKSB7CisgICAgICAgIC8qIG9w
X2dldF9ieV9pZF9jdXN0b21fc2VsZiBkc3QocikgYmFzZShyKSBwcm9wZXJ0eShpZCkgc3RydWN0
dXJlKHNJRCkgb2Zmc2V0KG4pIG5vcChuKSBub3AobikKKyAgICAgICAgIAorICAgICAgICAgQ2Fj
aGVkIHByb3BlcnR5IGFjY2VzczogQXR0ZW1wdHMgdG8gZ2V0IGEgY2FjaGVkIHByb3BlcnR5IGZy
b20gdGhlCisgICAgICAgICB2YWx1ZSBiYXNlLiBJZiB0aGUgY2FjaGUgbWlzc2VzLCBvcF9nZXRf
YnlfaWRfZ2V0dGVyX3NlbGYgcmV2ZXJ0cyB0bworICAgICAgICAgb3BfZ2V0X2J5X2lkLgorICAg
ICAgICAgKi8KKyAgICAgICAgaW50IGJhc2UgPSB2UENbMl0udS5vcGVyYW5kOworICAgICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IGNhbGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCk7CisgICAgICAg
IAorICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgICAg
IEpTQ2VsbCogYmFzZUNlbGwgPSBhc0NlbGwoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VDZWxsLT5pc09iamVjdCgpKTsKKyAgICAgICAg
ICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpbnQg
cHJvcGVydHkgPSB2UENbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisK
KyAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXIgPSB2UENb
NV0udS5nZXR0ZXJGdW5jOworICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0dGVy
KGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTigpOworICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0
OworICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZF9jdXN0
b21fc2VsZik7CisgICAgICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHVuY2FjaGVHZXRCeUlEKGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCksIHZQQyk7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CisjaWYgSEFW
RShDT01QVVRFRF9HT1RPKQorc2tpcF9pZF9jdXN0b21fc2VsZjoKKyNlbmRpZgogICAgIERFRklO
RV9PUENPREUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpIHsKICAgICAgICAgLyogb3BfZ2V0X2J5X2lk
X2dlbmVyaWMgZHN0KHIpIGJhc2UocikgcHJvcGVydHkoaWQpIG5vcChzSUQpIG5vcChuKSBub3Ao
bikgbm9wKG4pCiAKQEAgLTIzOTksNiArMjUyOSw1OCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aQogI2lmIEhBVkUoQ09NUFVURURfR09UTykKICAgICBza2lwX2lkX2dldHRlcl9jaGFpbjoKICNl
bmRpZgorI2lmIEhBVkUoQ09NUFVURURfR09UTykKKyAgICBnb3RvICooJiZza2lwX2lkX2N1c3Rv
bV9jaGFpbik7CisjZW5kaWYKKyAgICBERUZJTkVfT1BDT0RFKG9wX2dldF9ieV9pZF9jdXN0b21f
Y2hhaW4pIHsKKyAgICAgICAgLyogb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbiBkc3QocikgYmFz
ZShyKSBwcm9wZXJ0eShpZCkgc3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIGNv
dW50KG4pIG9mZnNldChuKQorICAgICAgICAgCisgICAgICAgICBDYWNoZWQgcHJvcGVydHkgYWNj
ZXNzOiBBdHRlbXB0cyB0byB1c2UgYSBjYWNoZWQgZ2V0dGVyIGZ1bmN0aW9uIG9uIHRoZQorICAg
ICAgICAgdmFsdWUgYmFzZSdzIHByb3RvdHlwZSBjaGFpbi4gSWYgdGhlIGNhY2hlIG1pc3Nlcywg
b3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbgorICAgICAgICAgcmV2ZXJ0cyB0byBvcF9nZXRfYnlf
aWQuCisgICAgICAgICAqLworICAgICAgICBpbnQgYmFzZSA9IHZQQ1syXS51Lm9wZXJhbmQ7Cisg
ICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkgeworICAg
ICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGFzQ2VsbChiYXNlVmFsdWUpOworICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVjdHVyZSgpID09IHN0cnVj
dHVyZSkpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0u
dS5zdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOworICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9
IHZQQ1s2XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGVu
ZCA9IGl0ICsgY291bnQ7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgd2hpbGUg
KHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09i
amVjdChiYXNlQ2VsbC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSAhPSAoKml0KS5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIGlmICgrK2l0ID09IGVuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdCA9
IHZQQ1sxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJvcGVydHkg
PSB2UENbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyID0gdlBDWzddLnUuZ2V0dGVyRnVuYzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0dGVyKGNhbGxGcmFtZSwgYmFzZU9i
amVjdCwgaWRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
TigpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7
CisgICAgICAgICAgICAgICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlf
aWRfY3VzdG9tX2NoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJ
T04oKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVXBkYXRlIGJhc2VDZWxsLCBzbyB0aGF0IG5leHQgdGltZSBhcm91
bmQgdGhlIGxvb3Agd2UnbGwgcGljayB1cCB0aGUgcHJvdG90eXBlJ3MgcHJvdG90eXBlLgorICAg
ICAgICAgICAgICAgICAgICBiYXNlQ2VsbCA9IGJhc2VPYmplY3Q7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHVuY2FjaGVHZXRCeUlEKGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCksIHZQQyk7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAg
ICB9CisjaWYgSEFWRShDT01QVVRFRF9HT1RPKQorICAgIHNraXBfaWRfY3VzdG9tX2NoYWluOgor
I2VuZGlmCiAgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYXJyYXlfbGVuZ3RoKSB7CiAgICAgICAg
IC8qIG9wX2dldF9hcnJheV9sZW5ndGggZHN0KHIpIGJhc2UocikgcHJvcGVydHkoaWQpIG5vcChz
SUQpIG5vcChuKSBub3Aobikgbm9wKG4pCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNzhjNTE1My4uYjQx
NDEwMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMyNyw2ICszMjcsMTEgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9nZXR0ZXJfcHJv
dG9fbGlzdDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmX2xpc3Q6CisgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY3VzdG9tX3By
b3RvOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG9fbGlzdDoKKyAgICAg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5
X2lkX2N1c3RvbV9zZWxmX2xpc3Q6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3N0cmluZ19sZW5ndGg6
CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3JlcGxhY2U6CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMzdjOTViOS4uODdkZDQ4NSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aApAQCAtMjgzLDMyICsyODMsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gSklUKGdsb2JhbERhdGEsIGNvZGVCbG9jaykucHJpdmF0ZUNvbXBpbGUoKTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBib29sIGlzR2V0dGVyLCBzaXplX3QgY2FjaGVkT2Zm
c2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKLSAgICAgICAg
ICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGlzR2V0dGVyLCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3Ms
IGNhbGxGcmFtZSk7CisgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8o
c3R1YkluZm8sIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpZGVudCwgc2xvdCwgY2Fj
aGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxmTGlzdChKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgYm9vbCBpc0dldHRlciwgc2l6
ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxm
TGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCog
cG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
c2l6ZV90IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9i
YWxEYXRhLCBjb2RlQmxvY2spOwotICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KHN0dWJJbmZvLCBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGN1cnJlbnRJbmRleCwg
c3RydWN0dXJlLCBpc0dldHRlciwgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgICAgIGppdC5wcml2
YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChzdHViSW5mbywgcG9seW1vcnBoaWNTdHJ1Y3R1cmVz
LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCk7CiAg
ICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQcm90b0xpc3QoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGJvb2wg
aXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBp
bGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlz
dCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBK
SVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBqaXQucHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG9MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBj
dXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpc0dldHRlciwgY2Fj
aGVkT2Zmc2V0LCBjYWxsRnJhbWUpOworICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvTGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudElu
ZGV4LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9m
ZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxl
R2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3Qs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4sIHNpemVfdCBjb3VudCwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCkK
KyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJs
b2NrKTsKLSAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1
YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBj
aGFpbiwgY291bnQsIGlzR2V0dGVyLCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CisgICAgICAg
ICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KHN0dWJJbmZvLCBwcm90b3R5
cGVTdHJ1Y3R1cmVMaXN0LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBp
ZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBzaXplX3QgY291bnQsIGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKKyAgICAgICAgc3RhdGljIHZvaWQgY29t
cGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwotICAgICAg
ICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKHN0dWJJbmZvLCBzdHJ1Y3R1cmUs
IGNoYWluLCBjb3VudCwgaXNHZXR0ZXIsIGNhY2hlZE9mZnNldCwgcmV0dXJuQWRkcmVzcywgY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihzdHVi
SW5mbywgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQs
IHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90
IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCkBAIC0zNTQsMTEgKzM1NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZUxpbmtQYXNzKCk7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKTsKICAgICAgICAgSklUQ29kZSBwcml2YXRlQ29tcGlsZSgpOwotICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGJvb2wgaXNHZXR0ZXIs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNl
bGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KiwgaW50LCBTdHJ1Y3R1cmUqLCBib29sIGlzR2V0dGVyLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsK
LSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1
YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSos
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBib29sIGlzR2V0dGVyLCBzaXplX3QgY2Fj
aGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4s
IHNpemVfdCBjb3VudCwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
KFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3Qg
Y291bnQsIGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29t
cGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIHByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CiAgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVy
ZSosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKIAogICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFi
bGVQb29sLCBKU0dsb2JhbERhdGEqIGRhdGEsIFRyYW1wb2xpbmVTdHJ1Y3R1cmUgKnRyYW1wb2xp
bmVzKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDhmMWRk
YmIuLjMzOTlmMDMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtNjk2LDcgKzY5Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlM
ZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3Bf
Z2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBib29sIGlzR2V0dGVyLCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIFRoZSBwcm90b3R5cGUgb2Jq
ZWN0IGRlZmluaXRlbHkgZXhpc3RzIChpZiB0aGlzIHN0dWIgZXhpc3RzIHRoZSBDb2RlQmxvY2sg
aXMgcmVmZXJlbmNpbmcgYSBTdHJ1Y3R1cmUgdGhhdCBpcwogICAgIC8vIHJlZmVyZW5jaW5nIHRo
ZSBwcm90b3R5cGUgb2JqZWN0IC0gbGV0J3Mgc3BlY3VsYXRpdmVseSBsb2FkIGl0J3MgdGFibGUg
bmljZSBhbmQgZWFybHkhKQpAQCAtNzE0LDE0ICs3MTQsMjUgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHIKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFic29s
dXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgSW1tUHRyKHByb3RvdHlwZVN0
cnVjdHVyZSkpOwogI2VuZGlmCiAKKyAgICBib29sIG5lZWRzU3R1YkxpbmsgPSBmYWxzZTsKKyAg
ICAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhCi0gICAgaWYgKGlzR2V0dGVyKSB7CisgICAgaWYg
KHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKKyAg
ICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMSwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CiAg
ICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKICAgICAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQocmVnVDApOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1
YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAg
IHN0dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBl
KCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRy
dWU7CisgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRf
Y3VzdG9tX3N0dWIpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIocHJvdG9P
YmplY3QpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKEZ1bmN0aW9uUHRy
KHNsb3QuY3VzdG9tR2V0dGVyKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKGNvbnN0X2Nhc3Q8SWRlbnRpZmllcio+KCZpZGVudCkp
KTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0
dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBzdHViQ2FsbC5jYWxs
KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmpl
Y3QsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1w
KCk7CkBAIC03MzUsNyArNzQ2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKICAgICAvLyBP
biBzdWNjZXNzIHJldHVybiBiYWNrIHRvIHRoZSBob3QgcGF0Y2ggY29kZSwgYXQgYSBwb2ludCBp
dCB3aWxsIHBlcmZvcm0gdGhlIHN0b3JlIHRvIGRlc3QgZm9yIHVzLgogICAgIHBhdGNoQnVmZmVy
Lmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHBhdGNo
T2Zmc2V0R2V0QnlJZFB1dFJlc3VsdCkpOwogCi0gICAgaWYgKGlzR2V0dGVyKSB7CisgICAgaWYg
KG5lZWRzU3R1YkxpbmspIHsKICAgICAgICAgZm9yIChWZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV9jYWxscy5lbmQoKTsgKytpdGVy
KSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+dG8pCiAgICAgICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0cihpdGVyLT50bykpOwpAQCAtNzU0LDEwICs3
NjUsMTIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKICAgICByZXBhdGNoQnVmZmVyLnJlbGlu
a0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9i
eV9pZF9wcm90b19saXN0KSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRT
ZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3Zv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCkKIHsKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0
cnVjdHVyZSk7Ci0gICAgaWYgKGlzR2V0dGVyKSB7CisgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0g
ZmFsc2U7CisgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90
OjpHZXR0ZXIpIHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIGlmICgh
c3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CiAgICAgICAgICAgICBtb3ZlKHJl
Z1QwLCByZWdUMSk7CiAgICAgICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QxLCBy
ZWdUMSwgc3RydWN0dXJlLCBjYWNoZWRPZmZzZXQpOwpAQCAtNzY4LDEzICs3ODEsMjEgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaWMKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDAp
OwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1
cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwo
KTsKKyAgICB9IGVsc2UgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlT
bG90OjpDdXN0b20pIHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CisgICAgICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOwor
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CisgICAgICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KEltbVB0cihGdW5jdGlvblB0cihzbG90LmN1c3RvbUdldHRlcigpKS5leGVjdXRh
YmxlQWRkcmVzcygpKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihjb25z
dF9jYXN0PElkZW50aWZpZXIqPigmaWRlbnQpKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KEltbVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuY2FsbCgpOwogICAgIH0gZWxzZQogICAgICAgICBjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QwLCByZWdUMCwgc3RydWN0dXJlLCBjYWNoZWRPZmZzZXQp
OwogICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIodGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOwogCi0gICAgaWYgKGlzR2V0
dGVyKSB7CisgICAgaWYgKG5lZWRzU3R1YkxpbmspIHsKICAgICAgICAgZm9yIChWZWN0b3I8Q2Fs
bFJlY29yZD46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV9jYWxs
cy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+dG8pCiAgICAgICAgICAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0cihpdGVyLT50bykp
OwpAQCAtODAyLDcgKzgyMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBlbnRyeUxhYmVsKTsKIH0KIAotdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywg
aW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBib29sIGlzR2V0dGVyLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qo
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5p
dGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVu
Y2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlw
ZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBl
YXJseSEpCkBAIC04MjEsMTMgKzg0MiwyMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogI2Vu
ZGlmCiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhCi0gICAgaWYgKGlzR2V0dGVyKSB7CisgICAg
Ym9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CisgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlU
eXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9
IHRydWU7CiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1Qx
LCByZWdUMSwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KHJlZ1QxKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwogICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2Nh
dGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAg
ICB9IGVsc2UgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpD
dXN0b20pIHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CisgICAgICAgIEpJVFN0dWJD
YWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOworICAgICAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIocHJvdG9PYmplY3QpKTsKKyAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9tR2V0dGVyKCkp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1t
UHRyKGNvbnN0X2Nhc3Q8SWRlbnRpZmllcio+KCZpZGVudCkpKTsKKyAgICAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOworICAgICAgICBzdHViQ2FsbC5jYWxsKCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMCwgY2Fj
aGVkT2Zmc2V0KTsKIApAQCAtODM1LDcgKzg2Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRh
YmxlUG9vbCgpKTsKIAotICAgIGlmIChpc0dldHRlcikgeworICAgIGlmIChuZWVkc1N0dWJMaW5r
KSB7CiAgICAgICAgIGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBpdGVyID0gbV9j
YWxscy5iZWdpbigpOyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgewogICAgICAgICAg
ICAgaWYgKGl0ZXItPnRvKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaXRlci0+
ZnJvbSwgRnVuY3Rpb25QdHIoaXRlci0+dG8pKTsKQEAgLTg2Miw3ICs4OTMsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgUG9seW1vcnBoaQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwg
ZW50cnlMYWJlbCk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgYm9vbCBpc0dl
dHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVz
LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIEFTU0VSVChjb3VudCk7CiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsKQEAg
LTg4OSwyMCArOTIwLDMwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgfQogICAgIEFT
U0VSVChwcm90b09iamVjdCk7CiAgICAgCi0gICAgaWYgKGlzR2V0dGVyKSB7CisgICAgYm9vbCBu
ZWVkc1N0dWJMaW5rID0gZmFsc2U7CisgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkg
PT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7
CiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdU
MSwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KHJlZ1QxKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwogICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVs
c2UgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20p
IHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CisgICAgICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOworICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChJbW1QdHIocHJvdG9PYmplY3QpKTsKKyAgICAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoSW1tUHRyKEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9tR2V0dGVyKCkpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKGNv
bnN0X2Nhc3Q8SWRlbnRpZmllcio+KCZpZGVudCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOworICAgICAgICBzdHViQ2FsbC5jYWxsKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNv
bXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zm
c2V0KTsKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKICAgICAKLSAgICBp
ZiAoaXNHZXR0ZXIpIHsKKyAgICBpZiAobmVlZHNTdHViTGluaykgewogICAgICAgICBmb3IgKFZl
Y3RvcjxDYWxsUmVjb3JkPjo6aXRlcmF0b3IgaXRlciA9IG1fY2FsbHMuYmVnaW4oKTsgaXRlciAh
PSBtX2NhbGxzLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChpdGVyLT50bykKICAg
ICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXItPmZyb20sIEZ1bmN0aW9uUHRyKGl0
ZXItPnRvKSk7CkBAIC05MzAsNyArOTcxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKICAg
ICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIGVudHJ5TGFiZWwpOwogfQogCi12
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXpl
X3QgY291bnQsIGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKIApAQCAtOTU2LDIxICs5OTcsMzEgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHIKICNlbmRpZgogICAgIH0KICAgICBBU1NFUlQocHJvdG9P
YmplY3QpOwotICAgIAotICAgIGlmIChpc0dldHRlcikgeworCisgICAgYm9vbCBuZWVkc1N0dWJM
aW5rID0gZmFsc2U7CisgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpHZXR0ZXIpIHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAg
IGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMSwgY2FjaGVk
T2Zmc2V0KTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9i
eV9pZF9nZXR0ZXJfc3R1Yik7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsK
ICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwogICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UgaWYgKHNs
b3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKKyAgICAg
ICAgbmVlZHNTdHViTGluayA9IHRydWU7CisgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOworICAgICAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChJbW1QdHIocHJvdG9PYmplY3QpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoSW1tUHRyKEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9tR2V0dGVyKCkpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKGNvbnN0X2Nhc3Q8
SWRlbnRpZmllcio+KCZpZGVudCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1t
UHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwor
ICAgICAgICBzdHViQ2FsbC5jYWxsKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKICAg
ICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRo
aXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKIAotICAgIGlmIChpc0dldHRlcikg
eworICAgIGlmIChuZWVkc1N0dWJMaW5rKSB7CiAgICAgICAgIGZvciAoVmVjdG9yPENhbGxSZWNv
cmQ+OjppdGVyYXRvciBpdGVyID0gbV9jYWxscy5iZWdpbigpOyBpdGVyICE9IG1fY2FsbHMuZW5k
KCk7ICsraXRlcikgewogICAgICAgICAgICAgaWYgKGl0ZXItPnRvKQogICAgICAgICAgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsoaXRlci0+ZnJvbSwgRnVuY3Rpb25QdHIoaXRlci0+dG8pKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBi
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBkMWJi
NDQ5Li5lYzMzMDI2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCkBAIC03MTgsNyArNzE4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0
Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9u
UHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGJvb2wgaXNHZXR0
ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJv
dG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAg
aG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03MzYsMTUgKzczNiwyNCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cgogI2Vsc2UKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90
RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgSW1tUHRy
KHByb3RvdHlwZVN0cnVjdHVyZSkpOwogI2VuZGlmCi0gICAgCisgICAgYm9vbCBuZWVkc1N0dWJM
aW5rID0gZmFsc2U7CiAgICAgLy8gQ2hlY2tzIG91dCBva2F5IQotICAgIGlmIChpc0dldHRlcikg
eworICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6R2V0
dGVyKSB7CisgICAgICAgIG5lZWRzU3R1YkxpbmsgPSB0cnVlOwogICAgICAgICBjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdUMiwgcmVnVDIsIHJlZ1QxLCBjYWNoZWRPZmZz
ZXQpOwogICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lk
X2dldHRlcl9zdHViKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwogICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KEltbVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbCgpOworICAgIH0gZWxzZSBpZiAoc2xvdC5j
YWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbSkgeworICAgICAgICBu
ZWVkc1N0dWJMaW5rID0gdHJ1ZTsKKyAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wX2dldF9ieV9pZF9jdXN0b21fc3R1Yik7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KEltbVB0cihwcm90b09iamVjdCkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJ
bW1QdHIoRnVuY3Rpb25QdHIoc2xvdC5jdXN0b21HZXR0ZXIoKSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoY29uc3RfY2FzdDxJZGVu
dGlmaWVyKj4oJmlkZW50KSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIo
c3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAg
ICAgIHN0dWJDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UKICAgICAgICAgY29tcGlsZUdldERpcmVj
dE9mZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsK
ICAgICAKQEAgLTc2MCw3ICs3NjksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIC8v
IE9uIHN1Y2Nlc3MgcmV0dXJuIGJhY2sgdG8gdGhlIGhvdCBwYXRjaCBjb2RlLCBhdCBhIHBvaW50
IGl0IHdpbGwgcGVyZm9ybSB0aGUgc3RvcmUgdG8gZGVzdCBmb3IgdXMuCiAgICAgcGF0Y2hCdWZm
ZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQocGF0
Y2hPZmZzZXRHZXRCeUlkUHV0UmVzdWx0KSk7CiAKLSAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICBp
ZiAobmVlZHNTdHViTGluaykgewogICAgICAgICBmb3IgKFZlY3RvcjxDYWxsUmVjb3JkPjo6aXRl
cmF0b3IgaXRlciA9IG1fY2FsbHMuYmVnaW4oKTsgaXRlciAhPSBtX2NhbGxzLmVuZCgpOyArK2l0
ZXIpIHsKICAgICAgICAgICAgIGlmIChpdGVyLT50bykKICAgICAgICAgICAgICAgICBwYXRjaEJ1
ZmZlci5saW5rKGl0ZXItPmZyb20sIEZ1bmN0aW9uUHRyKGl0ZXItPnRvKSk7CkBAIC03ODEsMTEg
Kzc5MCwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogfQogCiAKLXZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQg
Y3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgYm9vbCBpc0dldHRlciwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7
Ci0gICAgaWYgKGlzR2V0dGVyKSB7CisgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7Cisg
ICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0ZXIp
IHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIGlmICghc3RydWN0dXJl
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CiAgICAgICAgICAgICBtb3ZlKHJlZ1QwLCByZWdU
MSk7CiAgICAgICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QxLCByZWdUMiwgcmVn
VDEsIHN0cnVjdHVyZSwgY2FjaGVkT2Zmc2V0KTsKQEAgLTc5NiwxMyArODA3LDIxIEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFBvbHltb3JwaGljCiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsK
ICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJu
TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKCk7
CisgICAgfSBlbHNlIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xv
dDo6Q3VzdG9tKSB7CisgICAgICAgIG5lZWRzU3R1YkxpbmsgPSB0cnVlOworICAgICAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zdHViKTsKKyAg
ICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOworICAgICAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChJbW1QdHIoRnVuY3Rpb25QdHIoc2xvdC5jdXN0b21HZXR0ZXIoKSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoY29uc3Rf
Y2FzdDxJZGVudGlmaWVyKj4oJmlkZW50KSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
KSk7CisgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UKICAgICAgICAgY29tcGls
ZUdldERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDEsIHJlZ1QwLCBzdHJ1Y3R1cmUsIGNhY2hlZE9m
ZnNldCk7CiAKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAgICAgCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBvb2woKSk7Ci0gICAg
aWYgKGlzR2V0dGVyKSB7CisgICAgaWYgKG5lZWRzU3R1YkxpbmspIHsKICAgICAgICAgZm9yIChW
ZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIg
IT0gbV9jYWxscy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+dG8pCiAg
ICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0cihp
dGVyLT50bykpOwpAQCAtODI5LDcgKzg0OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljCiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBlbnRyeUxhYmVsKTsKIH0KIAot
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3Ry
dWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBib29sIGlzR2V0dGVyLCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0Nl
bGwqCiAgICAgCkBAIC04NDksMjAgKzg2OCwzMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQog
ICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRy
ZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIocHJvdG90eXBlU3RydWN0dXJl
KSk7CiAjZW5kaWYKICAgICAKLSAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICBib29sIG5lZWRzU3R1
YkxpbmsgPSBmYWxzZTsKKyAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9w
ZXJ0eVNsb3Q6OkdldHRlcikgeworICAgICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsKICAgICAg
ICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QyLCByZWdU
MSwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KHJlZ1QxKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwogICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVs
c2UgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20p
IHsKKyAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CisgICAgICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOworICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChJbW1QdHIocHJvdG9PYmplY3QpKTsKKyAgICAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoSW1tUHRyKEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9tR2V0dGVyKCkpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tUHRyKGNv
bnN0X2Nhc3Q8SWRlbnRpZmllcio+KCZpZGVudCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOworICAgICAgICBzdHViQ2FsbC5jYWxsKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNv
bXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QyLCByZWdUMSwgcmVnVDAsIGNh
Y2hlZE9mZnNldCk7CiAgICAgCiAgICAgSnVtcCBzdWNjZXNzID0ganVtcCgpOwogICAgIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29s
KCkpOwotICAgIGlmIChpc0dldHRlcikgeworICAgIGlmIChuZWVkc1N0dWJMaW5rKSB7CiAgICAg
ICAgIGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBpdGVyID0gbV9jYWxscy5iZWdp
bigpOyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgewogICAgICAgICAgICAgaWYgKGl0
ZXItPnRvKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaXRlci0+ZnJvbSwgRnVu
Y3Rpb25QdHIoaXRlci0+dG8pKTsKQEAgLTg4OCw3ICs5MTcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgZW50cnlMYWJl
bCk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBy
b3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgYm9vbCBpc0dldHRlciwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3Vy
cmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEFTU0VSVChjb3VudCk7CkBAIC05MTYsMjAg
Kzk0NSwzMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogICAgIH0KICAgICBBU1NFUlQocHJv
dG9PYmplY3QpOwogICAgIAotICAgIGlmIChpc0dldHRlcikgeworICAgIGJvb2wgbmVlZHNTdHVi
TGluayA9IGZhbHNlOworICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3Bl
cnR5U2xvdDo6R2V0dGVyKSB7CisgICAgICAgIG5lZWRzU3R1YkxpbmsgPSB0cnVlOwogICAgICAg
ICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdUMiwgcmVnVDIsIHJlZ1Qx
LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDEpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CiAgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbCgpOworICAgIH0gZWxz
ZSBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbSkg
eworICAgICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsKKyAgICAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9jdXN0b21fc3R1Yik7CisgICAgICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KEltbVB0cihwcm90b09iamVjdCkpOworICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChJbW1QdHIoRnVuY3Rpb25QdHIoc2xvdC5jdXN0b21HZXR0ZXIoKSkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoY29u
c3RfY2FzdDxJZGVudGlmaWVyKj4oJmlkZW50KSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKSk7CisgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UKICAgICAgICAgY29t
cGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QxLCByZWdUMCwgY2Fj
aGVkT2Zmc2V0KTsKIAogICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsKICAgICAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsK
LSAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICBpZiAobmVlZHNTdHViTGluaykgewogICAgICAgICBm
b3IgKFZlY3RvcjxDYWxsUmVjb3JkPjo6aXRlcmF0b3IgaXRlciA9IG1fY2FsbHMuYmVnaW4oKTsg
aXRlciAhPSBtX2NhbGxzLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChpdGVyLT50
bykKICAgICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXItPmZyb20sIEZ1bmN0aW9u
UHRyKGl0ZXItPnRvKSk7CkBAIC05NTYsNyArOTk1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGkKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIGVudHJ5TGFiZWwpOwog
fQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgQVNT
RVJUKGNvdW50KTsKQEAgLTk4NCwxOSArMTAyMywyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cgogICAgIH0KICAgICBBU1NFUlQocHJvdG9PYmplY3QpOwogICAgIAotICAgIGlmIChpc0dldHRl
cikgeworICAgIGJvb2wgbmVlZHNTdHViTGluayA9IGZhbHNlOworICAgIGlmIChzbG90LmNhY2hl
ZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6R2V0dGVyKSB7CisgICAgICAgIG5lZWRz
U3R1YkxpbmsgPSB0cnVlOwogICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHByb3RvT2Jq
ZWN0LCByZWdUMiwgcmVnVDIsIHJlZ1QxLCBjYWNoZWRPZmZzZXQpOwogICAgICAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKTsKICAgICAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChyZWdUMCk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihzdHViSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgc3R1
YkNhbGwuY2FsbCgpOworICAgIH0gZWxzZSBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9
PSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbSkgeworICAgICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsK
KyAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9jdXN0
b21fc3R1Yik7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihwcm90b09iamVj
dCkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoRnVuY3Rpb25QdHIoc2xv
dC5jdXN0b21HZXR0ZXIoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChJbW1QdHIoY29uc3RfY2FzdDxJZGVudGlmaWVyKj4oJmlkZW50KSkpOwor
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5M
b2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwg
cmVnVDIsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKICAgICBKdW1wIHN1Y2Nlc3MgPSBq
dW1wKCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9j
ay0+ZXhlY3V0YWJsZVBvb2woKSk7Ci0gICAgaWYgKGlzR2V0dGVyKSB7CisgICAgaWYgKG5lZWRz
U3R1YkxpbmspIHsKICAgICAgICAgZm9yIChWZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV9jYWxscy5lbmQoKTsgKytpdGVyKSB7CiAg
ICAgICAgICAgICBpZiAoaXRlci0+dG8pCiAgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0cihpdGVyLT50bykpOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKaW5kZXggOTRjYmRkYi4uZmEzZmMwYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04
NzUsNyArODc1LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5
SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICBpZiAoc2xvdC5zbG90
QmFzZSgpID09IGJhc2VWYWx1ZSkgewogICAgICAgICAvLyBzZXQgdGhpcyB1cCwgc28gZGVyZWZT
dHJ1Y3R1cmVzIGNhbiBkbyBpdCdzIGpvYi4KICAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlk
U2VsZihzdHJ1Y3R1cmUpOwotICAgICAgICBpZiAoc2xvdC5pc0dldHRlcigpKQorICAgICAgICBp
ZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSAhPSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKQogICAg
ICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgcmV0dXJuQWRk
cmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgSklUOjpwYXRjaEdldEJ5SWRTZWxmKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcmV0dXJuQWRkcmVzcyk7CkBAIC05
MDQsNyArOTA0LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5
SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KIAogICAgICAgICBBU1NFUlQo
IXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgICAgICBBU1NFUlQoIXNsb3RCYXNlT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpOwotICAgICAgICBKSVQ6OmNvbXBpbGVH
ZXRCeUlkUHJvdG8oY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNhbGxGcmFt
ZSwgY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBzbG90QmFzZU9iamVjdC0+c3RydWN0
dXJlKCksIHNsb3QuaXNHZXR0ZXIoKSwgb2Zmc2V0LCByZXR1cm5BZGRyZXNzKTsKKyAgICAgICAg
SklUOjpjb21waWxlR2V0QnlJZFByb3RvKGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxE
YXRhLCBjYWxsRnJhbWUsIGNvZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdEJhc2VP
YmplY3QtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIG9mZnNldCwgcmV0dXJuQWRk
cmVzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkxNyw3ICs5MTcsNyBAQCBORVZF
Ul9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjbwogCiAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWlu
ID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpOwogICAgIHN0dWJJbmZvLT5p
bml0R2V0QnlJZENoYWluKHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hhaW4pOwotICAgIEpJVDo6Y29t
cGlsZUdldEJ5SWRDaGFpbihjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2Fs
bEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLCBj
b3VudCwgc2xvdC5pc0dldHRlcigpLCBvZmZzZXQsIHJldHVybkFkZHJlc3MpOworICAgIEpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbihjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwg
Y2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWlu
LCBjb3VudCwgcHJvcGVydHlOYW1lLCBzbG90LCBvZmZzZXQsIHJldHVybkFkZHJlc3MpOwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVF9PUFRJTUlaRV9QUk9QRVJUWV9BQ0NFU1MpCkBAIC0xMzk5
LDcgKzEzOTksNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0
X2J5X2lkX3NlbGZfZmFpbCkKICAgICAgICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRTZWxmTGlz
dC5saXN0U2l6ZSsrOwogICAgICAgICB9CiAKLSAgICAgICAgSklUOjpjb21waWxlR2V0QnlJZFNl
bGZMaXN0KGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLCBwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QsIGxpc3RJbmRleCwgYXNDZWxsKGJhc2VW
YWx1ZSktPnN0cnVjdHVyZSgpLCBzbG90LmlzR2V0dGVyKCksIHNsb3QuY2FjaGVkT2Zmc2V0KCkp
OworICAgICAgICBKSVQ6OmNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoY2FsbEZyYW1lLT5zY29wZUNo
YWluKCktPmdsb2JhbERhdGEsIGNvZGVCbG9jaywgc3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0
dXJlTGlzdCwgbGlzdEluZGV4LCBhc0NlbGwoYmFzZVZhbHVlKS0+c3RydWN0dXJlKCksIGlkZW50
LCBzbG90LCBzbG90LmNhY2hlZE9mZnNldCgpKTsKIAogICAgICAgICBpZiAobGlzdEluZGV4ID09
IChQT0xZTU9SUEhJQ19MSVNUX0NBQ0hFX1NJWkUgLSAxKSkKICAgICAgICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJpYykpOwpAQCAtMTQ1NCw2ICsxNDU0LDIwIEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfZ2V0dGVy
X3N0dWIpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX2N1c3RvbV9zdHViKQor
eworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIEpTT2JqZWN0KiBzbG90QmFz
ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc09iamVjdCgpOworICAgIFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jIGdldHRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KHN0YWNrRnJhbWUuYXJnc1sxXS5hc1BvaW50ZXIpOworICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gc3RhY2tGcmFtZS5hcmdzWzJdLmlkZW50aWZpZXIoKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IGdldHRlcihjYWxsRnJhbWUsIHNsb3RCYXNlLCBpZGVudCk7CisgICAgaWYgKGNh
bGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVyblRvVGhyb3dUcmFtcG9saW5l
KCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgc3RhY2tGcmFtZS5hcmdzWzNdLnJldHVybkFkZHJl
c3MoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CisgICAgCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwpAQCAtMTQ5NSw3ICsxNTA5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9wcm90b19saXN0KQogICAgICAgICBpbnQgbGlzdElu
ZGV4OwogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KHN0dWJJ
bmZvLCBsaXN0SW5kZXgpOwogCi0gICAgICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRQcm90b0xpc3Qo
Y2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2Nr
LCBzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgbGlzdEluZGV4LCBzdHJ1Y3R1cmUs
IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgc2xvdC5pc0dldHRlcigpLCBvZmZzZXQpOwor
ICAgICAgICBKSVQ6OmNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KGNhbGxGcmFtZS0+c2NvcGVDaGFp
bigpLT5nbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGNvZGVCbG9jaywgc3R1YkluZm8sIHByb3RvdHlw
ZVN0cnVjdHVyZUxpc3QsIGxpc3RJbmRleCwgc3RydWN0dXJlLCBzbG90QmFzZU9iamVjdC0+c3Ry
dWN0dXJlKCksIHByb3BlcnR5TmFtZSwgc2xvdCwgb2Zmc2V0KTsKIAogICAgICAgICBpZiAobGlz
dEluZGV4ID09IChQT0xZTU9SUEhJQ19MSVNUX0NBQ0hFX1NJWkUgLSAxKSkKICAgICAgICAgICAg
IGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIFNUVUJfUkVUVVJOX0FERFJF
U1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdF9mdWxsKSk7CkBAIC0x
NTA1LDcgKzE1MTksNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bf
Z2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdFNsb3Qoc3R1YkluZm8sIGxpc3RJbmRleCk7CiAKICAgICAgICAgU3RydWN0dXJlQ2hh
aW4qIHByb3RvQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSk7Ci0g
ICAgICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoY2FsbEZyYW1lLT5zY29wZUNoYWlu
KCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzdHViSW5mbywgcHJvdG90eXBl
U3RydWN0dXJlTGlzdCwgbGlzdEluZGV4LCBzdHJ1Y3R1cmUsIHByb3RvQ2hhaW4sIGNvdW50LCBz
bG90LmlzR2V0dGVyKCksIG9mZnNldCk7CisgICAgICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRDaGFp
bkxpc3QoY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29k
ZUJsb2NrLCBzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgbGlzdEluZGV4LCBzdHJ1
Y3R1cmUsIHByb3RvQ2hhaW4sIGNvdW50LCBwcm9wZXJ0eU5hbWUsIHNsb3QsIG9mZnNldCk7CiAK
ICAgICAgICAgaWYgKGxpc3RJbmRleCA9PSAoUE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpFIC0g
MSkpCiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJsb2NrLCBT
VFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xp
c3RfZnVsbCkpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggYi9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAppbmRleCA3NTFjZDBhLi5jMzNkNmYwIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaApAQCAtMjc3LDYgKzI3Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIEVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJpYyhTVFVCX0FSR1Nf
REVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlf
aWRfbWV0aG9kX2NoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1YihTVFVCX0FSR1NfREVDTEFS
QVRJT04pOworICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfaWRfY3Vz
dG9tX3N0dWIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRf
U1RVQiBjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2ZhaWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsK
ICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3Qo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3RfZnVsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggYjhjYTU5NC4uY2JhNjc5NSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xNjIsMTcgKzE2MiwxNyBAQCBi
b29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TgogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewotICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzLCBhcmd1bWVudHNHZXR0ZXIpOworICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3Rv
bSh0aGlzLCBhcmd1bWVudHNHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsK
LSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbGVuZ3RoR2V0dGVyKTsKKyAgICAgICAgc2xv
dC5zZXRDYWNoZWFibGVDdXN0b20odGhpcywgbGVuZ3RoR2V0dGVyKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuY2FsbGVyKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGNhbGxlckdldHRl
cik7CisgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGNhbGxlckdldHRlcik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5k
ZXggZTY3M2MwOS4uOTk1YWVlZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0xODEsNyAr
MTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pCiAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBl
bnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iaiwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwor
ICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPnByb3Bl
cnR5R2V0dGVyKCkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI1OCw3ICsy
NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pKTsKIAotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqLCBl
bnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CisgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9t
KHRoaXNPYmosIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBhOWQ1YjBh
Li5kZTlkZGM5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTM5LDcg
KzM5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlTbG90IHsKICAg
ICBwdWJsaWM6CisgICAgICAgIGVudW0gQ2FjaGVkUHJvcGVydHlUeXBlIHsKKyAgICAgICAgICAg
IFVuY2FjaGVhYmxlLAorICAgICAgICAgICAgR2V0dGVyLAorICAgICAgICAgICAgQ3VzdG9tLAor
ICAgICAgICAgICAgVmFsdWUKKyAgICAgICAgfTsKKwogICAgICAgICBQcm9wZXJ0eVNsb3QoKQor
ICAgICAgICAgICAgOiBtX2NhY2hlZFByb3BlcnR5VHlwZShVbmNhY2hlYWJsZSkKICAgICAgICAg
ewogICAgICAgICAgICAgY2xlYXJCYXNlKCk7CiAgICAgICAgICAgICBjbGVhck9mZnNldCgpOwpA
QCAtNDgsNiArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBleHBsaWNpdCBQcm9w
ZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSBiYXNlKQogICAgICAgICAgICAgOiBtX3Nsb3RCYXNlKGJh
c2UpCisgICAgICAgICAgICAsIG1fY2FjaGVkUHJvcGVydHlUeXBlKFVuY2FjaGVhYmxlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBjbGVhck9mZnNldCgpOwogICAgICAgICAgICAgY2xlYXJWYWx1
ZSgpOwpAQCAtODIsOSArOTEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBtX2dldFZhbHVlKGV4ZWMsIHNsb3RCYXNlKCksIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJv
cGVydHlOYW1lKSk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzR2V0dGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0dldHRlcjsgfQotICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NhY2hlYWJsZTsgfQotICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX2lzQ2FjaGVhYmxlICYmICFtX2lzR2V0dGVyOyB9CisgICAgICAg
IENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFByb3BlcnR5VHlwZTsgfQorICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAgICAgICAg
Ym9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5
cGUgPT0gVmFsdWU7IH0KICAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKQEAgLTExNSw4ICsxMjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsK
ICAgICAgICAgICAgIG1fZGF0YS52YWx1ZVNsb3QgPSB2YWx1ZVNsb3Q7CiAgICAgICAgICAgICBt
X29mZnNldCA9IG9mZnNldDsKLSAgICAgICAgICAgIG1faXNDYWNoZWFibGUgPSB0cnVlOwotICAg
ICAgICAgICAgbV9pc0dldHRlciA9IGZhbHNlOworICAgICAgICAgICAgbV9jYWNoZWRQcm9wZXJ0
eVR5cGUgPSBWYWx1ZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRWYWx1
ZShKU1ZhbHVlIHZhbHVlKQpAQCAtMTQ2LDYgKzE1NCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIG1fZ2V0SW5kZXhWYWx1ZSA9IDA7CiAgICAgICAgICAgICBtX3Nsb3RCYXNlID0g
c2xvdEJhc2U7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxl
Q3VzdG9tKEpTVmFsdWUgc2xvdEJhc2UsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKHNsb3RCYXNlKTsKKyAgICAgICAgICAgIEFTU0VSVChnZXRW
YWx1ZSk7CisgICAgICAgICAgICBtX2dldFZhbHVlID0gZ2V0VmFsdWU7CisgICAgICAgICAgICBt
X2dldEluZGV4VmFsdWUgPSAwOworICAgICAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwor
ICAgICAgICAgICAgbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPSBDdXN0b207CisgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIHNldEN1c3RvbUluZGV4KEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGlu
ZGV4LCBHZXRJbmRleFZhbHVlRnVuYyBnZXRJbmRleFZhbHVlKQogICAgICAgICB7CkBAIC0xNjMs
NyArMTgxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX3RoaXNWYWx1ZSA9IG1f
c2xvdEJhc2U7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktF
UjsKICAgICAgICAgICAgIG1fZGF0YS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsKLSAgICAgICAg
ICAgIG1faXNHZXR0ZXIgPSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzZXRDYWNo
ZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1
bnNpZ25lZCBvZmZzZXQpCkBAIC0xNzQsOCArMTkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7CiAgICAgICAgICAgICBtX2RhdGEuZ2V0dGVy
RnVuYyA9IGdldHRlckZ1bmM7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKLSAgICAg
ICAgICAgIG1faXNDYWNoZWFibGUgPSB0cnVlOwotICAgICAgICAgICAgbV9pc0dldHRlciA9IHRy
dWU7CisgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IEdldHRlcjsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkKQEAgLTIxNCwxMyArMjMwLDE4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFz
ZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUu
CiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0
byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3Jp
dGUgdGhlbS4pCiAgICAgICAgICAgICBtX29mZnNldCA9IDA7Ci0gICAgICAgICAgICBtX2lzQ2Fj
aGVhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2lzR2V0dGVyID0gZmFsc2U7CisgICAgICAg
ICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwogICAgICAgICB9CiAKICAg
ICAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaW5kZXg7IH0KIAog
ICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpc1ZhbHVlOyB9
CisKKyAgICAgICAgR2V0VmFsdWVGdW5jIGN1c3RvbUdldHRlcigpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBDdXN0b20pOworICAg
ICAgICAgICAgcmV0dXJuIG1fZ2V0VmFsdWU7CisgICAgICAgIH0KICAgICBwcml2YXRlOgogICAg
ICAgICBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogCkBAIC0yMzks
OCArMjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV90aGlzVmFsdWU7
CiAKICAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OwotICAgICAgICBib29sIG1faXNDYWNoZWFibGUg
OiAxOwotICAgICAgICBib29sIG1faXNHZXR0ZXIgOiAxOworICAgICAgICBDYWNoZWRQcm9wZXJ0
eVR5cGUgbV9jYWNoZWRQcm9wZXJ0eVR5cGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZWI4NWUzNC4uMWU5Y2MxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAz
LTAzICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgc3RhdGljIHByb3BlcnR5IGdldHRl
cnMgdG8gaW50ZXJhY3Qgd2l0aCBKU0NzIGNhY2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NzE2CisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVu
c3VyZSBub3RoaW5nIGhvcnJpZnlpbmcgaGFwcGVucyB0byBzdGF0aWMgcHJvcGVydHkKKyAgICAg
ICAgZ2V0dGVycyBpZiB0aGV5J3JlIGluIGEgcGF0aCB3aGVyZSB3ZSBlbmQgdXAgY2FjaGluZyBs
b29rdXBzLgorCisgICAgICAgICogZmFzdC9qcy9waWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5LWdl
dHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcGljL2NhY2hlZC1u
YW1lZC1wcm9wZXJ0eS1nZXR0ZXIuaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMDMgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9waWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5LWdl
dHRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3BpYy9jYWNoZWQtbmFtZWQt
cHJvcGVydHktZ2V0dGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yNjFiNjA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9w
aWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5LWdldHRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MiBAQAorVGhpcyBwYWdlIHRlc3RzIGNhY2hlZCBhY2Nlc3MgdG8gZ2V0dGVycyBhbmQgc2V0dGVy
cy4gSWYgdGhlIHRlc3QgcGFzc2VzLCB5b3UnbGwgc2VlIGEgc2VyaWVzIG9mIFBBU1MgbWVzc2Fn
ZXMgYmVsb3cuCisKK1BBU1M6IHRlc3RHZXR0ZXIoe19fcHJvdG9fXzoge2NvdW50OiAnRkFJTCd9
LCBnZXQgbGVuZ3RoKCl7IHJldHVybiB0aGlzLmNvdW50OyB9LCBjb3VudDogN30pIHNob3VsZCBi
ZSA3IGFuZCBpcy4KK1BBU1M6IHRlc3RHZXR0ZXIodGVzdEZ1bmN0aW9uMykgc2hvdWxkIGJlIDMg
YW5kIGlzLgorUEFTUzogdGVzdEdldHRlcih0ZXN0RnVuY3Rpb241KSBzaG91bGQgYmUgNSBhbmQg
aXMuCitQQVNTOiB0ZXN0UHJvdG9HZXR0ZXIoe19fcHJvdG9fXzoge2NvdW50OiAnRkFJTCcsIGdl
dCBsZW5ndGgoKXsgcmV0dXJuIHRoaXMuY291bnQ7IH19LCBjb3VudDogN30pIHNob3VsZCBiZSA3
IGFuZCBpcy4KK1BBU1M6IHRlc3RQcm90b0dldHRlcih7X19wcm90b19fOiB0ZXN0RnVuY3Rpb24z
LCBjb3VudDogJ0ZBSUwnfSkgc2hvdWxkIGJlIDMgYW5kIGlzLgorUEFTUzogdGVzdFByb3RvR2V0
dGVyKHtfX3Byb3RvX186IHRlc3RGdW5jdGlvbjUsIGNvdW50OiAnRkFJTCd9KSBzaG91bGQgYmUg
NSBhbmQgaXMuCitQQVNTOiB0ZXN0UHJvdG9DaGFpbkdldHRlcih7X19wcm90b19fOiB7X19wcm90
b19fOiB7Y291bnQ6ICdGQUlMJywgZ2V0IGxlbmd0aCgpeyByZXR1cm4gdGhpcy5jb3VudDsgfX19
LCBjb3VudDogN30pIHNob3VsZCBiZSA3IGFuZCBpcy4KK1BBU1M6IHRlc3RQcm90b0NoYWluR2V0
dGVyKHtfX3Byb3RvX186IHtfX3Byb3RvX186IHRlc3RGdW5jdGlvbjN9LCBjb3VudDogJ0ZBSUwn
fSkgc2hvdWxkIGJlIDMgYW5kIGlzLgorUEFTUzogdGVzdFByb3RvQ2hhaW5HZXR0ZXIoe19fcHJv
dG9fXzoge19fcHJvdG9fXzogdGVzdEZ1bmN0aW9uNX0sIGNvdW50OiAnRkFJTCd9KSBzaG91bGQg
YmUgNSBhbmQgaXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcGljL2NhY2hl
ZC1uYW1lZC1wcm9wZXJ0eS1nZXR0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvcGljL2Nh
Y2hlZC1uYW1lZC1wcm9wZXJ0eS1nZXR0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lZjZhODdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9waWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5LWdldHRlci5odG1sCkBAIC0wLDAgKzEsNjYgQEAK
KzxwPgorVGhpcyBwYWdlIHRlc3RzIGNhY2hlZCBhY2Nlc3MgdG8gZ2V0dGVycyBhbmQgc2V0dGVy
cy4gSWYgdGhlIHRlc3QgcGFzc2VzLAoreW91J2xsIHNlZSBhIHNlcmllcyBvZiBQQVNTIG1lc3Nh
Z2VzIGJlbG93LgorPC9wPgorCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPHNjcmlwdD4K
KyhmdW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiBs
b2cocykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmRvY3VtZW50KQorICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShzICsgIlxuIikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmludChz
ICsgIlxuIik7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHNob3VsZEJlKGEsIGFEZXNjcmlw
dGlvbiwgYikKKyAgICB7CisgICAgICAgIGlmIChhID09PSBiKSB7CisgICAgICAgICAgICBsb2co
IlBBU1M6ICIgKyBhRGVzY3JpcHRpb24gKyAiIHNob3VsZCBiZSAiICsgYiArICIgYW5kIGlzLiIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgYURlc2NyaXB0
aW9uICsgIiBzaG91bGQgYmUgIiArIGIgKyAiIGJ1dCBpbnN0ZWFkIGlzICIgKyBhICsgIi4iKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0R2V0dGVyKG8pIHsKKyAg
ICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKQor
ICAgICAgICAgICAgcmVzdWx0ID0gby5sZW5ndGg7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIGZ1bmN0aW9uIHRlc3RQcm90b0dldHRlcihvKSB7CisgICAgICAgIHZhciByZXN1
bHQ7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgICAgIHJl
c3VsdCA9IG8ubGVuZ3RoOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBmdW5j
dGlvbiB0ZXN0UHJvdG9DaGFpbkdldHRlcihvKSB7CisgICAgICAgIHZhciByZXN1bHQ7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgICAgIHJlc3VsdCA9IG8u
bGVuZ3RoOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBmdW5jdGlvbiBnZXR0
ZXJUZXN0KHN0ciwgZXhwZWN0ZWQpIHsKKyAgICAgICAgc2hvdWxkQmUoZXZhbChzdHIpLCBzdHIs
IGV4cGVjdGVkKTsKKyAgICB9CisgICAgdmFyIHRlc3RGdW5jdGlvbjMgPSBmdW5jdGlvbihhLGIs
Yyl7fQorICAgIHZhciB0ZXN0RnVuY3Rpb241ID0gZnVuY3Rpb24oYSxiLGMsZCxlKXt9CisgICAg
Z2V0dGVyVGVzdCgidGVzdEdldHRlcih7X19wcm90b19fOiB7Y291bnQ6ICdGQUlMJ30sIGdldCBs
ZW5ndGgoKXsgcmV0dXJuIHRoaXMuY291bnQ7IH0sIGNvdW50OiA3fSkiLCA3KTsKKyAgICBnZXR0
ZXJUZXN0KCJ0ZXN0R2V0dGVyKHRlc3RGdW5jdGlvbjMpIiwgMyk7CisgICAgZ2V0dGVyVGVzdCgi
dGVzdEdldHRlcih0ZXN0RnVuY3Rpb241KSIsIDUpOworICAgIAorICAgIGdldHRlclRlc3QoInRl
c3RQcm90b0dldHRlcih7X19wcm90b19fOiB7Y291bnQ6ICdGQUlMJywgZ2V0IGxlbmd0aCgpeyBy
ZXR1cm4gdGhpcy5jb3VudDsgfX0sIGNvdW50OiA3fSkiLCA3KTsKKyAgICBnZXR0ZXJUZXN0KCJ0
ZXN0UHJvdG9HZXR0ZXIoe19fcHJvdG9fXzogdGVzdEZ1bmN0aW9uMywgY291bnQ6ICdGQUlMJ30p
IiwgMyk7CisgICAgZ2V0dGVyVGVzdCgidGVzdFByb3RvR2V0dGVyKHtfX3Byb3RvX186IHRlc3RG
dW5jdGlvbjUsIGNvdW50OiAnRkFJTCd9KSIsIDUpOworCisgICAgZ2V0dGVyVGVzdCgidGVzdFBy
b3RvQ2hhaW5HZXR0ZXIoe19fcHJvdG9fXzoge19fcHJvdG9fXzoge2NvdW50OiAnRkFJTCcsIGdl
dCBsZW5ndGgoKXsgcmV0dXJuIHRoaXMuY291bnQ7IH19fSwgY291bnQ6IDd9KSIsIDcpOworICAg
IGdldHRlclRlc3QoInRlc3RQcm90b0NoYWluR2V0dGVyKHtfX3Byb3RvX186IHtfX3Byb3RvX186
IHRlc3RGdW5jdGlvbjN9LCBjb3VudDogJ0ZBSUwnfSkiLCAzKTsKKyAgICBnZXR0ZXJUZXN0KCJ0
ZXN0UHJvdG9DaGFpbkdldHRlcih7X19wcm90b19fOiB7X19wcm90b19fOiB0ZXN0RnVuY3Rpb241
fSwgY291bnQ6ICdGQUlMJ30pIiwgNSk7CisKK30pKCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNhN2M0Ni4uYzZl
YTIwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wMy0wMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93IHN0YXRpYyBwcm9wZXJ0eSBnZXR0ZXJzIHRvIGludGVyYWN0IHdpdGggSlNDcyBjYWNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcx
NgorCisgICAgICAgIFVwZGF0ZSB0aGUgb2J2aW91c2x5IHNhZmUgZ2V0dGVycyB0byBhbGxvdyBj
YWNoaW5nCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9waWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5
LWdldHRlci5odG1sCisKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorCiAyMDEwLTAzLTAzICBEYXZpZCBMZXZpbiAgPGxldmluQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IHI1NTQ3NC4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggNmI4MDU5Zi4uMWYyYmZlNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSdW50aW1lQXJyYXk6OmdldE93
blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGUK
IGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbGVuZ3RoR2V0dGVyKTsKKyAgICAgICAgc2xvdC5z
ZXRDYWNoZWFibGVDdXN0b20odGhpcywgbGVuZ3RoR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IGNiZTY0Yzgu
LjI5MTQ1YjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAor
KysgYi9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
SlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGUKIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGxlbmd0
aEdldHRlcik7CisgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGxlbmd0aEdl
dHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAK
</data>
<flag name="review"
          id="33000"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>