<?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>90095</bug_id>
          
          <creation_ts>2012-06-27 12:49:36 -0700</creation_ts>
          <short_desc>JSC: add infrastructure for appending comments to generated bytecode</short_desc>
          <delta_ts>2012-06-28 16:03:33 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mark Lam">mark.lam</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>658796</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-06-27 12:49:36 -0700</bug_when>
    <thetext>It would be nice to be able to append comments to bytecode opcodes that are emitted by the BytecodeGenerator.  This aids in providing some context when debugging the correctness of BytecodeGenerator code generation and any other work that involves bytecode inspection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659049</commentid>
    <comment_count>1</comment_count>
      <attachid>149839</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-06-27 18:11:28 -0700</bug_when>
    <thetext>Created attachment 149839
Fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659054</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 18:19:26 -0700</bug_when>
    <thetext>Attachment 149839 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/ChangeLog:16:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 9 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>659058</commentid>
    <comment_count>3</comment_count>
      <attachid>149842</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-06-27 18:22:03 -0700</bug_when>
    <thetext>Created attachment 149842
Rev 1: removed a tab that snuck in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659667</commentid>
    <comment_count>4</comment_count>
      <attachid>149842</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-28 11:58:20 -0700</bug_when>
    <thetext>Comment on attachment 149842
Rev 1: removed a tab that snuck in.

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

Design looks fine, but this patch could use some small tweaks.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        development purposes.  It should not be enable for product builds.

Typo: &quot;enable&quot; should be &quot;enabled&quot;.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:99
&gt; +#ifdef USE_BYTECODE_COMMENTS

The WebKit style for this kind of #ifdef is the &quot;ENABLE()&quot; macro.

To turn the feature on: #define ENABLE_BYTECODE_COMMENTS 1

To test the feature: #if ENABLE(BYTECODE_COMMENTS)

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:691
&gt; +// Record a comment in the CodeBlock&apos;s comments list for the current opcode
&gt; +// that is about to be emitted.

Better to put a comment like this in the header, by the function declaration.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:702
&gt; +// Register a comment to be associated with the next opcode that will be emitted.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659704</commentid>
    <comment_count>5</comment_count>
      <attachid>149986</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-06-28 12:44:22 -0700</bug_when>
    <thetext>Created attachment 149986
Rev 2: applied changes based on Geoff&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659714</commentid>
    <comment_count>6</comment_count>
      <attachid>149842</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 12:50:35 -0700</bug_when>
    <thetext>Comment on attachment 149842
Rev 1: removed a tab that snuck in.

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

&gt; Source/JavaScriptCore/bytecode/Comment.h:13
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of

We use the 2-clause license these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659720</commentid>
    <comment_count>7</comment_count>
      <attachid>149986</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-28 12:56:13 -0700</bug_when>
    <thetext>Comment on attachment 149986
Rev 2: applied changes based on Geoff&apos;s feedback.

Phil&apos;s right: please use the license @ http://trac.webkit.org/browser/trunk/Source/WebKit/LICENSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659736</commentid>
    <comment_count>8</comment_count>
      <attachid>149992</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-06-28 13:16:38 -0700</bug_when>
    <thetext>Created attachment 149992
rev3: Copyright header updated for the new file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659825</commentid>
    <comment_count>9</comment_count>
      <attachid>149992</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-28 14:22:47 -0700</bug_when>
    <thetext>Comment on attachment 149992
rev3: Copyright header updated for the new file.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659913</commentid>
    <comment_count>10</comment_count>
      <attachid>149992</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 16:03:28 -0700</bug_when>
    <thetext>Comment on attachment 149992
rev3: Copyright header updated for the new file.

Clearing flags on attachment: 149992

Committed r121480: &lt;http://trac.webkit.org/changeset/121480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659914</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 16:03:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149839</attachid>
            <date>2012-06-27 18:11:28 -0700</date>
            <delta_ts>2012-06-27 18:37:18 -0700</delta_ts>
            <desc>Fix.</desc>
            <filename>bug-90095.patch</filename>
            <type>text/plain</type>
            <size>67710</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEyLTA2LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGRpbmcgYSBjb21tZW50aW5nIHV0aWxpdHkgdG8gcmVjb3JkIEJ5dGVjb2RlR2VuZXJhdG9yIGNv
bW1lbnRzCisgICAgICAgIHdpdGggb3Bjb2RlcyB0aGF0IGFyZSBlbWl0dGVkLiAgUHJlc2VudGx5
LCB0aGUgY29tbWVudHMgY2FuIG9ubHkKKyAgICAgICAgYmUgY29uc3RhbnQgc3RyaW5ncy4gIEFk
ZGluZyBjb21tZW50cyBmb3Igb3Bjb2RlcyBpcyBvcHRpb25hbC4KKyAgICAgICAgSWYgYSBjb21t
ZW50IGlzIGFkZGVkLCB0aGUgY29tbWVudCB3aWxsIGJlIHByaW50ZWQgZm9sbG93aW5nIHRoZQor
ICAgICAgICBvcGNvZGUgd2hlbiBDb2RlQmxvY2s6OmR1bXAoKSBpcyBjYWxsZWQuCisKKyAgICAg
ICAgVGhpcyB1dGlsaXR5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFuZCBpcyBvbmx5IG1lYW50
IGZvciBWTQorICAgICAgICBkZXZlbG9wbWVudCBwdXJwb3Nlcy4gIEl0IHNob3VsZCBub3QgYmUg
ZW5hYmxlIGZvciBwcm9kdWN0IGJ1aWxkcy4KKworICAgICAgICBUbyBlbmFibGUgdGhpcyB1dGls
aXR5LCB1bmNvbW1lbnQgdGhlICNkZWZpbmUgZm9yIFVTRV9CWVRFQ09ERV9DT01NRU5UUworICAg
ICAgICBpbiBDb2RlQmxvY2suaC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTAwOTUKKwkKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKTogRHVtcHMgdGhlIGNvbW1lbnQuCisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50VW5hcnlPcCk6IEFkZCBjb21tZW50
IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50QmluYXJ5T3ApOiBBZGQgY29t
bWVudCBkdW1wcy4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVt
cCk6IEFkZCBjb21tZW50IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50Q2Fs
bE9wKTogQWRkIGNvbW1lbnQgZHVtcHMuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRQ
dXRCeUlkT3ApOiBBZGQgY29tbWVudCBkdW1wcy4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpk
dW1wKTogQWRkIGNvbW1lbnQgZHVtcHMuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAgICAgRmluZHMgdGhlIGNvbW1lbnQgZm9yIGFuIG9wY29kZSBpZiBhdmFpbGFi
bGUuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlQ29tbWVudHMpOgorICAg
ICAgICAgICAgRm9yIGRlYnVnZ2luZyB3aGV0aGVyIGNvbW1lbnRzIGFyZSBjb2xsZWN0ZWQuCisg
ICAgICAgICAgICBJdCBpcyBub3QgYmVpbmcgY2FsbGVkIGFueXdoZXJlLgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpieXRlY29kZUNvbW1lbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9Db21tZW50
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKENvbW1lbnQpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0T3Bjb2RlKTogQ2FsbHMgZW1pdENvbW1lbnQoKS4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tbWVudCk6IEFkZHMg
Y29tbWVudCB0byBDb2RlQmxvY2suCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpw
cmVwZW5kQ29tbWVudCk6CisgICAgICAgICAgICBSZWdpc3RlcnMgYSBjb21tZW50IGZvciBlbWl0
Q29tZW1udCgpIHRvIHVzZSBsYXRlci4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21tZW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OnByZXBlbmRDb21tZW50KToKKyAgICAgICAgICAgIFRoZXNlIGFyZSBpbmxpbmVk
IHZlcnNpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IG51bGxpZnkgdGhlbQorICAgICAgICAg
ICAgd2hlbiBVU0VfQllURUNPREVfQ09NTUVOVFMgaXMgbm90IGRlZmluZWQuCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjb21tZW50cyk6CisKIDIwMTItMDYtMjcgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgZGlzYXNzZW1ibHkgc2hvdWxk
IGJlIGVhc2llciB0byByZWFkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTIxMzgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMTM4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYyLDYgKzE1NjIs
MTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5cYnl0ZWNvZGVcQ29tbWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxFdmFsQ29kZUNhY2hlLmgiCiAJCQkJPgogCQkJ
PC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTM4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQAogCQlGNjky
QTg4NTAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVU3RyaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg4NjAyNTU1OTdEMDFGRjYw
RjcgLyogVVN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRkVCNjNBQTIx
NTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC0yMzYwLDYgKzIzNjEsNyBAQAogCQkJCTBGMEI4M0IzMTRCQ0Y4NUUw
MDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjBCODNBRTE0QkNGNzE0
MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLywKIAkJCQkwRjBCODNBRjE0QkNGNzE0MDA4
ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8sCisJCQkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2
IC8qIENvbW1lbnQuaCAqLywKIAkJCQkwRjBCODNBQzE0QkNGNjAyMDA4ODVCNEYgLyogTGluZUlu
Zm8uaCAqLywKIAkJCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oICovLAogCQkJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDEyMTM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAi
VVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCkBAIC05Myw2ICs5NCwxOCBA
QCBzdGF0aWMgQ1N0cmluZyBpZE5hbWUoaW50IGlkMCwgY29uc3QgSWRlCiAgICAgcmV0dXJuIG1h
a2VVU3RyaW5nKGlkZW50LnVzdHJpbmcoKSwgIihAaWQiLCBVU3RyaW5nOjpudW1iZXIoaWQwKSwg
IikiKS51dGY4KCk7CiB9CiAKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShpbnQgbG9jYXRpb24pCit7CisjaWZkZWYgVVNFX0JZVEVDT0RFX0NPTU1FTlRTCisg
ICAgY29uc3QgY2hhciogY29tbWVudCA9IGNvbW1lbnRGb3JCeXRlY29kZU9mZnNldChsb2NhdGlv
bik7CisgICAgaWYgKGNvbW1lbnQpCisgICAgICAgIGRhdGFMb2coIlx0XHQgOyAlcyIsIGNvbW1l
bnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworI2VuZGlmCisgICAgZGF0
YUxvZygiXG4iKTsKK30KKwogQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lzdGVyTmFtZShFeGVjU3Rh
dGUqIGV4ZWMsIGludCByKSBjb25zdAogewogICAgIGlmIChyID09IG1pc3NpbmdUaGlzT2JqZWN0
TWFya2VyKCkpCkBAIC0xNTYsNyArMTY5LDggQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50VW5hcnlP
cChFeGVjU3RhdGUqIAogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogCi0gICAgZGF0YUxvZygiWyU0ZF0gJXNcdFx0ICVzLCAl
c1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywg
JXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOwogfQogCiB2b2lkIENvZGVCbG9jazo6cHJpbnRCaW5hcnlPcChFeGVjU3Rh
dGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0
b3ImIGl0LCBjb25zdCBjaGFyKiBvcCkKQEAgLTE2NCwxNCArMTc4LDE2IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcmludEJpbmFyeU9wKEV4ZWNTdGF0ZSoKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjIgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nKCJbJTRkXSAlc1x0XHQgJXMsICVzLCAlc1xuIiwg
bG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICBk
YXRhTG9nKCJbJTRkXSAlc1x0XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogfQogCiB2b2lkIENvZGVCbG9jazo6cHJpbnRDb25kaXRpb25hbEp1
bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVy
YXRvciYsIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBpdCwgaW50IGxvY2F0
aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZygiWyU0ZF0g
JXNcdFx0ICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgZGF0YUxvZygiWyU0
ZF0gJXNcdFx0ICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnByaW50
R2V0QnlJZE9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rp
b24+Ojpjb25zdF9pdGVyYXRvciYgaXQpCkBAIC00MDIsNyArNDE4LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50Q2FsbE9wKEV4ZWNTdGF0ZSogZQogICAgICAgICB9CiAjZW5kaWYKICAgICB9Ci0g
ICAgZGF0YUxvZygiXG4iKTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CiAgICAgaXQgKz0gMjsKIH0KIApAQCAtNDExLDcgKzQyNyw4IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZygiWyU0ZF0gJXNcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBt
X2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkp
OworICAgIGRhdGFMb2coIlslNGRdICVzXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCBvcCwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgIGl0ICs9IDU7CiB9CiAKQEAgLTY1
MCw1MiArNjY3LDYxIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28K
ICAgICBpbnQgbG9jYXRpb24gPSBpdCAtIGJlZ2luOwogICAgIHN3aXRjaCAoZXhlYy0+aW50ZXJw
cmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaXQtPnUub3Bjb2RlKSkgewogICAgICAgICBjYXNlIG9wX2Vu
dGVyOiB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBlbnRlclxuIiwgbG9jYXRpb24pOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZW50ZXIiLCBsb2NhdGlvbik7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hY3RpdmF0aW9uOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY3JlYXRlX2Fj
dGl2YXRpb24gJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1l
bnRzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGNyZWF0ZV9hcmd1bWVudHNcdCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGNyZWF0ZV9hcmd1bWVudHNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2lu
aXRfbGF6eV9yZWc6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
Y3JlYXRlX3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY3JlYXRlX3RoaXMgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBjcmVhdGVfdGhpcyAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnZlcnRf
dGhpczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNv
bnZlcnRfdGhpc1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgICsraXQ7IC8vIFNraXAgdmFsdWUgcHJvZmlsZS4KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBuZXdfb2JqZWN0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXk6IHsKICAgICAgICAgICAgIGludCBk
c3QgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd2ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2FycmF5XHQgJXMsICVzLCAlZFxuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFy
Z3YpLmRhdGEoKSwgYXJnYyk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfYXJyYXlc
dCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3YpLmRhdGEoKSwgYXJnYyk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6IHsKICAgICAgICAg
ICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd2ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2FycmF5X2J1ZmZlciAlcywgJWQs
ICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBh
cmdjKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19hcnJheV9idWZmZXIgJXMsICVk
LCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIGFyZ3YsIGFy
Z2MpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfcmVn
ZXhwOiB7CkBAIC03MDMsMTUgKzcyOSwxNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3Rh
dGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcmUwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfcmVnZXhwXHQgJXMsICIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAocjAgPj0wICYm
IHIwIDwgKGludCludW1iZXJPZlJlZ0V4cHMoKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCIl
c1xuIiwgcmVnZXhwTmFtZShyZTAsIHJlZ2V4cChyZTApKS5kYXRhKCkpOworICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiVzIiwgcmVnZXhwTmFtZShyZTAsIHJlZ2V4cChyZTApKS5kYXRhKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRhdGFMb2coImJhZF9yZWdleHAoJWQp
XG4iLCByZTApOworICAgICAgICAgICAgICAgIGRhdGFMb2coImJhZF9yZWdleHAoJWQpIiwgcmUw
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbW92OiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbW92XHRc
dCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
bW92XHRcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CkBAIC03NjAsMTIgKzc4OCwxNCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wcmVfaW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByZV9pbmNcdFx0ICVzXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gcHJlX2luY1x0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcmVfZGVj
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIHByZV9kZWNcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHJlX2RlY1x0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3N0X2luYzogewpAQCAtODM3
LDcgKzg2Nyw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZTogewogICAgICAgICAg
ICAgaW50IGJhc2UgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgYmFzZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNoZWNrX2hh
c19pbnN0YW5jZVx0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRh
dGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luc3Rh
bmNlb2Y6IHsKQEAgLTg0NSw3ICs4NzYsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3Rh
dGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIz
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBpbnN0YW5j
ZW9mXHRcdCAlcywgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGluc3RhbmNlb2ZcdFx0ICVzLCAlcywgJXMsICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMykuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfdHlwZW9mOiB7CkBAIC04ODMsNyArOTE1LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICBjYXNlIG9wX3Jlc29sdmU6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZVx0XHQgJXMs
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShp
ZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIHJlc29sdmVcdFx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04OTEsMTQgKzkyNCwx
NiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBza2lwTGV2ZWxzID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX3NraXBcdCAlcywgJXMs
ICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShp
ZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCBza2lwTGV2ZWxzKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIHJlc29sdmVfc2tpcFx0ICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCBza2lwTGV2ZWxzKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfZ2xv
YmFsXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIHJlc29sdmVfZ2xvYmFsXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRh
dGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CiAgICAgICAgICAgICBpdCArPSAzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTkwOCw3ICs5NDMsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMs
IGNvCiAgICAgICAgICAgICBKU1ZhbHVlIHNjb3BlID0gSlNWYWx1ZSgoKytpdCktPnUuanNDZWxs
LmdldCgpKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBpbnQgZGVwdGggPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfZ2xvYmFs
X2R5bmFtaWNcdCAlcywgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIHNjb3BlKS51dGY4KCkuZGF0
YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgZGVwdGgpOworICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV9nbG9iYWxfZHluYW1pY1x0ICVzLCAlcywg
JXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCB2YWx1ZVRv
U291cmNlU3RyaW5nKGV4ZWMsIHNjb3BlKS51dGY4KCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lk
ZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgZGVwdGgpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05MTYsNyArOTUyLDggQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBza2lwTGV2ZWxzID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBnZXRfc2NvcGVkX3Zhclx0ICVzLCAlZCwgJWRcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaW5kZXgsIHNraXBMZXZlbHMpOworICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X3Njb3BlZF92YXJcdCAlcywgJWQsICVkIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRleCwgc2tpcExldmVscyk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTkyNCwy
MCArOTYxLDIzIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHNraXBMZXZlbHMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X3Njb3BlZF92
YXJcdCAlZCwgJWQsICVzXG4iLCBsb2NhdGlvbiwgaW5kZXgsIHNraXBMZXZlbHMsIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9z
Y29wZWRfdmFyXHQgJWQsICVkLCAlcyIsIGxvY2F0aW9uLCBpbmRleCwgc2tpcExldmVscywgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJl
Z2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7Ci0gICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBnZXRfZ2xvYmFsX3Zhclx0ICVzLCBnJWQoJXApXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0
ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gZ2V0X2dsb2JhbF92YXJcdCAlcywgZyVkKCVwKSIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3Rl
ckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsr
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfZ2xv
YmFsX3Zhcl93YXRjaGFibGU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIg
PSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVyOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
Z2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlXHQgJXMsIGclZCglcClcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3Rlcklu
ZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBnZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGVcdCAlcywgZyVkKCVwKSIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRS
ZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAg
ICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTQ1LDEz
ICs5ODUsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAg
ICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHB1dF9nbG9iYWxfdmFyXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9uLCBtX2ds
b2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQ
b2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhclx0IGclZCglcCksICVzIiwgbG9jYXRpb24sIG1fZ2xv
YmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBv
aW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKICAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51
LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJfY2hlY2tcdCBnJWQo
JXApLCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChy
ZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9nbG9iYWxfdmFyX2NoZWNr
XHQgZyVkKCVwKSwgJXMiLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3Rlcklu
ZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTk2MCwyMSArMTAwMiwyNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBpc1N0cmljdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gcmVzb2x2ZV9iYXNlJXNcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBpc1N0cmljdCA/ICJf
c3RyaWN0IiA6ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwg
bV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
cmVzb2x2ZV9iYXNlJXNcdCAlcywgJXMiLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIg
OiAiIiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZW5zdXJl
X3Byb3BlcnR5X2V4aXN0c1x0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBlbnN1cmVfcHJvcGVydHlfZXhpc3RzXHQgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBt
X2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3Jlc29sdmVfd2l0aF9iYXNlOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlc1xuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtOTgyLDcgKzEwMjcs
OCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV93aXRoX3RoaXMgJXMsICVzLCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV93aXRoX3RoaXMgJXMsICVzLCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTAw
MSw3ICsxMDQ3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwog
ICAgICAgICBjYXNlIG9wX2dldF9zdHJpbmdfbGVuZ3RoOiB7CiAgICAgICAgICAgICBwcmludEdl
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQpOwogICAgICAgICAgICAgcHJpbnRHZXRCeUlkQ2Fj
aGVTdGF0dXMoZXhlYywgbG9jYXRpb24pOwotICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKKyAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGg6IHsKQEAgLTEwMzgsNyArMTA4NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRf
Z2V0dGVyX3NldHRlclx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dldHRlcl9zZXR0ZXJcdCAl
cywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21ldGhvZF9jaGVjazogewpAQCAtMTA3
MCw3ICsxMTE3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIikiKTsKICAgICAgICAgICAgIH0KICNlbmRpZgotICAg
ICAgICAgICAgZGF0YUxvZygiXG4iKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBwcmlu
dEdldEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQpOwogICAgICAgICAgICAgcHJpbnRHZXRCeUlk
Q2FjaGVTdGF0dXMoZXhlYywgbG9jYXRpb24pOwpAQCAtMTA4MSwxNCArMTEyOCwxNiBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gZGVsX2J5X2lkXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gZGVsX2J5X2lkXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlk
TmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGdldF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0xMDk2LDcgKzExNDUsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBnZXRfYXJndW1lbnRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
Z2V0X2FyZ3VtZW50X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTExMDcsMzggKzExNTcsNDQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByNSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gZ2V0X2J5X3BuYW1lXHQgJXMsICVzLCAlcywgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMyku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjQpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHI1KS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2J5X3BuYW1lXHQg
JXMsICVzLCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBkZWxfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pbmRleDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBwdXRfYnlfaW5kZXhcdCAlcywgJXUsICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfYnlfaW5kZXhcdCAlcywgJXUs
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9qbXA6IHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGptcFx0XHQgJWQoLT4lZClcbiIs
IGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGptcFx0XHQgJWQoLT4lZCkiLCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiAr
IG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xv
b3A6IHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3BcdFx0ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29w
XHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsKQEAgLTEx
NjksMTI5ICsxMjI1LDE0OCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMs
IGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IHZvaWQqIHBvaW50ZXIgPSAoKytpdCktPnUucG9pbnRlcjsKICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZXFf
cHRyXHRcdCAlcywgJXAsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHBvaW50ZXIsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gam5lcV9wdHJcdFx0ICVzLCAlcCwgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHBvaW50ZXIsIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9qbGVzczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGps
ZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpsZXNzXHRcdCAlcywg
JXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgt
PiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gamdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVk
KVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBqZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVzczogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIGpubGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9qbmdyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5n
cmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2puZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gam5ncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5n
cmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbG9vcF9pZl9sZXNzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gbG9vcF9pZl9sZXNzXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBs
b29wX2lmX2xlc3NcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2xvb3BfaWZfbGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbG9vcF9pZl9sZXNzZXFcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIGxvb3BfaWZfbGVzc2VxXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9sb29wX2lmX2dyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIGxvb3BfaWZfZ3JlYXRlclx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyZXE6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJlcVx0ICVzLCAlcywg
JWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywgJXMsICVk
KC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaGludDogewotICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcF9oaW50XG4iLCBsb2NhdGlvbik7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2hpbnQiLCBsb2NhdGlvbik7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06IHsKICAgICAgICAgICAg
IGludCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVm
YXVsdFRhcmdldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5l
ZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBzd2l0Y2hfaW1tXHQgJWQsICVkKC0+JWQpLCAlc1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgs
IGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gc3dpdGNoX2ltbVx0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwg
ZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhl
Yywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJ
bmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX2No
YXJcdCAlZCwgJWQoLT4lZCksICVzXG4iLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRh
cmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRp
bmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBzd2l0Y2hf
Y2hhclx0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRh
cmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRp
bmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKICAgICAgICAgICAgIGludCB0YWJsZUluZGV4ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQg
JWQsICVkKC0+JWQpLCAlc1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQs
IGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJl
Z2lzdGVyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX3N0cmlu
Z1x0ICVkLCAlZCgtPiVkKSwgJXMiLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdl
dCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVl
UmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25ld19mdW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHNob3VsZENoZWNrID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBuZXdfZnVuY1x0XHQgJXMsIGYlZCwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgZjAsIHNob3VsZENoZWNrID8gIjxDaGVja2VkPiIgOiAiPFVu
Y2hlY2tlZD4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19mdW5jXHRcdCAlcywg
ZiVkLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjAsIHNo
b3VsZENoZWNrID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2Z1bmNfZXhwXHQg
JXMsIGYlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCk7
CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywgZiVkIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKQEAgLTEzMDcsMzUgKzEzODIs
NDEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAg
ICAgaW50IHRoaXNWYWx1ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFy
Z3VtZW50cyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGZpcnN0RnJlZVJl
Z2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
YWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCBjYWxsZWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHRoaXNWYWx1ZSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgYXJndW1lbnRzKS5kYXRhKCksIGZpcnN0RnJlZVJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNhbGxfdmFyYXJnc1x0ICVzLCAlcywgJXMs
ICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBjYWxsZWUpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHRoaXNWYWx1ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYXJndW1l
bnRzKS5kYXRhKCksIGZpcnN0RnJlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRp
b25cdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gdGVhcl9vZmZfYWN0aXZhdGlvblx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gdGVhcl9vZmZfYXJndW1lbnRzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGVh
cl9vZmZfYXJndW1lbnRzICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmV0OiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIHJldFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXRcdFx0ICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGNhbGxfcHV0X3Jlc3VsdFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRc
dFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3JldF9vYmplY3Rfb3JfdGhpczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAl
cyAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKQEAgLTEzNDYsMTMgKzE0MjcsMTUgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBjb3VudCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gc3RyY2F0XHRcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBj
b3VudCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBzdHJjYXRcdFx0ICVzLCAlcywgJWQi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBjb3VudCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRvX3ByaW1pdGl2ZVx0ICVzLCAlc1xuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSB0b19wcmltaXRpdmVcdCAlcywg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X3BuYW1lczogewpAQCAtMTM2MSw3ICsxNDQ0LDggQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIyID0gaXRbM10u
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIzID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9IGl0WzVdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGdldF9wbmFtZXNcdCAlcywgJXMsICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjMpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0ICs9
IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcykgLSAxOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTEzNzIsNjcgKzE0NTYsNzkgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHNpemUgPSBpdFs0XS51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgaXRlciA9IGl0WzVdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBpdFs2XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBu
ZXh0X3BuYW1lXHQgJXMsICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBz
aXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpdGVyKS5kYXRhKCksIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV4dF9wbmFtZVx0
ICVzLCAlcywgJXMsICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIGRlc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIGkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNpemUpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGl0ZXIpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX25leHRfcG5hbWUpIC0gMTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHVzaF9zY29wZTog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBwdXNoX3Njb3BlXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXNoX3Njb3Bl
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6IHsKLSAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHBvcF9zY29wZVxuIiwgbG9jYXRpb24pOworICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gcG9wX3Njb3BlIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXNoX25ld19zY29wZTogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1c2hfbmV3X3Njb3BlIFx0JXMsICVzLCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBt
X2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9uZXdfc2NvcGUgXHQlcywgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBt
X2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbXBfc2NvcGVz
OiB7CiAgICAgICAgICAgICBpbnQgc2NvcGVEZWx0YSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gam1wX3Njb3Blc1x0XiVkLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHNjb3Bl
RGVsdGEsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gam1wX3Njb3Blc1x0XiVkLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2F0Y2hcdFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gY2F0Y2hcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGhy
b3c6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gdGhyb3dcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGhyb3dcdFx0
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9y
OiB7CiAgICAgICAgICAgICBpbnQgazAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIHRocm93X3JlZmVyZW5jZV9lcnJvclx0ICVzXG4iLCBsb2NhdGlvbiwg
Y29uc3RhbnROYW1lKGV4ZWMsIGswLCBnZXRDb25zdGFudChrMCkpLmRhdGEoKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSB0aHJvd19yZWZlcmVuY2VfZXJyb3JcdCAlcyIsIGxvY2F0aW9u
LCBjb25zdGFudE5hbWUoZXhlYywgazAsIGdldENvbnN0YW50KGswKSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVidWc6IHsKICAgICAgICAg
ICAgIGludCBkZWJ1Z0hvb2tJRCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IGZpcnN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxhc3RMaW5l
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBkZWJ1Z1x0
XHQgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBm
aXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlYnVnXHRc
dCAlcywgJWQsICVkIiwgbG9jYXRpb24sIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBmaXJz
dExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6IHsKICAgICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHJvZmlsZV93aWxs
X2NhbGwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEo
KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwcm9maWxlX3dpbGxfY2FsbCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6IHsKICAg
ICAgICAgICAgIGludCBmdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcHJvZmlsZV9kaWRfY2FsbFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gcHJvZmlsZV9kaWRfY2FsbFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBm
dW5jdGlvbikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfZW5kOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGVuZFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBlbmRc
dFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYwMSw2ICsxNjk3LDkgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogICAgICwgbV9vcHRpbWl6YXRpb25E
ZWxheUNvdW50ZXIoMCkKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKICAg
ICAsIG1fbGluZUluZm8ob3RoZXIubV9saW5lSW5mbykKKyNpZmRlZiBVU0VfQllURUNPREVfQ09N
TUVOVFMKKyAgICAsIG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3IoMCkKKyNlbmRpZgogI2lmIEVO
QUJMRShKSVQpCiAgICAgLCBtX2NhbkNvbXBpbGVXaXRoREZHU3RhdGUoREZHOjpDYXBhYmlsaXR5
TGV2ZWxOb3RTZXQpCiAjZW5kaWYKQEAgLTE2NTMsNiArMTc1Miw5IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAsIG1fc3BlY3VsYXRpdmVGYWlsQ291bnRl
cigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoMCkKICAgICAsIG1fcmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKKyNpZmRlZiBVU0VfQllURUNPREVfQ09NTUVOVFMKKyAg
ICAsIG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3IoMCkKKyNlbmRpZgogewogICAgIEFTU0VSVCht
X3NvdXJjZSk7CiAgICAgCkBAIC0yMTI3LDYgKzIyMjksODIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0
cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbgogI2VuZGlmICAgIAogfQogCisjaWZkZWYgVVNFX0JZVEVD
T0RFX0NPTU1FTlRTCisvLyBGaW5kcyB0aGUgY29tbWVudCBzdHJpbmcgZm9yIHRoZSBzcGVjaWZp
ZWQgYnl0ZWNvZGUgb2Zmc2V0L1BDIGlzIGF2YWlsYWJsZS4gCitjb25zdCBjaGFyKiBDb2RlQmxv
Y2s6OmNvbW1lbnRGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3sK
KyAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworCisg
ICAgVmVjdG9yPENvbW1lbnQ+JiBjb21tZW50cyA9IG1fYnl0ZWNvZGVDb21tZW50czsKKyAgICBz
aXplX3QgbnVtYmVyT2ZDb21tZW50cyA9IGNvbW1lbnRzLnNpemUoKTsKKyAgICBjb25zdCBjaGFy
KiByZXN1bHQgPSAwOworCisgICAgaWYgKCFudW1iZXJPZkNvbW1lbnRzKQorICAgICAgICByZXR1
cm4gMDsgLy8gTm8gY29tbWVudHMgdG8gbWF0Y2ggd2l0aC4KKworICAgIC8vIFRoZSBuZXh0IG1h
dGNoIGlzIG1vc3QgbGlrZWx5IHRoZSBuZXh0IGNvbW1lbnQgaW4gdGhlIGxpc3QuCisgICAgLy8g
RG8gYSBxdWljayBjaGVjayB0byBzZWUgaWYgdGhhdCBpcyBhIG1hdGNoIGZpcnN0LgorICAgIC8v
IG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3Igc2hvdWxkIGFscmVhZHkgYmUgcG9pbnRpbmcgdG8g
dGhlCisgICAgLy8gbmV4dCBjb21tZW50IHdlIHNob3VsZCBjaGVjay4KKworICAgIEFTU0VSVCht
X2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9yIDwgY29tbWVudHMuc2l6ZSgpKTsKKworICAgIHNpemVf
dCBpID0gbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcjsKKyAgICBzaXplX3QgY29tbWVudFBDID0g
Y29tbWVudHNbaV0ucGM7CisgICAgaWYgKGNvbW1lbnRQQyA9PSBieXRlY29kZU9mZnNldCkgewor
ICAgICAgICAvLyBXZSd2ZSBnb3QgYSBtYXRjaC4gQWxsIGRvbmUhCisgICAgICAgIG1fYnl0ZWNv
ZGVDb21tZW50SXRlcmF0b3IgPSBpOworICAgICAgICByZXN1bHQgPSBjb21tZW50c1tpXS5zdHJp
bmc7CisgICAgfSBlbHNlIGlmIChjb21tZW50UEMgPiBieXRlY29kZU9mZnNldCkgeworICAgICAg
ICAvLyBUaGUgY3VycmVudCBjb21tZW50IGlzIGFscmVhZHkgZ3JlYXRlciB0aGFuIHRoZSByZXF1
ZXN0ZWQgUEMuCisgICAgICAgIC8vIFN0YXJ0IHNlYXJjaGluZyBmcm9tIHRoZSBmaXJzdCBjb21t
ZW50LgorICAgICAgICBpID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlcndpc2Us
IHRoZSBjdXJyZW50IGNvbW1lbnQncyBQQyBpcyBsZXNzIHRoYW4gdGhlIHJlcXVlc3RlZCBQQy4K
KyAgICAgICAgLy8gSGVuY2UsIHdlIGNhbiBqdXN0IHN0YXJ0IHNlYXJjaGluZyBmcm9tIHRoZSBu
ZXh0IGNvbW1lbnQgaW4gdGhlCisgICAgICAgIC8vIGxpc3QuCisgICAgICAgIGkrKzsKKyAgICB9
CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIHN0aWxsIG5vdCBmb3VuZCwgZG8gYSBsaW5lYXIg
c2VhcmNoIGluIHRoZSByYW5nZQorICAgIC8vIHRoYXQgd2UndmUgZGV0ZXJtaW5lZCBhYm92ZS4K
KyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBmb3IgKDsgaSA8IGNvbW1lbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBjb21tZW50UEMgPSBjb21tZW50c1tpXS5wYzsKKyAgICAgICAg
ICAgIGlmIChjb21tZW50UEMgPT0gYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBjb21tZW50c1tpXS5zdHJpbmc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29tbWVudHNbaV0ucGMgPiBieXRlY29kZU9mZnNl
dCkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBjdXJyZW50IGNvbW1lbnQgUEMgaXMgYWxyZWFk
eSBwYXN0IHRoZSByZXF1ZXN0ZWQKKyAgICAgICAgICAgICAgICAvLyBieXRlY29kZU9mZnNldC4g
SGVuY2UsIHRoZXJlIGFyZSBubyBtb3JlIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgLy8gbWF0
Y2hlcy4gSnVzdCBmYWlsLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gVXBkYXRlIHRoZSBpdGVyYXRvciB0byBwb2ludCB0
byB0aGUgbmV4dCBjb21tZW50LgorICAgIGlmICgrK2kgPj0gbnVtYmVyT2ZDb21tZW50cykgewor
ICAgICAgICAvLyBBdCBtb3N0IHBvaW50IHRvIHRoZSBsYXN0IGNvbW1lbnQgZW50cnkuIFRoaXMg
ZW5zdXJlcyB0aGF0IHRoZQorICAgICAgICAvLyBuZXh0IHRpbWUgd2UgY2FsbCB0aGlzIGZ1bmN0
aW9uLCB0aGUgcXVpY2sgY2hlY2tzIHdpbGwgYXQgbGVhc3QKKyAgICAgICAgLy8gaGF2ZSBvbmUg
ZW50cnkgdG8gY2hlY2sgYW5kIGNhbiBmYWlsIGZhc3QgaWYgYXBwcm9wcmlhdGUuCisgICAgICAg
IGkgPSBudW1iZXJPZkNvbW1lbnRzIC0gMTsKKyAgICB9CisgICAgbV9ieXRlY29kZUNvbW1lbnRJ
dGVyYXRvciA9IGk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZUNvbW1lbnRzKCkKK3sKKyAgICBWZWN0b3I8Q29tbWVudD4mIGNvbW1lbnRzID0g
bV9ieXRlY29kZUNvbW1lbnRzOworICAgIHByaW50ZigiQ29tbWVudHMgZm9yIGNvZGVibG9jayAl
cDogc2l6ZSAlbHVcbiIsIHRoaXMsIGNvbW1lbnRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb21tZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgcHJpbnRmKCIgICAgIHBj
ICVsdSA6ICclcydcbiIsIGNvbW1lbnRzW2ldLnBjLCBjb21tZW50c1tpXS5zdHJpbmcpOworICAg
IHByaW50ZigiRW5kIG9mIGNvbW1lbnRzIGZvciBjb2RlYmxvY2sgJXBcbiIsIHRoaXMpOworfQor
I2VuZGlmIC8vIFVTRV9CWVRFQ09ERV9DT01NRU5UUworCiBIYW5kbGVySW5mbyogQ29kZUJsb2Nr
OjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAg
ICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEy
MTM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNv
ZGVUeXBlLmgiCisjaW5jbHVkZSAiQ29tbWVudC5oIgogI2luY2x1ZGUgIkNvbXBhY3RKSVRDb2Rl
TWFwLmgiCiAjaW5jbHVkZSAiREZHQ29kZUJsb2Nrcy5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5o
IgpAQCAtNzAsNiArNzEsMzAgQEAKICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisvLyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyB0byBy
ZWNvcmQgYnl0ZWNvZGUgZ2VuZXJhdG9yIGNvbW1lbnRzIGZvciB0aGUKKy8vIGJ5dGVjb2RlcyB0
aGF0IGl0IGdlbmVyYXRlcy4gVGhpcyB3aWxsIGFsbG93IENvZGVCbG9jazo6ZHVtcCgpIHRvCisv
LyBwcm92aWRlIHNvbWUgY29udGV4dHVhbCBpbmZvIGFib3V0IHRoZSBieXRlY29kZXMuCisvLwor
Ly8gVGhlIHdheSB0aGlzIGNvbW1lbnQgc3lzdGVtIHdvcmtzIGlzIGFzIGZvbGxvd3M6CisvLyAx
LiBUaGUgQnl0ZWNvZGVHZW5lcmF0b3IgY2FsbHMgcHJlcGVuZENvbW1lbnQoKSB3aXRoIGEgY29u
c3RhbnQgY29tbWVudAorLy8gICAgc3RyaW5nIGluIC50ZXh0LiBUaGUgc3RyaW5nIG11c3Qgbm90
IGJlIGEgc3RhY2sgb3IgaGVhcCBhbGxvY2F0ZWQKKy8vICAgIHN0cmluZy4KKy8vIDIuIFdoZW4g
dGhlIEJ5dGVjb2RlR2VuZXJhdG9yJ3MgZW1pdE9wY29kZSgpIGlzIGNhbGxlZCwgdGhlIGxhc3QK
Ky8vICAgIHByZXBlbmRlZCBjb21tZW50IHdpbGwgYmUgcmVjb3JkZWQgd2l0aCB0aGUgUEMgb2Yg
dGhlIG9wY29kZSBiZWluZworLy8gICAgZW1pdHRlZC4gVGhpcyBjb21tZW50IGlzIGJlaW5nIHJl
Y29yZGVkIGluIHRoZSBDb2RlQmxvY2sncworLy8gICAgbV9ieXRlY29kZUNvbW1lbnRzLgorLy8g
My4gV2hlbiBDb2RlQmxvY2s6OmR1bXAoKSBpcyBjYWxsZWQsIGl0IHdpbGwgcGFpciB1cCB0aGUg
Y29tbWVudHMgd2l0aAorLy8gICAgdGhlaXIgY29ycmVzcG9uZGluZyBieXRlY29kZXMgYmFzZWQg
b24gdGhlIGJ5dGVjb2RlIGFuZCBjb21tZW50J3MKKy8vICAgIFBDLiBJZiBhIG1hdGNoaW5nIHBh
aXIgaXMgZm91bmQsIHRoZSBjb21tZW50IHdpbGwgYmUgcHJpbnRlZCBhZnRlcgorLy8gICAgdGhl
IGJ5dGVjb2RlLiBJZiBub3QsIG5vIGNvbW1lbnQgaXMgcHJpbnRlZC4KKy8vCisvLyBOT1RFOiBF
bmFibGluZyB0aGlzIHdpbGwgY29uc3VtZSBhZGRpdGlvbmFsIG1lbW9yeSBhdCBydW50aW1lIHRv
IHN0b3JlCisvLyB0aGUgY29tbWVudHMuIFNpbmNlIHRoZXNlIGNvbW1lbnRzIGFyZSBvbmx5IHVz
ZWZ1bCBmb3IgVk0gZGVidWdnaW5nCisvLyAoYXMgb3Bwb3NlZCB0byBhcHAgZGVidWdnaW5nKSwg
dGhpcyBmZWF0dXJlIGlzIHRvIGJlIGRpc2FibGVkIGJ5IGRlZmF1bHQsCisvLyBhbmQgY2FuIGJl
IGVuYWJsZWQgYXMgbmVlZGVkIGZvciBWTSBkZXZlbG9wbWVudCB1c2Ugb25seS4KKworLy8gI2Rl
ZmluZSBVU0VfQllURUNPREVfQ09NTUVOVFMKKwogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBERkdDb2RlQmxvY2tzOwpAQCAtMTU1LDYgKzE4MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgICAgIH0KIAorICAgICAg
ICB2b2lkIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGludCBsb2NhdGlvbik7CisjaWZk
ZWYgVVNFX0JZVEVDT0RFX0NPTU1FTlRTCisgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnRGb3JC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisgICAgICAgIHZvaWQgZHVt
cEJ5dGVjb2RlQ29tbWVudHMoKTsKKyNlbmRpZgorCiAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBp
bnQgbGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsK
ICAgICAgICAgdm9pZCBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgaW50JiBkaXZvdCwgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZz
ZXQpOwpAQCAtMzY1LDYgKzM5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmQ291
bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnM7IH0KICAgICAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5z
dHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KICAgICAgICAgCisj
aWZkZWYgVVNFX0JZVEVDT0RFX0NPTU1FTlRTCisgICAgICAgIFZlY3RvcjxDb21tZW50PiYgYnl0
ZWNvZGVDb21tZW50cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVDb21tZW50czsgfQorI2VuZGlmCisK
ICAgICAgICAgc2l6ZV90IHByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwogICAgICAgICAKICAg
ICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsKQEAgLTEzMDIsNiArMTMzNywxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdWludDE2X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcjsKIAogICAgICAgICBWZWN0b3I8TGluZUluZm8+IG1fbGluZUluZm87CisjaWZkZWYgVVNF
X0JZVEVDT0RFX0NPTU1FTlRTCisgICAgICAgIFZlY3RvcjxDb21tZW50PiAgbV9ieXRlY29kZUNv
bW1lbnRzOworICAgICAgICBzaXplX3QgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcjsKKyNlbmRp
ZgogCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVudC5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb21tZW50X2gKKyNkZWZp
bmUgQ29tbWVudF9oCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgQ29tbWVudCB7CisgICAg
c2l6ZV90IHBjOworICAgIGNvbnN0IGNoYXIqIHN0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gQ29tbWVudF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTIxMzgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXIuaCIKKyNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC0y
NDUsNiArMjQ2LDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBybwog
ICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3Bl
Q2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hh
aW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRh
YmxlKQorI2lmZGVmIFVTRV9CWVRFQ09ERV9DT01NRU5UUworICAgICwgbV9jdXJyZW50Q29tbWVu
dFN0cmluZygwKQorI2VuZGlmCiAgICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKICAgICAs
IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6
dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCkBAIC0yNzAsNiArMjc0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBybwogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIAor
ICAgIHByZXBlbmRDb21tZW50KCJlbnRlcmluZyBQcm9ncmFtIGJsb2NrIik7CiAgICAgZW1pdE9w
Y29kZShvcF9lbnRlcik7CiAgICAgY29kZUJsb2NrLT5zZXRHbG9iYWxEYXRhKG1fZ2xvYmFsRGF0
YSk7CiAKQEAgLTMyMiw2ICszMjcsOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoRnVuCiAgICAgLCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5n
bG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKSkKICAgICAsIG1fc2NvcGVDaGFp
bigqc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSwgc2NvcGVDaGFpbikKICAgICAsIG1fc3ltYm9sVGFi
bGUoc3ltYm9sVGFibGUpCisjaWZkZWYgVVNFX0JZVEVDT0RFX0NPTU1FTlRTCisgICAgLCBtX2N1
cnJlbnRDb21tZW50U3RyaW5nKDApCisjZW5kaWYKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9u
Qm9keSkKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fYWN0aXZhdGlvblJl
Z2lzdGVyKDApCkBAIC0zNDksOSArMzU3LDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihGdW4KIAogICAgIGNvZGVCbG9jay0+c2V0R2xvYmFsRGF0YShtX2dsb2JhbERh
dGEpOwogICAgIAorICAgIHByZXBlbmRDb21tZW50KCJlbnRlcmluZyBGdW5jdGlvbiBibG9jayIp
OwogICAgIGVtaXRPcGNvZGUob3BfZW50ZXIpOwogICAgIGlmIChtX2NvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKSB7CiAgICAgICAgIG1fYWN0aXZhdGlvblJlZ2lzdGVyID0gYWRkVmFy
KCk7CisgICAgICAgIHByZXBlbmRDb21tZW50KCJhY3RpdmF0aW9uIGZvciBGdWxsIFNjb3BlIENo
YWluIik7CiAgICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKG1fYWN0aXZhdGlvblJlZ2lzdGVy
KTsKICAgICAgICAgbV9jb2RlQmxvY2stPnNldEFjdGl2YXRpb25SZWdpc3RlcihtX2FjdGl2YXRp
b25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQpAQCAtMzY4LDEwICszNzgsMTMgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bgogICAgICAgICBjb2RlQmxvY2stPnNl
dEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIsIHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3Rlci0+aW5kZXgoKSA9PSBKU0M6OnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKTsKIAorICAgICAgICBwcmVwZW5kQ29t
bWVudCgiYXJndW1lbnRzIGZvciBGdWxsIFNjb3BlIENoYWluIik7CiAgICAgICAgIGVtaXRJbml0
TGF6eVJlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKTsKKyAgICAgICAgcHJlcGVuZENvbW1lbnQo
InVubW9kaWZpZWQgYXJndW1lbnRzIGZvciBGdWxsIFNjb3BlIENoYWluIik7CiAgICAgICAgIGVt
aXRJbml0TGF6eVJlZ2lzdGVyKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcik7CiAgICAgICAg
IAogICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAg
ICBwcmVwZW5kQ29tbWVudCgiY3JlYXRlIGFyZ3VtZW50cyBmb3Igc3RyaWN0IG1vZGUiKTsKICAg
ICAgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2FyZ3VtZW50cyk7CiAgICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAg
ICB9CkBAIC0zODAsNiArMzkzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKEZ1bgogICAgICAgICAvLyBpdCBmcm9tIGEgY2FsbCBmcmFtZS4gIEluIHRoZSBsb25nLXRl
cm0gaXQgc2hvdWxkIHN0b3AgZG9pbmcgdGhhdCAoPHJkYXI6Ly9wcm9ibGVtLzY5MTE4ODY+KSwK
ICAgICAgICAgLy8gYnV0IGZvciBub3cgd2UgZm9yY2UgZWFnZXIgY3JlYXRpb24gb2YgdGhlIGFy
Z3VtZW50cyBvYmplY3Qgd2hlbiBkZWJ1Z2dpbmcuCiAgICAgICAgIGlmIChtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzKSB7CisgICAgICAgICAgICBwcmVwZW5kQ29tbWVudCgiY3JlYXRlIGFyZ3VtZW50
cyBmb3IgZGVidWcgaG9va3MiKTsKICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2Fy
Z3VtZW50cyk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVn
aXN0ZXItPmluZGV4KCkpOwogICAgICAgICB9CkBAIC0zOTgsMTAgKzQxMiwxMiBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAgICAgICAgICAgICBpZiAoZnVuY3Rp
b25Cb2R5LT5jYXB0dXJlcyhpZGVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1faGFzQ3Jl
YXRlZEFjdGl2YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgbV9oYXNDcmVhdGVkQWN0aXZh
dGlvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJhY3RpdmF0
aW9uIGZvciBjYXB0dXJlZCB2YXJzIik7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUo
b3BfY3JlYXRlX2FjdGl2YXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBtX2Z1bmN0aW9ucy5hZGQoaWRlbnQuaW1wbCgpKTsKKyAgICAg
ICAgICAgICAgICBwcmVwZW5kQ29tbWVudCgiY2FwdHVyZWQgZnVuY3Rpb24gdmFyIik7CiAgICAg
ICAgICAgICAgICAgZW1pdE5ld0Z1bmN0aW9uKGFkZFZhcihpZGVudCwgZmFsc2UpLCBmdW5jdGlv
bik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxNCw2ICs0MzAsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAgICAgYm9vbCBjYW5MYXppbHlDcmVh
dGVGdW5jdGlvbnMgPSAhZnVuY3Rpb25Cb2R5LT5uZWVkc0FjdGl2YXRpb25Gb3JNb3JlVGhhblZh
cmlhYmxlcygpICYmICFtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOwogICAgIGlmICghY2FuTGF6aWx5
Q3JlYXRlRnVuY3Rpb25zICYmICFtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uKSB7CiAgICAgICAgIG1f
aGFzQ3JlYXRlZEFjdGl2YXRpb24gPSB0cnVlOworICAgICAgICBwcmVwZW5kQ29tbWVudCgiY2Fu
bm90IGxhemlseSBjcmVhdGUgZnVuY3Rpb25zIik7CiAgICAgICAgIGVtaXRPcGNvZGUob3BfY3Jl
YXRlX2FjdGl2YXRpb24pOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9hY3RpdmF0
aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIH0KQEAgLTQyOCw2ICs0NDUsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmVnID0gYWRkVmFyKGlkZW50LCBmYWxzZSk7CiAgICAgICAgICAgICAvLyBEb24n
dCBsYXppbHkgY3JlYXRlIGZ1bmN0aW9ucyB0aGF0IG92ZXJyaWRlIHRoZSBuYW1lICdhcmd1bWVu
dHMnCiAgICAgICAgICAgICAvLyBhcyB0aGlzIHdvdWxkIGNvbXBsaWNhdGUgbGF6eSBpbnN0YW50
aWF0aW9uIG9mIGFjdHVhbCBhcmd1bWVudHMuCisgICAgICAgICAgICBwcmVwZW5kQ29tbWVudCgi
YSBmdW5jdGlvbiB0aGF0IG92ZXJyaWRlICdhcmd1bWVudHMnIik7CiAgICAgICAgICAgICBpZiAo
IWNhbkxhemlseUNyZWF0ZUZ1bmN0aW9ucyB8fCBpZGVudCA9PSBwcm9wZXJ0eU5hbWVzKCkuYXJn
dW1lbnRzKQogICAgICAgICAgICAgICAgIGVtaXROZXdGdW5jdGlvbihyZWcuZ2V0KCksIGZ1bmN0
aW9uKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtNDYwLDYgKzQ3OCw3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICBwcmVzZXJ2ZUxhc3RWYXIoKTsKIAog
ICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKKyAgICAgICAgcHJlcGVuZENvbW1lbnQoIid0aGlz
JyBiZWNhdXNlIHdlIGFyZSBhIENvbnN0cnVjdG9yIGZ1bmN0aW9uIik7CiAgICAgICAgIGVtaXRP
cGNvZGUob3BfY3JlYXRlX3RoaXMpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90
aGlzUmVnaXN0ZXIuaW5kZXgoKSk7CiAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSAmJiAoZnVuY3Rpb25Cb2R5LT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2
YWwoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSkgewpAQCAtNDc1LDYgKzQ5NCw5IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihFdmEKICAgICAsIG1fc2hvdWxkRW1p
dFJpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmpl
Y3QuZ2V0KCkpKQogICAgICwgbV9zY29wZUNoYWluKCpzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBz
Y29wZUNoYWluKQogICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKKyNpZmRlZiBVU0Vf
QllURUNPREVfQ09NTUVOVFMKKyAgICAsIG1fY3VycmVudENvbW1lbnRTdHJpbmcoMCkKKyNlbmRp
ZgogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxv
Y2spCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KQpAQCAtNTAwLDYgKzUyMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihFdmEKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2Jhc2VTY29wZURlcHRo
KQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIAor
ICAgIHByZXBlbmRDb21tZW50KCJlbnRlcmluZyBFdmFsIGJsb2NrIik7CiAgICAgZW1pdE9wY29k
ZShvcF9lbnRlcik7CiAgICAgY29kZUJsb2NrLT5zZXRHbG9iYWxEYXRhKG1fZ2xvYmFsRGF0YSk7
CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CkBAIC02NTgsMTAgKzY4MSwz
MSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3Bjb2RlKE9wY29kCiAgICAgQVNTRVJU
KG9wY29kZVBvc2l0aW9uIC0gbV9sYXN0T3Bjb2RlUG9zaXRpb24gPT0gb3Bjb2RlTGVuZ3RoKG1f
bGFzdE9wY29kZUlEKSB8fCBtX2xhc3RPcGNvZGVJRCA9PSBvcF9lbmQpOwogICAgIG1fbGFzdE9w
Y29kZVBvc2l0aW9uID0gb3Bjb2RlUG9zaXRpb247CiAjZW5kaWYKKyAgICBlbWl0Q29tbWVudCgp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5n
ZXRPcGNvZGUob3Bjb2RlSUQpKTsKICAgICBtX2xhc3RPcGNvZGVJRCA9IG9wY29kZUlEOwogfQog
CisjaWZkZWYgVVNFX0JZVEVDT0RFX0NPTU1FTlRTCisvLyBSZWNvcmQgYSBjb21tZW50IGluIHRo
ZSBDb2RlQmxvY2sncyBjb21tZW50cyBsaXN0IGZvciB0aGUgY3VycmVudCBvcGNvZGUKKy8vIHRo
YXQgaXMgYWJvdXQgdG8gYmUgZW1pdHRlZC4KK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b21tZW50KCkKK3sKKyAgICBpZiAobV9jdXJyZW50Q29tbWVudFN0cmluZykgeworICAgICAgICBz
aXplX3Qgb3Bjb2RlUG9zaXRpb24gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAgIENv
bW1lbnQgY29tbWVudCA9IHsgb3Bjb2RlUG9zaXRpb24sIG1fY3VycmVudENvbW1lbnRTdHJpbmcg
fTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmJ5dGVjb2RlQ29tbWVudHMoKS5hcHBlbmQoY29tbWVu
dCk7CisgICAgICAgIG1fY3VycmVudENvbW1lbnRTdHJpbmcgPSAwOworICAgIH0KK30KKworLy8g
UmVnaXN0ZXIgYSBjb21tZW50IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmV4dCBvcGNvZGUg
dGhhdCB3aWxsIGJlIGVtaXR0ZWQuCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVwZW5kQ29t
bWVudChjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgbV9jdXJyZW50Q29tbWVudFN0cmluZyA9
IHN0cmluZzsKK30KKyNlbmRpZgorCiBWYWx1ZVByb2ZpbGUqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHJvZmlsZWRPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CiAjaWYgRU5BQkxFKFZBTFVF
X1BST0ZJTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTIxMzgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NDIsNiArNTQyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCisjaWZkZWYgVVNFX0JZVEVD
T0RFX0NPTU1FTlRTCisgICAgICAgIHZvaWQgZW1pdENvbW1lbnQoKTsKKyAgICAgICAgdm9pZCBw
cmVwZW5kQ29tbWVudChjb25zdCBjaGFyKiBzdHJpbmcpOworI2Vsc2UKKyAgICAgICAgQUxXQVlT
X0lOTElORSB2b2lkIGVtaXRDb21tZW50KCkgeyB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBwcmVwZW5kQ29tbWVudChjb25zdCBjaGFyKikgeyB9CisjZW5kaWYKKwogICAgICAgICB2b2lk
IGVtaXRPcGNvZGUoT3Bjb2RlSUQpOwogICAgICAgICBWYWx1ZVByb2ZpbGUqIGVtaXRQcm9maWxl
ZE9wY29kZShPcGNvZGVJRCk7CiAgICAgICAgIHZvaWQgcmV0cmlldmVMYXN0QmluYXJ5T3AoaW50
JiBkc3RJbmRleCwgaW50JiBzcmMxSW5kZXgsIGludCYgc3JjMkluZGV4KTsKQEAgLTYyMyw2ICs2
MzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+JiBp
bnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgICAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUoKSB7IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQorI2lmZGVmIFVT
RV9CWVRFQ09ERV9DT01NRU5UUworICAgICAgICBWZWN0b3I8Q29tbWVudD4mIGNvbW1lbnRzKCkg
eyByZXR1cm4gbV9jb21tZW50czsgfQorI2VuZGlmCiAKICAgICAgICAgYm9vbCBzaG91bGRPcHRp
bWl6ZUxvY2FscygpCiAgICAgICAgIHsKQEAgLTY2NCw2ICs2NzUsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0cm9uZzxTY29wZUNoYWluTm9kZT4gbV9zY29wZUNoYWluOwogICAgICAg
ICBTeW1ib2xUYWJsZSogbV9zeW1ib2xUYWJsZTsKIAorI2lmZGVmIFVTRV9CWVRFQ09ERV9DT01N
RU5UUworICAgICAgICBWZWN0b3I8Q29tbWVudD4gbV9jb21tZW50czsKKyAgICAgICAgY29uc3Qg
Y2hhciAqbV9jdXJyZW50Q29tbWVudFN0cmluZzsKKyNlbmRpZgorCiAgICAgICAgIFNjb3BlTm9k
ZSogbV9zY29wZU5vZGU7CiAgICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149842</attachid>
            <date>2012-06-27 18:22:03 -0700</date>
            <delta_ts>2012-06-28 12:50:35 -0700</delta_ts>
            <desc>Rev 1: removed a tab that snuck in.</desc>
            <filename>bug-90095-rev1.patch</filename>
            <type>text/plain</type>
            <size>67709</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEyLTA2LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGRpbmcgYSBjb21tZW50aW5nIHV0aWxpdHkgdG8gcmVjb3JkIEJ5dGVjb2RlR2VuZXJhdG9yIGNv
bW1lbnRzCisgICAgICAgIHdpdGggb3Bjb2RlcyB0aGF0IGFyZSBlbWl0dGVkLiAgUHJlc2VudGx5
LCB0aGUgY29tbWVudHMgY2FuIG9ubHkKKyAgICAgICAgYmUgY29uc3RhbnQgc3RyaW5ncy4gIEFk
ZGluZyBjb21tZW50cyBmb3Igb3Bjb2RlcyBpcyBvcHRpb25hbC4KKyAgICAgICAgSWYgYSBjb21t
ZW50IGlzIGFkZGVkLCB0aGUgY29tbWVudCB3aWxsIGJlIHByaW50ZWQgZm9sbG93aW5nIHRoZQor
ICAgICAgICBvcGNvZGUgd2hlbiBDb2RlQmxvY2s6OmR1bXAoKSBpcyBjYWxsZWQuCisKKyAgICAg
ICAgVGhpcyB1dGlsaXR5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFuZCBpcyBvbmx5IG1lYW50
IGZvciBWTQorICAgICAgICBkZXZlbG9wbWVudCBwdXJwb3Nlcy4gIEl0IHNob3VsZCBub3QgYmUg
ZW5hYmxlIGZvciBwcm9kdWN0IGJ1aWxkcy4KKworICAgICAgICBUbyBlbmFibGUgdGhpcyB1dGls
aXR5LCB1bmNvbW1lbnQgdGhlICNkZWZpbmUgZm9yIFVTRV9CWVRFQ09ERV9DT01NRU5UUworICAg
ICAgICBpbiBDb2RlQmxvY2suaC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTAwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUpOiBEdW1wcyB0aGUgY29tbWVudC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRVbmFyeU9wKTogQWRkIGNvbW1lbnQg
ZHVtcHMuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRCaW5hcnlPcCk6IEFkZCBjb21t
ZW50IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50Q29uZGl0aW9uYWxKdW1w
KTogQWRkIGNvbW1lbnQgZHVtcHMuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRDYWxs
T3ApOiBBZGQgY29tbWVudCBkdW1wcy4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludFB1
dEJ5SWRPcCk6IEFkZCBjb21tZW50IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1
bXApOiBBZGQgY29tbWVudCBkdW1wcy4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvbW1lbnRGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgICAgICBGaW5kcyB0aGUgY29tbWVudCBmb3IgYW4gb3Bjb2RlIGlmIGF2YWlsYWJs
ZS4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50cyk6CisgICAg
ICAgICAgICBGb3IgZGVidWdnaW5nIHdoZXRoZXIgY29tbWVudHMgYXJlIGNvbGxlY3RlZC4KKyAg
ICAgICAgICAgIEl0IGlzIG5vdCBiZWluZyBjYWxsZWQgYW55d2hlcmUuCisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmJ5dGVjb2RlQ29tbWVudHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvbW1lbnQu
aDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29tbWVudCk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRPcGNvZGUpOiBDYWxscyBlbWl0Q29tbWVudCgpLgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21tZW50KTogQWRkcyBj
b21tZW50IHRvIENvZGVCbG9jay4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBy
ZXBlbmRDb21tZW50KToKKyAgICAgICAgICAgIFJlZ2lzdGVycyBhIGNvbW1lbnQgZm9yIGVtaXRD
b21lbW50KCkgdG8gdXNlIGxhdGVyLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbW1lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6cHJlcGVuZENvbW1lbnQpOgorICAgICAgICAgICAgVGhlc2UgYXJlIGlubGluZWQg
dmVyc2lvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIHRoYXQgbnVsbGlmeSB0aGVtCisgICAgICAgICAg
ICB3aGVuIFVTRV9CWVRFQ09ERV9DT01NRU5UUyBpcyBub3QgZGVmaW5lZC4KKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmNvbW1lbnRzKToKKwogMjAxMi0wNi0yNyAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBkaXNhc3NlbWJseSBzaG91bGQg
YmUgZWFzaWVyIHRvIHJlYWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxMjEzODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVudC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvREZHRXhpdFByb2ZpbGUuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTIxMzgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1NjIsNiArMTU2Miwx
MCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxieXRlY29kZVxDb21tZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXEV2YWxDb2RlQ2FjaGUuaCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIxMzgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0NDYsNiArMTQ0Niw3IEBACiAJCUY2OTJB
ODg1MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVTdHJpbmcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg2MDI1NTU5N0QwMUZGNjBG
NyAvKiBVU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB9OwogCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGRUI2M0FBMjE1
OUI5REEzMDA4OTMyQTYgLyogQ29tbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmls
ZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KQEAgLTIzNjAsNiArMjM2MSw3IEBACiAJCQkJMEYwQjgzQjMxNEJDRjg1RTAw
ODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGMEI4M0FFMTRCQ0Y3MTQw
MDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAogCQkJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKKwkJCQlGRUI2M0FBMjE1OUI5REEzMDA4OTMyQTYg
LyogQ29tbWVudC5oICovLAogCQkJCTBGMEI4M0FDMTRCQ0Y2MDIwMDg4NUI0RiAvKiBMaW5lSW5m
by5oICovLAogCQkJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJ
bmZvLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMTIxMzgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJV
U3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogI2lmIEVOQUJM
RShERkdfSklUKQogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKQEAgLTkzLDYgKzk0LDE4IEBA
IHN0YXRpYyBDU3RyaW5nIGlkTmFtZShpbnQgaWQwLCBjb25zdCBJZGUKICAgICByZXR1cm4gbWFr
ZVVTdHJpbmcoaWRlbnQudXN0cmluZygpLCAiKEBpZCIsIFVTdHJpbmc6Om51bWJlcihpZDApLCAi
KSIpLnV0ZjgoKTsKIH0KIAordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGludCBsb2NhdGlvbikKK3sKKyNpZmRlZiBVU0VfQllURUNPREVfQ09NTUVOVFMKKyAg
ICBjb25zdCBjaGFyKiBjb21tZW50ID0gY29tbWVudEZvckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9u
KTsKKyAgICBpZiAoY29tbWVudCkKKyAgICAgICAgZGF0YUxvZygiXHRcdCA7ICVzIiwgY29tbWVu
dCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisjZW5kaWYKKyAgICBkYXRh
TG9nKCJcbiIpOworfQorCiBDU3RyaW5nIENvZGVCbG9jazo6cmVnaXN0ZXJOYW1lKEV4ZWNTdGF0
ZSogZXhlYywgaW50IHIpIGNvbnN0CiB7CiAgICAgaWYgKHIgPT0gbWlzc2luZ1RoaXNPYmplY3RN
YXJrZXIoKSkKQEAgLTE1Niw3ICsxNjksOCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRVbmFyeU9w
KEV4ZWNTdGF0ZSogCiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAKLSAgICBkYXRhTG9nKCJbJTRkXSAlc1x0XHQgJXMsICVz
XG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZGF0YUxvZygiWyU0ZF0gJXNcdFx0ICVzLCAl
cyIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpwcmludEJpbmFyeU9wKEV4ZWNTdGF0
ZSogZXhlYywgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRv
ciYgaXQsIGNvbnN0IGNoYXIqIG9wKQpAQCAtMTY0LDE0ICsxNzgsMTYgQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50QmluYXJ5T3AoRXhlY1N0YXRlKgogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgIGRh
dGFMb2coIlslNGRdICVzXHRcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVt
cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yJiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGl0LCBpbnQgbG9jYXRp
b24sIGNvbnN0IGNoYXIqIG9wKQogewogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nKCJbJTRkXSAl
c1x0XHQgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICBkYXRhTG9nKCJbJTRk
XSAlc1x0XHQgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogfQogCiB2b2lkIENvZGVCbG9jazo6cHJpbnRH
ZXRCeUlkT3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJiBpdCkKQEAgLTQwMiw3ICs0MTgsNyBAQCB2b2lkIENvZGVCbG9j
azo6cHJpbnRDYWxsT3AoRXhlY1N0YXRlKiBlCiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAg
ICBkYXRhTG9nKCJcbiIpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKICAgICBpdCArPSAyOwogfQogCkBAIC00MTEsNyArNDI3LDggQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICBkYXRhTG9nKCJbJTRkXSAlc1x0ICVzLCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1f
aWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
CisgICAgZGF0YUxvZygiWyU0ZF0gJXNcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIG9wLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBd
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgaXQgKz0gNTsKIH0KIApAQCAtNjUw
LDUyICs2NjcsNjEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwog
ICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47CiAgICAgc3dpdGNoIChleGVjLT5pbnRlcnBy
ZXRlcigpLT5nZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CiAgICAgICAgIGNhc2Ugb3BfZW50
ZXI6IHsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGVudGVyXG4iLCBsb2NhdGlvbik7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBlbnRlciIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gY3JlYXRlX2FjdGl2YXRpb24gJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjcmVhdGVfYWN0
aXZhdGlvbiAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVu
dHM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gY3JlYXRlX2FyZ3VtZW50c1x0ICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
Y3JlYXRlX2FyZ3VtZW50c1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW5p
dF9sYXp5X3JlZzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBpbml0X2xhenlfcmVnXHQgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBpbml0X2xhenlfcmVnXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9j
cmVhdGVfdGhpczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjcmVhdGVfdGhpcyAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGNyZWF0ZV90aGlzICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29udmVydF90
aGlzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGNvbnZlcnRfdGhpc1x0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY29u
dmVydF90aGlzXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwog
ICAgICAgICAgICAgKytpdDsgLy8gU2tpcCB2YWx1ZSBwcm9maWxlLgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IG5ld19vYmplY3RcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19vYmplY3RcdCAlcyIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewogICAgICAgICAgICAgaW50IGRz
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYXJn
dikuZGF0YSgpLCBhcmdjKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19hcnJheVx0
ICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgYXJndikuZGF0YSgpLCBhcmdjKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZlcjogewogICAgICAgICAg
ICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ3YgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfYXJyYXlfYnVmZmVyICVzLCAlZCwg
JWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIGFyZ3YsIGFy
Z2MpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2FycmF5X2J1ZmZlciAlcywgJWQs
ICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgYXJndiwgYXJn
Yyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19yZWdl
eHA6IHsKQEAgLTcwMywxNSArNzI5LDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByZTAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19yZWdleHBcdCAlcywgIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGlmIChyMCA+PTAgJiYg
cjAgPCAoaW50KW51bWJlck9mUmVnRXhwcygpKQotICAgICAgICAgICAgICAgIGRhdGFMb2coIiVz
XG4iLCByZWdleHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgZGF0YUxvZygiJXMiLCByZWdleHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiYmFkX3JlZ2V4cCglZClc
biIsIHJlMCk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiYmFkX3JlZ2V4cCglZCkiLCByZTAp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9tb3Y6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBtb3ZcdFx0
ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBt
b3ZcdFx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9ub3Q6IHsKQEAgLTc2MCwxMiArNzg4LDE0IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3ByZV9pbmM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHJlX2luY1x0XHQgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBwcmVfaW5jXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3ByZV9kZWM6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcHJlX2RlY1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwcmVfZGVjXHRc
dCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Bvc3RfaW5jOiB7CkBAIC04Mzcs
NyArODY3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOiB7CiAgICAgICAgICAg
ICBpbnQgYmFzZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gY2hlY2tfaGFzX2luc3RhbmNlXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCBiYXNlKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2hlY2tfaGFz
X2luc3RhbmNlXHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW5zdGFu
Y2VvZjogewpAQCAtODQ1LDcgKzg3Niw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjMg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGluc3RhbmNl
b2ZcdFx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCkpOworICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcywgJXMiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIzKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
bG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF90eXBlb2Y6IHsKQEAgLTg4Myw3ICs5MTUsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZTogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlXHRcdCAlcywg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlk
MCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gcmVzb2x2ZVx0XHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAg
ICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTg5MSwxNCArOTI0LDE2
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNraXBMZXZlbHMgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfc2tpcFx0ICVzLCAlcywg
JWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlk
MCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHNraXBMZXZlbHMpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV9za2lwXHQgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBd
KS5kYXRhKCksIHNraXBMZXZlbHMpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9nbG9iYWw6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV9nbG9i
YWxcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gcmVzb2x2ZV9nbG9iYWxcdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGl0ICs9IDM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtOTA4LDcgKzk0Myw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICAgICAgICAgIEpTVmFsdWUgc2NvcGUgPSBKU1ZhbHVlKCgrK2l0KS0+dS5qc0NlbGwu
Z2V0KCkpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGludCBkZXB0aCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pY1x0ICVzLCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhlYywgc2NvcGUpLnV0ZjgoKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCBkZXB0aCk7CisgICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMsICVzLCAl
cywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHZhbHVlVG9T
b3VyY2VTdHJpbmcoZXhlYywgc2NvcGUpLnV0ZjgoKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpLCBkZXB0aCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTkxNiw3ICs5NTIsOCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHNraXBMZXZlbHMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGdldF9zY29wZWRfdmFyXHQgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRleCwgc2tpcExldmVscyk7CisgICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfc2NvcGVkX3Zhclx0ICVzLCAlZCwgJWQiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGluZGV4LCBza2lwTGV2ZWxzKTsK
KyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtOTI0LDIw
ICs5NjEsMjMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAg
ICAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
c2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfc2NvcGVkX3Zh
clx0ICVkLCAlZCwgJXNcbiIsIGxvY2F0aW9uLCBpbmRleCwgc2tpcExldmVscywgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X3Nj
b3BlZF92YXJcdCAlZCwgJWQsICVzIiwgbG9jYXRpb24sIGluZGV4LCBza2lwTGV2ZWxzLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVn
aXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIGdldF9nbG9iYWxfdmFyXHQgJXMsIGclZCglcClcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3Rl
ckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBnZXRfZ2xvYmFsX3Zhclx0ICVzLCBnJWQoJXApIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVy
SW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyX3dhdGNoYWJsZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9
ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBn
ZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGVcdCAlcywgZyVkKCVwKVxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5k
ZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGdldF9nbG9iYWxfdmFyX3dhdGNoYWJsZVx0ICVzLCBnJWQoJXApIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJl
Z2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyKTsKKyAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAg
IGl0Kys7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NDUsMTMg
Kzk4NSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xv
YmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBv
aW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHB1dF9nbG9iYWxfdmFyXHQgZyVkKCVwKSwgJXMiLCBsb2NhdGlvbiwgbV9nbG9i
YWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9p
bnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazogewogICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUu
cmVnaXN0ZXJQb2ludGVyOwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhcl9jaGVja1x0IGclZCgl
cCksICVzXG4iLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJl
Z2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJfY2hlY2tc
dCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5k
ZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtOTYwLDIxICsxMDAyLDI0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IGlzU3RyaWN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSByZXNvbHZlX2Jhc2Ulc1x0ICVzLCAlc1xuIiwgbG9jYXRpb24sIGlzU3RyaWN0ID8gIl9z
dHJpY3QiIDogIiIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBt
X2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBy
ZXNvbHZlX2Jhc2Ulc1x0ICVzLCAlcyIsIGxvY2F0aW9uLCBpc1N0cmljdCA/ICJfc3RyaWN0IiA6
ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlm
aWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czogewogICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBlbnN1cmVf
cHJvcGVydHlfZXhpc3RzXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAlcywgJXMi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1f
aWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX2Jhc2U6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywgJXMsICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywgJXMsICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05ODIsNyArMTAyNyw4
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX3dpdGhfdGhpcyAlcywgJXMsICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7
CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX3dpdGhfdGhpcyAlcywgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwog
ICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDAx
LDcgKzEwNDcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X3N0cmluZ19sZW5ndGg6IHsKICAgICAgICAgICAgIHByaW50R2V0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCk7CiAgICAgICAgICAgICBwcmludEdldEJ5SWRDYWNo
ZVN0YXR1cyhleGVjLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBkYXRhTG9nKCJcbiIpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDogewpAQCAtMTAzOCw3ICsxMDg0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9n
ZXR0ZXJfc2V0dGVyXHQgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRh
dGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2V0dGVyX3NldHRlclx0ICVz
LCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBp
ZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbWV0aG9kX2NoZWNrOiB7CkBAIC0xMDcw
LDcgKzExMTcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiKSIpOwogICAgICAgICAgICAgfQogI2VuZGlmCi0gICAg
ICAgICAgICBkYXRhTG9nKCJcbiIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIHByaW50
R2V0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCk7CiAgICAgICAgICAgICBwcmludEdldEJ5SWRD
YWNoZVN0YXR1cyhleGVjLCBsb2NhdGlvbik7CkBAIC0xMDgxLDE0ICsxMTI4LDE2IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBkZWxfYnlfaWRcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBkZWxfYnlfaWRcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWRO
YW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfdmFsOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gZ2V0X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTEwOTYsNyArMTE0NSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGdldF9hcmd1bWVudF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBn
ZXRfYXJndW1lbnRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTEwNywzOCArMTE1Nyw0NCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHI1ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBnZXRfYnlfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjUpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfYnlfcG5hbWVcdCAl
cywgJXMsICVzLCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjQpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHI1KS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0
ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBkZWxfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIHB1dF9ieV9pbmRleFx0ICVzLCAldSwgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9ieV9pbmRleFx0ICVzLCAldSwg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG4wLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2ptcDogewogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam1wXHRcdCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gam1wXHRcdCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9v
cDogewogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3Bc
dFx0ICVkKC0+JWQpIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qdHJ1ZTogewpAQCAtMTE2
OSwxMjkgKzEyMjUsMTQ4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
dm9pZCogcG9pbnRlciA9ICgrK2l0KS0+dS5wb2ludGVyOwogICAgICAgICAgICAgaW50IG9mZnNl
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5lcV9w
dHJcdFx0ICVzLCAlcCwgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcG9pbnRlciwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVwLCAlZCgtPiVkKSIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcG9pbnRlciwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2psZXNzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9m
ZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gamxl
c3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRp
b24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gamxlc3NcdFx0ICVzLCAl
cywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfamxlc3NlcTogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAl
cywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVk
KSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+
JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+JWQp
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gam5sZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGpubGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9qbmxlc3NlcTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2puZ3JlYXRlcjogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIGpuZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbmdy
ZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3Bfam5ncmVhdGVyZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbmdy
ZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9sb29wX2lmX2xlc3M6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxv
b3BfaWZfbGVzc1x0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbG9vcF9pZl9sZXNzZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBsb29wX2lmX2xlc3NlcVx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gbG9vcF9pZl9sZXNzZXFcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcjogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGxvb3BfaWZfZ3JlYXRlclx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVj
b2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2dyZWF0ZXJlcTogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAl
ZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJlcVx0ICVzLCAlcywgJWQo
LT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9oaW50OiB7Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2hpbnRcbiIsIGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGxvb3BfaGludCIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbTogewogICAgICAgICAgICAg
aW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZh
dWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVl
UmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IHN3aXRjaF9pbW1cdCAlZCwgJWQoLT4lZCksICVzXG4iLCBsb2NhdGlvbiwgdGFibGVJbmRleCwg
ZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhl
Yywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBzd2l0Y2hfaW1tXHQgJWQsICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBk
ZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVj
LCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKICAgICAgICAgICAgIGludCB0YWJsZUlu
ZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBzd2l0Y2hfY2hh
clx0ICVkLCAlZCgtPiVkKSwgJXNcbiIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFy
Z2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGlu
ZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9j
aGFyXHQgJWQsICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFy
Z2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGlu
ZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9zdHJpbmdcdCAl
ZCwgJWQoLT4lZCksICVzXG4iLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwg
bG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVn
aXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBzd2l0Y2hfc3RyaW5n
XHQgJWQsICVkKC0+JWQpLCAlcyIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0
LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVS
ZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbmV3X2Z1bmM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgc2hvdWxkQ2hlY2sgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIG5ld19mdW5jXHRcdCAlcywgZiVkLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hvdWxkQ2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5j
aGVja2VkPiIpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2Z1bmNcdFx0ICVzLCBm
JWQsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hv
dWxkQ2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5jaGVja2VkPiIpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGYwID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfZnVuY19leHBcdCAl
cywgZiVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19mdW5jX2V4cFx0ICVzLCBmJWQiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewpAQCAtMTMwNywzNSArMTM4Miw0
MSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBpbnQgdGhpc1ZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJn
dW1lbnRzID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVn
aXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNh
bGxfdmFyYXJnc1x0ICVzLCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgdGhpc1ZhbHVlKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCBhcmd1bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVzLCAlcywg
JWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgdGhpc1ZhbHVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd1bWVu
dHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGVhcl9vZmZfYWN0aXZhdGlv
blx0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSB0ZWFyX29mZl9hY3RpdmF0aW9uXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSB0ZWFyX29mZl9hcmd1bWVudHMgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSB0ZWFy
X29mZl9hcmd1bWVudHMgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXQ6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gcmV0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJldFx0XHQgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsX3B1dF9yZXN1bHQ6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
Y2FsbF9wdXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNhbGxfcHV0X3Jlc3VsdFx0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cmV0X29iamVjdF9vcl90aGlzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjb25zdHJ1Y3Rvcl9yZXRcdFx0ICVz
ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2NvbnN0cnVjdDogewpAQCAtMTM0NiwxMyArMTQyNywxNSBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGNvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBzdHJjYXRcdFx0ICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGNv
dW50KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN0cmNhdFx0XHQgJXMsICVzLCAlZCIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIGNvdW50KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRvX3ByaW1pdGl2ZVx0ICVzLCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9nZXRfcG5hbWVzOiB7CkBAIC0xMzYxLDcgKzE0NDQsOCBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjIgPSBpdFszXS51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjMgPSBpdFs0XS51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gaXRbNV0udS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gZ2V0X3BuYW1lc1x0ICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGdldF9wbmFtZXNcdCAlcywgJXMsICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIzKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQgKz0g
T1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKSAtIDE7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTM3Miw2NyArMTQ1Niw3OSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgc2l6ZSA9IGl0WzRdLnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBpdGVyID0gaXRbNV0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IG9mZnNldCA9IGl0WzZdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5l
eHRfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGRlc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNp
emUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGl0ZXIpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXh0X3BuYW1lXHQg
JXMsICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgZGVzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgaSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgaXRlcikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfbmV4dF9wbmFtZSkgLSAxOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXNoX3Njb3BlOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIHB1c2hfc2NvcGVcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1c2hfc2NvcGVc
dCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3BvcF9zY29wZTogewotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gcG9wX3Njb3BlXG4iLCBsb2NhdGlvbik7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBwb3Bfc2NvcGUiLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1c2hfbmV3X3Njb3BlOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9uZXdfc2NvcGUgXHQlcywgJXMsICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1f
aWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXMi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1f
aWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2ptcF9zY29wZXM6
IHsKICAgICAgICAgICAgIGludCBzY29wZURlbHRhID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBqbXBfc2NvcGVzXHReJWQsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgc2NvcGVE
ZWx0YSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBqbXBfc2NvcGVzXHReJWQsICVkKC0+JWQpIiwgbG9jYXRpb24sIHNjb3BlRGVsdGEsIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9jYXRjaDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjYXRjaFx0XHQgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBjYXRjaFx0XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90aHJv
dzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSB0aHJvd1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSB0aHJvd1x0XHQg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6
IHsKICAgICAgICAgICAgIGludCBrMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gdGhyb3dfcmVmZXJlbmNlX2Vycm9yXHQgJXNcbiIsIGxvY2F0aW9uLCBj
b25zdGFudE5hbWUoZXhlYywgazAsIGdldENvbnN0YW50KGswKSkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIHRocm93X3JlZmVyZW5jZV9lcnJvclx0ICVzIiwgbG9jYXRpb24s
IGNvbnN0YW50TmFtZShleGVjLCBrMCwgZ2V0Q29uc3RhbnQoazApKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kZWJ1ZzogewogICAgICAgICAg
ICAgaW50IGRlYnVnSG9va0lEID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
Zmlyc3RMaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGFzdExpbmUg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlYnVnXHRc
dCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZp
cnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZGVidWdcdFx0
ICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0
TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wcm9maWxlX3dpbGxfY2FsbDogewogICAgICAgICAgICAgaW50IGZ1bmN0aW9uID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwcm9maWxlX3dpbGxf
Y2FsbCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgp
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2FsbDogewogICAg
ICAgICAgICAgaW50IGZ1bmN0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBwcm9maWxlX2RpZF9jYWxsXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBwcm9maWxlX2RpZF9jYWxsXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1
bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9lbmQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZW5kXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGVuZFx0
XHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjAxLDYgKzE2OTcsOSBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiAgICAgLCBtX29wdGltaXphdGlvbkRl
bGF5Q291bnRlcigwKQogICAgICwgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigwKQogICAg
ICwgbV9saW5lSW5mbyhvdGhlci5tX2xpbmVJbmZvKQorI2lmZGVmIFVTRV9CWVRFQ09ERV9DT01N
RU5UUworICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQorI2VuZGlmCiAjaWYgRU5B
QkxFKEpJVCkKICAgICAsIG1fY2FuQ29tcGlsZVdpdGhERkdTdGF0ZShERkc6OkNhcGFiaWxpdHlM
ZXZlbE5vdFNldCkKICNlbmRpZgpAQCAtMTY1Myw2ICsxNzUyLDkgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICwgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVy
KDApCiAgICAgLCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcigwKQogICAgICwgbV9yZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlcigwKQorI2lmZGVmIFVTRV9CWVRFQ09ERV9DT01NRU5UUworICAg
ICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1f
c291cmNlKTsKICAgICAKQEAgLTIxMjcsNiArMjIyOSw4MiBAQCB2b2lkIENvZGVCbG9jazo6c3Ry
b25nbHlWaXNpdFdlYWtSZWZlcmVuCiAjZW5kaWYgICAgCiB9CiAKKyNpZmRlZiBVU0VfQllURUNP
REVfQ09NTUVOVFMKKy8vIEZpbmRzIHRoZSBjb21tZW50IHN0cmluZyBmb3IgdGhlIHNwZWNpZmll
ZCBieXRlY29kZSBvZmZzZXQvUEMgaXMgYXZhaWxhYmxlLiAKK2NvbnN0IGNoYXIqIENvZGVCbG9j
azo6Y29tbWVudEZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorewor
ICAgIEFTU0VSVChieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CisKKyAg
ICBWZWN0b3I8Q29tbWVudD4mIGNvbW1lbnRzID0gbV9ieXRlY29kZUNvbW1lbnRzOworICAgIHNp
emVfdCBudW1iZXJPZkNvbW1lbnRzID0gY29tbWVudHMuc2l6ZSgpOworICAgIGNvbnN0IGNoYXIq
IHJlc3VsdCA9IDA7CisKKyAgICBpZiAoIW51bWJlck9mQ29tbWVudHMpCisgICAgICAgIHJldHVy
biAwOyAvLyBObyBjb21tZW50cyB0byBtYXRjaCB3aXRoLgorCisgICAgLy8gVGhlIG5leHQgbWF0
Y2ggaXMgbW9zdCBsaWtlbHkgdGhlIG5leHQgY29tbWVudCBpbiB0aGUgbGlzdC4KKyAgICAvLyBE
byBhIHF1aWNrIGNoZWNrIHRvIHNlZSBpZiB0aGF0IGlzIGEgbWF0Y2ggZmlyc3QuCisgICAgLy8g
bV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvciBzaG91bGQgYWxyZWFkeSBiZSBwb2ludGluZyB0byB0
aGUKKyAgICAvLyBuZXh0IGNvbW1lbnQgd2Ugc2hvdWxkIGNoZWNrLgorCisgICAgQVNTRVJUKG1f
Ynl0ZWNvZGVDb21tZW50SXRlcmF0b3IgPCBjb21tZW50cy5zaXplKCkpOworCisgICAgc2l6ZV90
IGkgPSBtX2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9yOworICAgIHNpemVfdCBjb21tZW50UEMgPSBj
b21tZW50c1tpXS5wYzsKKyAgICBpZiAoY29tbWVudFBDID09IGJ5dGVjb2RlT2Zmc2V0KSB7Cisg
ICAgICAgIC8vIFdlJ3ZlIGdvdCBhIG1hdGNoLiBBbGwgZG9uZSEKKyAgICAgICAgbV9ieXRlY29k
ZUNvbW1lbnRJdGVyYXRvciA9IGk7CisgICAgICAgIHJlc3VsdCA9IGNvbW1lbnRzW2ldLnN0cmlu
ZzsKKyAgICB9IGVsc2UgaWYgKGNvbW1lbnRQQyA+IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAg
IC8vIFRoZSBjdXJyZW50IGNvbW1lbnQgaXMgYWxyZWFkeSBncmVhdGVyIHRoYW4gdGhlIHJlcXVl
c3RlZCBQQy4KKyAgICAgICAgLy8gU3RhcnQgc2VhcmNoaW5nIGZyb20gdGhlIGZpcnN0IGNvbW1l
bnQuCisgICAgICAgIGkgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZSwg
dGhlIGN1cnJlbnQgY29tbWVudCdzIFBDIGlzIGxlc3MgdGhhbiB0aGUgcmVxdWVzdGVkIFBDLgor
ICAgICAgICAvLyBIZW5jZSwgd2UgY2FuIGp1c3Qgc3RhcnQgc2VhcmNoaW5nIGZyb20gdGhlIG5l
eHQgY29tbWVudCBpbiB0aGUKKyAgICAgICAgLy8gbGlzdC4KKyAgICAgICAgaSsrOworICAgIH0K
KworICAgIC8vIElmIHRoZSByZXN1bHQgaXMgc3RpbGwgbm90IGZvdW5kLCBkbyBhIGxpbmVhciBz
ZWFyY2ggaW4gdGhlIHJhbmdlCisgICAgLy8gdGhhdCB3ZSd2ZSBkZXRlcm1pbmVkIGFib3ZlLgor
ICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIGZvciAoOyBpIDwgY29tbWVudHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIGNvbW1lbnRQQyA9IGNvbW1lbnRzW2ldLnBjOworICAgICAgICAg
ICAgaWYgKGNvbW1lbnRQQyA9PSBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGNvbW1lbnRzW2ldLnN0cmluZzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb21tZW50c1tpXS5wYyA+IGJ5dGVjb2RlT2Zmc2V0
KSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIGN1cnJlbnQgY29tbWVudCBQQyBpcyBhbHJlYWR5
IHBhc3QgdGhlIHJlcXVlc3RlZAorICAgICAgICAgICAgICAgIC8vIGJ5dGVjb2RlT2Zmc2V0LiBI
ZW5jZSwgdGhlcmUgYXJlIG5vIG1vcmUgcG9zc2libGUKKyAgICAgICAgICAgICAgICAvLyBtYXRj
aGVzLiBKdXN0IGZhaWwuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIGl0ZXJhdG9yIHRvIHBvaW50IHRv
IHRoZSBuZXh0IGNvbW1lbnQuCisgICAgaWYgKCsraSA+PSBudW1iZXJPZkNvbW1lbnRzKSB7Cisg
ICAgICAgIC8vIEF0IG1vc3QgcG9pbnQgdG8gdGhlIGxhc3QgY29tbWVudCBlbnRyeS4gVGhpcyBl
bnN1cmVzIHRoYXQgdGhlCisgICAgICAgIC8vIG5leHQgdGltZSB3ZSBjYWxsIHRoaXMgZnVuY3Rp
b24sIHRoZSBxdWljayBjaGVja3Mgd2lsbCBhdCBsZWFzdAorICAgICAgICAvLyBoYXZlIG9uZSBl
bnRyeSB0byBjaGVjayBhbmQgY2FuIGZhaWwgZmFzdCBpZiBhcHByb3ByaWF0ZS4KKyAgICAgICAg
aSA9IG51bWJlck9mQ29tbWVudHMgLSAxOworICAgIH0KKyAgICBtX2J5dGVjb2RlQ29tbWVudEl0
ZXJhdG9yID0gaTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlQ29tbWVudHMoKQoreworICAgIFZlY3RvcjxDb21tZW50PiYgY29tbWVudHMgPSBt
X2J5dGVjb2RlQ29tbWVudHM7CisgICAgcHJpbnRmKCJDb21tZW50cyBmb3IgY29kZWJsb2NrICVw
OiBzaXplICVsdVxuIiwgdGhpcywgY29tbWVudHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvbW1lbnRzLnNpemUoKTsgKytpKQorICAgICAgICBwcmludGYoIiAgICAgcGMg
JWx1IDogJyVzJ1xuIiwgY29tbWVudHNbaV0ucGMsIGNvbW1lbnRzW2ldLnN0cmluZyk7CisgICAg
cHJpbnRmKCJFbmQgb2YgY29tbWVudHMgZm9yIGNvZGVibG9jayAlcFxuIiwgdGhpcyk7Cit9Cisj
ZW5kaWYgLy8gVVNFX0JZVEVDT0RFX0NPTU1FTlRTCisKIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6
OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAg
ICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTIx
MzgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29k
ZVR5cGUuaCIKKyNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiQ29tcGFjdEpJVENvZGVN
YXAuaCIKICNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgi
CkBAIC03MCw2ICs3MSwzMCBAQAogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKy8vIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIHRvIHJl
Y29yZCBieXRlY29kZSBnZW5lcmF0b3IgY29tbWVudHMgZm9yIHRoZQorLy8gYnl0ZWNvZGVzIHRo
YXQgaXQgZ2VuZXJhdGVzLiBUaGlzIHdpbGwgYWxsb3cgQ29kZUJsb2NrOjpkdW1wKCkgdG8KKy8v
IHByb3ZpZGUgc29tZSBjb250ZXh0dWFsIGluZm8gYWJvdXQgdGhlIGJ5dGVjb2Rlcy4KKy8vCisv
LyBUaGUgd2F5IHRoaXMgY29tbWVudCBzeXN0ZW0gd29ya3MgaXMgYXMgZm9sbG93czoKKy8vIDEu
IFRoZSBCeXRlY29kZUdlbmVyYXRvciBjYWxscyBwcmVwZW5kQ29tbWVudCgpIHdpdGggYSBjb25z
dGFudCBjb21tZW50CisvLyAgICBzdHJpbmcgaW4gLnRleHQuIFRoZSBzdHJpbmcgbXVzdCBub3Qg
YmUgYSBzdGFjayBvciBoZWFwIGFsbG9jYXRlZAorLy8gICAgc3RyaW5nLgorLy8gMi4gV2hlbiB0
aGUgQnl0ZWNvZGVHZW5lcmF0b3IncyBlbWl0T3Bjb2RlKCkgaXMgY2FsbGVkLCB0aGUgbGFzdAor
Ly8gICAgcHJlcGVuZGVkIGNvbW1lbnQgd2lsbCBiZSByZWNvcmRlZCB3aXRoIHRoZSBQQyBvZiB0
aGUgb3Bjb2RlIGJlaW5nCisvLyAgICBlbWl0dGVkLiBUaGlzIGNvbW1lbnQgaXMgYmVpbmcgcmVj
b3JkZWQgaW4gdGhlIENvZGVCbG9jaydzCisvLyAgICBtX2J5dGVjb2RlQ29tbWVudHMuCisvLyAz
LiBXaGVuIENvZGVCbG9jazo6ZHVtcCgpIGlzIGNhbGxlZCwgaXQgd2lsbCBwYWlyIHVwIHRoZSBj
b21tZW50cyB3aXRoCisvLyAgICB0aGVpciBjb3JyZXNwb25kaW5nIGJ5dGVjb2RlcyBiYXNlZCBv
biB0aGUgYnl0ZWNvZGUgYW5kIGNvbW1lbnQncworLy8gICAgUEMuIElmIGEgbWF0Y2hpbmcgcGFp
ciBpcyBmb3VuZCwgdGhlIGNvbW1lbnQgd2lsbCBiZSBwcmludGVkIGFmdGVyCisvLyAgICB0aGUg
Ynl0ZWNvZGUuIElmIG5vdCwgbm8gY29tbWVudCBpcyBwcmludGVkLgorLy8KKy8vIE5PVEU6IEVu
YWJsaW5nIHRoaXMgd2lsbCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5IGF0IHJ1bnRpbWUgdG8g
c3RvcmUKKy8vIHRoZSBjb21tZW50cy4gU2luY2UgdGhlc2UgY29tbWVudHMgYXJlIG9ubHkgdXNl
ZnVsIGZvciBWTSBkZWJ1Z2dpbmcKKy8vIChhcyBvcHBvc2VkIHRvIGFwcCBkZWJ1Z2dpbmcpLCB0
aGlzIGZlYXR1cmUgaXMgdG8gYmUgZGlzYWJsZWQgYnkgZGVmYXVsdCwKKy8vIGFuZCBjYW4gYmUg
ZW5hYmxlZCBhcyBuZWVkZWQgZm9yIFZNIGRldmVsb3BtZW50IHVzZSBvbmx5LgorCisvLyAjZGVm
aW5lIFVTRV9CWVRFQ09ERV9DT01NRU5UUworCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IERGR0NvZGVCbG9ja3M7CkBAIC0xNTUsNiArMTgwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICAgICAgfQogCisgICAgICAg
IHZvaWQgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoaW50IGxvY2F0aW9uKTsKKyNpZmRl
ZiBVU0VfQllURUNPREVfQ09NTUVOVFMKKyAgICAgICAgY29uc3QgY2hhciogY29tbWVudEZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBkdW1w
Qnl0ZWNvZGVDb21tZW50cygpOworI2VuZGlmCisKICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRs
ZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIGlu
dCBsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwog
ICAgICAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNl
dCk7CkBAIC0zNjUsNiArMzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZDb3Vu
dGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0
aW9uczsgfQogICAgICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0
cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgICAgICAKKyNp
ZmRlZiBVU0VfQllURUNPREVfQ09NTUVOVFMKKyAgICAgICAgVmVjdG9yPENvbW1lbnQ+JiBieXRl
Y29kZUNvbW1lbnRzKCkgeyByZXR1cm4gbV9ieXRlY29kZUNvbW1lbnRzOyB9CisjZW5kaWYKKwog
ICAgICAgICBzaXplX3QgcHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCk7CiAgICAgICAgIAogICAg
ICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2RlSUQpOwpAQCAtMTMwMiw2ICsxMzM3LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB1aW50MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyOwogCiAgICAgICAgIFZlY3RvcjxMaW5lSW5mbz4gbV9saW5lSW5mbzsKKyNpZmRlZiBVU0Vf
QllURUNPREVfQ09NTUVOVFMKKyAgICAgICAgVmVjdG9yPENvbW1lbnQ+ICBtX2J5dGVjb2RlQ29t
bWVudHM7CisgICAgICAgIHNpemVfdCBtX2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9yOworI2VuZGlm
CiAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db21tZW50LmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVudC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbW1lbnRfaAorI2RlZmlu
ZSBDb21tZW50X2gKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBDb21tZW50IHsKKyAgICBz
aXplX3QgcGM7CisgICAgY29uc3QgY2hhciogc3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBDb21tZW50X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lv
biAxMjEzODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGlt
aXplci5oIgorI2luY2x1ZGUgIkNvbW1lbnQuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTI0
NSw2ICsyNDYsOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvCiAg
ICAgLCBtX3Nob3VsZEVtaXRSaWNoU291cmNlSW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oc2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0LmdldCgpKSkKICAgICAsIG1fc2NvcGVDaGFpbigqc2NvcGVDaGFp
bi0+Z2xvYmFsRGF0YSwgc2NvcGVDaGFpbikKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltYm9sVGFi
bGUpCisjaWZkZWYgVVNFX0JZVEVDT0RFX0NPTU1FTlRTCisgICAgLCBtX2N1cnJlbnRDb21tZW50
U3RyaW5nKDApCisjZW5kaWYKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwg
bV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0
aGlzQXJndW1lbnRPZmZzZXQoKSkKQEAgLTI3MCw2ICsyNzQsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvCiAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3Mp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwogCisg
ICAgcHJlcGVuZENvbW1lbnQoImVudGVyaW5nIFByb2dyYW0gYmxvY2siKTsKICAgICBlbWl0T3Bj
b2RlKG9wX2VudGVyKTsKICAgICBjb2RlQmxvY2stPnNldEdsb2JhbERhdGEobV9nbG9iYWxEYXRh
KTsKIApAQCAtMzIyLDYgKzMyNyw5IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihGdW4KICAgICAsIG1fc2hvdWxkRW1pdFJpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNl
SW5mbyhzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpKQogICAgICwgbV9zY29wZUNoYWlu
KCpzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBzY29wZUNoYWluKQogICAgICwgbV9zeW1ib2xUYWJs
ZShzeW1ib2xUYWJsZSkKKyNpZmRlZiBVU0VfQllURUNPREVfQ09NTUVOVFMKKyAgICAsIG1fY3Vy
cmVudENvbW1lbnRTdHJpbmcoMCkKKyNlbmRpZgogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25C
b2R5KQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9hY3RpdmF0aW9uUmVn
aXN0ZXIoMCkKQEAgLTM0OSw5ICszNTcsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKEZ1bgogCiAgICAgY29kZUJsb2NrLT5zZXRHbG9iYWxEYXRhKG1fZ2xvYmFsRGF0
YSk7CiAgICAgCisgICAgcHJlcGVuZENvbW1lbnQoImVudGVyaW5nIEZ1bmN0aW9uIGJsb2NrIik7
CiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CiAgICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkpIHsKICAgICAgICAgbV9hY3RpdmF0aW9uUmVnaXN0ZXIgPSBhZGRWYXIo
KTsKKyAgICAgICAgcHJlcGVuZENvbW1lbnQoImFjdGl2YXRpb24gZm9yIEZ1bGwgU2NvcGUgQ2hh
aW4iKTsKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIobV9hY3RpdmF0aW9uUmVnaXN0ZXIp
OwogICAgICAgICBtX2NvZGVCbG9jay0+c2V0QWN0aXZhdGlvblJlZ2lzdGVyKG1fYWN0aXZhdGlv
blJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICB9CkBAIC0zNjgsMTAgKzM3OCwxMyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAgICAgICAgIGNvZGVCbG9jay0+c2V0
QXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAgICBB
U1NFUlRfVU5VU0VEKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgdW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyLT5pbmRleCgpID09IEpTQzo6dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpOwogCisgICAgICAgIHByZXBlbmRDb21t
ZW50KCJhcmd1bWVudHMgZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAgICAgZW1pdEluaXRM
YXp5UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICBwcmVwZW5kQ29tbWVudCgi
dW5tb2RpZmllZCBhcmd1bWVudHMgZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAgICAgZW1p
dEluaXRMYXp5UmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAg
IHByZXBlbmRDb21tZW50KCJjcmVhdGUgYXJndW1lbnRzIGZvciBzdHJpY3QgbW9kZSIpOwogICAg
ICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAg
IH0KQEAgLTM4MCw2ICszOTMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoRnVuCiAgICAgICAgIC8vIGl0IGZyb20gYSBjYWxsIGZyYW1lLiAgSW4gdGhlIGxvbmctdGVy
bSBpdCBzaG91bGQgc3RvcCBkb2luZyB0aGF0ICg8cmRhcjovL3Byb2JsZW0vNjkxMTg4Nj4pLAog
ICAgICAgICAvLyBidXQgZm9yIG5vdyB3ZSBmb3JjZSBlYWdlciBjcmVhdGlvbiBvZiB0aGUgYXJn
dW1lbnRzIG9iamVjdCB3aGVuIGRlYnVnZ2luZy4KICAgICAgICAgaWYgKG1fc2hvdWxkRW1pdERl
YnVnSG9va3MpIHsKKyAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJjcmVhdGUgYXJndW1lbnRz
IGZvciBkZWJ1ZyBob29rcyIpOwogICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJn
dW1lbnRzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdp
c3Rlci0+aW5kZXgoKSk7CiAgICAgICAgIH0KQEAgLTM5OCwxMCArNDEyLDEyIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAgICAgIGlmIChmdW5jdGlv
bkJvZHktPmNhcHR1cmVzKGlkZW50KSkgewogICAgICAgICAgICAgICAgIGlmICghbV9oYXNDcmVh
dGVkQWN0aXZhdGlvbikgewogICAgICAgICAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRBY3RpdmF0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcHJlcGVuZENvbW1lbnQoImFjdGl2YXRp
b24gZm9yIGNhcHR1cmVkIHZhcnMiKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShv
cF9jcmVhdGVfYWN0aXZhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIG1fZnVuY3Rpb25zLmFkZChpZGVudC5pbXBsKCkpOworICAgICAg
ICAgICAgICAgIHByZXBlbmRDb21tZW50KCJjYXB0dXJlZCBmdW5jdGlvbiB2YXIiKTsKICAgICAg
ICAgICAgICAgICBlbWl0TmV3RnVuY3Rpb24oYWRkVmFyKGlkZW50LCBmYWxzZSksIGZ1bmN0aW9u
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE0LDYgKzQzMCw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICBib29sIGNhbkxhemlseUNyZWF0
ZUZ1bmN0aW9ucyA9ICFmdW5jdGlvbkJvZHktPm5lZWRzQWN0aXZhdGlvbkZvck1vcmVUaGFuVmFy
aWFibGVzKCkgJiYgIW1fc2hvdWxkRW1pdERlYnVnSG9va3M7CiAgICAgaWYgKCFjYW5MYXppbHlD
cmVhdGVGdW5jdGlvbnMgJiYgIW1faGFzQ3JlYXRlZEFjdGl2YXRpb24pIHsKICAgICAgICAgbV9o
YXNDcmVhdGVkQWN0aXZhdGlvbiA9IHRydWU7CisgICAgICAgIHByZXBlbmRDb21tZW50KCJjYW5u
b3QgbGF6aWx5IGNyZWF0ZSBmdW5jdGlvbnMiKTsKICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVh
dGVfYWN0aXZhdGlvbik7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRp
b25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQpAQCAtNDI4LDYgKzQ0NSw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWcgPSBhZGRWYXIoaWRlbnQsIGZhbHNlKTsKICAgICAgICAgICAgIC8vIERvbid0
IGxhemlseSBjcmVhdGUgZnVuY3Rpb25zIHRoYXQgb3ZlcnJpZGUgdGhlIG5hbWUgJ2FyZ3VtZW50
cycKICAgICAgICAgICAgIC8vIGFzIHRoaXMgd291bGQgY29tcGxpY2F0ZSBsYXp5IGluc3RhbnRp
YXRpb24gb2YgYWN0dWFsIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJh
IGZ1bmN0aW9uIHRoYXQgb3ZlcnJpZGUgJ2FyZ3VtZW50cyciKTsKICAgICAgICAgICAgIGlmICgh
Y2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zIHx8IGlkZW50ID09IHByb3BlcnR5TmFtZXMoKS5hcmd1
bWVudHMpCiAgICAgICAgICAgICAgICAgZW1pdE5ld0Z1bmN0aW9uKHJlZy5nZXQoKSwgZnVuY3Rp
b24pOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00NjAsNiArNDc4LDcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bgogICAgIHByZXNlcnZlTGFzdFZhcigpOwogCiAg
ICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICBwcmVwZW5kQ29tbWVudCgiJ3RoaXMn
IGJlY2F1c2Ugd2UgYXJlIGEgQ29uc3RydWN0b3IgZnVuY3Rpb24iKTsKICAgICAgICAgZW1pdE9w
Y29kZShvcF9jcmVhdGVfdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Ro
aXNSZWdpc3Rlci5pbmRleCgpKTsKICAgICB9IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpICYmIChmdW5jdGlvbkJvZHktPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZh
bCgpIHx8IG1fc2hvdWxkRW1pdERlYnVnSG9va3MpKSB7CkBAIC00NzUsNiArNDk0LDkgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YQogICAgICwgbV9zaG91bGRFbWl0
UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVj
dC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNj
b3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQorI2lmZGVmIFVTRV9C
WVRFQ09ERV9DT01NRU5UUworICAgICwgbV9jdXJyZW50Q29tbWVudFN0cmluZygwKQorI2VuZGlm
CiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9j
aykKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkp
CkBAIC01MDAsNiArNTIyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KEV2YQogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IG1fYmFzZVNjb3BlRGVwdGgp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwogCisg
ICAgcHJlcGVuZENvbW1lbnQoImVudGVyaW5nIEV2YWwgYmxvY2siKTsKICAgICBlbWl0T3Bjb2Rl
KG9wX2VudGVyKTsKICAgICBjb2RlQmxvY2stPnNldEdsb2JhbERhdGEobV9nbG9iYWxEYXRhKTsK
ICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKQEAgLTY1OCwxMCArNjgxLDMx
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRPcGNvZGUoT3Bjb2QKICAgICBBU1NFUlQo
b3Bjb2RlUG9zaXRpb24gLSBtX2xhc3RPcGNvZGVQb3NpdGlvbiA9PSBvcGNvZGVMZW5ndGgobV9s
YXN0T3Bjb2RlSUQpIHx8IG1fbGFzdE9wY29kZUlEID09IG9wX2VuZCk7CiAgICAgbV9sYXN0T3Bj
b2RlUG9zaXRpb24gPSBvcGNvZGVQb3NpdGlvbjsKICNlbmRpZgorICAgIGVtaXRDb21tZW50KCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdsb2JhbERhdGEoKS0+aW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcGNvZGVJRCkpOwogICAgIG1fbGFzdE9wY29kZUlEID0gb3Bjb2RlSUQ7CiB9CiAK
KyNpZmRlZiBVU0VfQllURUNPREVfQ09NTUVOVFMKKy8vIFJlY29yZCBhIGNvbW1lbnQgaW4gdGhl
IENvZGVCbG9jaydzIGNvbW1lbnRzIGxpc3QgZm9yIHRoZSBjdXJyZW50IG9wY29kZQorLy8gdGhh
dCBpcyBhYm91dCB0byBiZSBlbWl0dGVkLgordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENv
bW1lbnQoKQoreworICAgIGlmIChtX2N1cnJlbnRDb21tZW50U3RyaW5nKSB7CisgICAgICAgIHNp
emVfdCBvcGNvZGVQb3NpdGlvbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICAgICAgQ29t
bWVudCBjb21tZW50ID0geyBvcGNvZGVQb3NpdGlvbiwgbV9jdXJyZW50Q29tbWVudFN0cmluZyB9
OworICAgICAgICBtX2NvZGVCbG9jay0+Ynl0ZWNvZGVDb21tZW50cygpLmFwcGVuZChjb21tZW50
KTsKKyAgICAgICAgbV9jdXJyZW50Q29tbWVudFN0cmluZyA9IDA7CisgICAgfQorfQorCisvLyBS
ZWdpc3RlciBhIGNvbW1lbnQgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0IG9wY29kZSB0
aGF0IHdpbGwgYmUgZW1pdHRlZC4KK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBlbmRDb21t
ZW50KGNvbnN0IGNoYXIqIHN0cmluZykKK3sKKyAgICBtX2N1cnJlbnRDb21tZW50U3RyaW5nID0g
c3RyaW5nOworfQorI2VuZGlmCisKIFZhbHVlUHJvZmlsZSogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcm9maWxlZE9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKIHsKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxMjEzODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0Miw2ICs1NDIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZnJpZW5kIGNsYXNzIExhYmVsOwogICAgICAgICAKKyNpZmRlZiBVU0VfQllURUNP
REVfQ09NTUVOVFMKKyAgICAgICAgdm9pZCBlbWl0Q29tbWVudCgpOworICAgICAgICB2b2lkIHBy
ZXBlbmRDb21tZW50KGNvbnN0IGNoYXIqIHN0cmluZyk7CisjZWxzZQorICAgICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgZW1pdENvbW1lbnQoKSB7IH0KKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHByZXBlbmRDb21tZW50KGNvbnN0IGNoYXIqKSB7IH0KKyNlbmRpZgorCiAgICAgICAgIHZvaWQg
ZW1pdE9wY29kZShPcGNvZGVJRCk7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogZW1pdFByb2ZpbGVk
T3Bjb2RlKE9wY29kZUlEKTsKICAgICAgICAgdm9pZCByZXRyaWV2ZUxhc3RCaW5hcnlPcChpbnQm
IGRzdEluZGV4LCBpbnQmIHNyYzFJbmRleCwgaW50JiBzcmMySW5kZXgpOwpAQCAtNjIzLDYgKzYz
MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZlY3RvcjxJbnN0cnVjdGlvbj4mIGlu
c3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgICAgIFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSgpIHsgcmV0dXJuICptX3N5bWJvbFRhYmxlOyB9CisjaWZkZWYgVVNF
X0JZVEVDT0RFX0NPTU1FTlRTCisgICAgICAgIFZlY3RvcjxDb21tZW50PiYgY29tbWVudHMoKSB7
IHJldHVybiBtX2NvbW1lbnRzOyB9CisjZW5kaWYKIAogICAgICAgICBib29sIHNob3VsZE9wdGlt
aXplTG9jYWxzKCkKICAgICAgICAgewpAQCAtNjY0LDYgKzY3NSwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgU3Ryb25nPFNjb3BlQ2hhaW5Ob2RlPiBtX3Njb3BlQ2hhaW47CiAgICAgICAg
IFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOwogCisjaWZkZWYgVVNFX0JZVEVDT0RFX0NPTU1F
TlRTCisgICAgICAgIFZlY3RvcjxDb21tZW50PiBtX2NvbW1lbnRzOworICAgICAgICBjb25zdCBj
aGFyICptX2N1cnJlbnRDb21tZW50U3RyaW5nOworI2VuZGlmCisKICAgICAgICAgU2NvcGVOb2Rl
KiBtX3Njb3BlTm9kZTsKICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKIAo=
</data>
<flag name="review"
          id="157996"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149986</attachid>
            <date>2012-06-28 12:44:22 -0700</date>
            <delta_ts>2012-06-28 13:16:38 -0700</delta_ts>
            <desc>Rev 2: applied changes based on Geoff&apos;s feedback.</desc>
            <filename>bug-90095-rev2.patch</filename>
            <type>text/plain</type>
            <size>68105</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEyLTA2LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGRpbmcgYSBjb21tZW50aW5nIHV0aWxpdHkgdG8gcmVjb3JkIEJ5dGVjb2RlR2VuZXJhdG9yIGNv
bW1lbnRzCisgICAgICAgIHdpdGggb3Bjb2RlcyB0aGF0IGFyZSBlbWl0dGVkLiAgUHJlc2VudGx5
LCB0aGUgY29tbWVudHMgY2FuIG9ubHkKKyAgICAgICAgYmUgY29uc3RhbnQgc3RyaW5ncy4gIEFk
ZGluZyBjb21tZW50cyBmb3Igb3Bjb2RlcyBpcyBvcHRpb25hbC4KKyAgICAgICAgSWYgYSBjb21t
ZW50IGlzIGFkZGVkLCB0aGUgY29tbWVudCB3aWxsIGJlIHByaW50ZWQgZm9sbG93aW5nIHRoZQor
ICAgICAgICBvcGNvZGUgd2hlbiBDb2RlQmxvY2s6OmR1bXAoKSBpcyBjYWxsZWQuCisKKyAgICAg
ICAgVGhpcyB1dGlsaXR5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFuZCBpcyBvbmx5IG1lYW50
IGZvciBWTQorICAgICAgICBkZXZlbG9wbWVudCBwdXJwb3Nlcy4gIEl0IHNob3VsZCBub3QgYmUg
ZW5hYmxlZCBmb3IgcHJvZHVjdCBidWlsZHMuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoaXMgdXRp
bGl0eSwgc2V0IEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyBpbiBDb2RlQmxvY2suaAorICAgICAg
ICB0byAxLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZSk6IER1bXBzIHRoZSBjb21tZW50LgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpwcmludFVuYXJ5T3ApOiBBZGQgY29tbWVudCBkdW1wcy4KKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEJpbmFyeU9wKTogQWRkIGNvbW1lbnQgZHVtcHMuCisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRDb25kaXRpb25hbEp1bXApOiBBZGQgY29tbWVu
dCBkdW1wcy4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludENhbGxPcCk6IEFkZCBjb21t
ZW50IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50UHV0QnlJZE9wKTogQWRk
IGNvbW1lbnQgZHVtcHMuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6IEFkZCBjb21t
ZW50IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Y29tbWVudEZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgICAg
IEZpbmRzIHRoZSBjb21tZW50IGZvciBhbiBvcGNvZGUgaWYgYXZhaWxhYmxlLgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZUNvbW1lbnRzKToKKyAgICAgICAgICAgIEZvciBk
ZWJ1Z2dpbmcgd2hldGhlciBjb21tZW50cyBhcmUgY29sbGVjdGVkLgorICAgICAgICAgICAgSXQg
aXMgbm90IGJlaW5nIGNhbGxlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0
ZWNvZGVDb21tZW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29tbWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChDb21tZW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE9wY29kZSk6IENhbGxzIGVtaXRDb21tZW50KCkuCisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbW1lbnQpOiBBZGRzIGNvbW1lbnQgdG8gQ29k
ZUJsb2NrLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHJlcGVuZENvbW1lbnQp
OgorICAgICAgICAgICAgUmVnaXN0ZXJzIGEgY29tbWVudCBmb3IgZW1pdENvbWVtbnQoKSB0byB1
c2UgbGF0ZXIuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q29tbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVw
ZW5kQ29tbWVudCk6CisgICAgICAgICAgICBUaGVzZSBhcmUgaW5saW5lZCB2ZXJzaW9ucyBvZiB0
aGVzZSBmdW5jdGlvbnMgdGhhdCBudWxsaWZ5IHRoZW0KKyAgICAgICAgICAgIHdoZW4gRU5BQkxF
X0JZVEVDT0RFX0NPTU1FTlRTIGlzIDAuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojpjb21tZW50cyk6CisKIDIwMTItMDYtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkcgZGlzYXNzZW1ibHkgc2hvdWxkIGJlIGVhc2llciB0byByZWFkCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTIxMzgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvbW1lbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFG
b3JtYXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMTM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYyLDYgKzE1NjIsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29tbWVudC5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxFdmFsQ29kZUNhY2hlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTM4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQAogCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYwRjcg
LyogVVN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQlGNjkyQTg4NjAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1
NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENv
bW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0yMzYw
LDYgKzIzNjEsNyBAQAogCQkJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxs
TGlua0luZm8uaCAqLywKIAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJ
bmZvLmNwcCAqLywKIAkJCQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZv
LmggKi8sCisJCQkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAqLywKIAkJ
CQkwRjBCODNBQzE0QkNGNjAyMDA4ODVCNEYgLyogTGluZUluZm8uaCAqLywKIAkJCQkwRjBCODNB
QTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovLAogCQkJCTBGMEI4
M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyMTM4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpbmNsdWRl
ICJERkdPcGVyYXRpb25zLmgiCkBAIC05Myw2ICs5NCwxOCBAQCBzdGF0aWMgQ1N0cmluZyBpZE5h
bWUoaW50IGlkMCwgY29uc3QgSWRlCiAgICAgcmV0dXJuIG1ha2VVU3RyaW5nKGlkZW50LnVzdHJp
bmcoKSwgIihAaWQiLCBVU3RyaW5nOjpudW1iZXIoaWQwKSwgIikiKS51dGY4KCk7CiB9CiAKK3Zv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShpbnQgbG9jYXRpb24p
Cit7CisjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorICAgIGNvbnN0IGNoYXIqIGNvbW1l
bnQgPSBjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQobG9jYXRpb24pOworICAgIGlmIChjb21tZW50
KQorICAgICAgICBkYXRhTG9nKCJcdFx0IDsgJXMiLCBjb21tZW50KTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKKyNlbmRpZgorICAgIGRhdGFMb2coIlxuIik7Cit9CisKIENT
dHJpbmcgQ29kZUJsb2NrOjpyZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgcikgY29u
c3QKIHsKICAgICBpZiAociA9PSBtaXNzaW5nVGhpc09iamVjdE1hcmtlcigpKQpAQCAtMTU2LDcg
KzE2OSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFVuYXJ5T3AoRXhlY1N0YXRlKiAKICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKIAotICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKKyAgICBkYXRhTG9nKCJbJTRkXSAlc1x0XHQgJXMsICVzIiwgbG9jYXRpb24sIG9wLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKIH0KIAog
dm9pZCBDb2RlQmxvY2s6OnByaW50QmluYXJ5T3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRp
b24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBpdCwgY29uc3QgY2hhciog
b3ApCkBAIC0xNjQsMTQgKzE3OCwxNiBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRCaW5hcnlPcChF
eGVjU3RhdGUqCiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ZGF0YUxvZygiWyU0ZF0gJXNcdFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgZGF0YUxvZygiWyU0ZF0gJXNcdFx0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKIH0K
IAogdm9pZCBDb2RlQmxvY2s6OnByaW50Q29uZGl0aW9uYWxKdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBWZWN0b3I8SW5zdHJ1
Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgaXQsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3Ap
CiB7CiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IG9mZnNldCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJWQoLT4lZClc
biIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUq
IGV4ZWMsIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3Im
IGl0KQpAQCAtNDAyLDcgKzQxOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludENhbGxPcChFeGVj
U3RhdGUqIGUKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGRhdGFMb2coIlxuIik7Cisg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgIGl0ICs9IDI7
CiB9CiAKQEAgLTQxMSw3ICs0MjcsOCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRQdXRCeUlkT3Ao
RXhlY1N0YXRlCiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
IGRhdGFMb2coIlslNGRdICVzXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICBkYXRhTG9nKCJbJTRk
XSAlc1x0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKICAgICBpdCArPSA1OwogfQogCkBAIC02NTAsNTIgKzY2Nyw2MSBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgaW50IGxvY2F0aW9uID0g
aXQgLSBiZWdpbjsKICAgICBzd2l0Y2ggKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlE
KGl0LT51Lm9wY29kZSkpIHsKICAgICAgICAgY2FzZSBvcF9lbnRlcjogewotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gZW50ZXJcbiIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGVudGVyIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9jcmVhdGVfYWN0aXZhdGlvbjogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjcmVhdGVfYWN0
aXZhdGlvbiAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
cmVhdGVfYXJndW1lbnRzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRzXHQg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGluaXRfbGF6eV9yZWdcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGluaXRfbGF6eV9yZWdc
dCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGNyZWF0ZV90aGlzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY3JlYXRlX3RoaXMgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb252ZXJ0X3RoaXM6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
Y29udmVydF90aGlzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICArK2l0OyAv
LyBTa2lwIHZhbHVlIHByb2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gbmV3X29iamVjdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIG5ld19hcnJheVx0ICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd2KS5kYXRhKCksIGFyZ2MpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2FycmF5XHQgJXMsICVzLCAlZCIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBh
cmd2KS5kYXRhKCksIGFyZ2MpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIG5ld19hcnJheV9idWZmZXIgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgYXJndiwgYXJnYyk7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBuZXdfYXJyYXlfYnVmZmVyICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBhcmdjKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDogewpAQCAtNzAzLDE1ICs3
MjksMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gbmV3X3JlZ2V4cFx0ICVzLCAiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKHIwID49MCAmJiByMCA8IChpbnQpbnVtYmVyT2ZS
ZWdFeHBzKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiJXNcbiIsIHJlZ2V4cE5hbWUocmUw
LCByZWdleHAocmUwKSkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIlcyIsIHJl
Z2V4cE5hbWUocmUwLCByZWdleHAocmUwKSkuZGF0YSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJiYWRfcmVnZXhwKCVkKVxuIiwgcmUwKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21vdjogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG1vdlx0XHQgJXMsICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG1vdlx0XHQgJXMsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X25vdDogewpAQCAtNzYwLDEyICs3ODgsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBwcmVfaW5jXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByZV9pbmNcdFx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2RlYzogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwcmVf
ZGVjXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByZV9kZWNcdFx0ICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcG9zdF9pbmM6IHsKQEAgLTgzNyw3ICs4NjcsOCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6IHsKICAgICAgICAgICAgIGludCBiYXNlID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjaGVja19oYXNfaW5zdGFu
Y2VcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSk7
CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOiB7CkBAIC04NDUsNyAr
ODc2LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcywg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBp
bnN0YW5jZW9mXHRcdCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewpAQCAtODgz
LDcgKzkxNSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgY2FzZSBvcF9yZXNvbHZlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVcdFx0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlXHRcdCAlcywg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtODkxLDE0ICs5MjQsMTYgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV9za2lwXHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSwgc2tpcExldmVscyk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNv
bHZlX3NraXBcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgc2tpcExldmVs
cyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX2dsb2JhbFx0ICVzLCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50
aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZl
X2dsb2JhbFx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQg
Kz0gMzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05MDgsNyArOTQzLDggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgSlNW
YWx1ZSBzY29wZSA9IEpTVmFsdWUoKCsraXQpLT51LmpzQ2VsbC5nZXQoKSk7CiAgICAgICAgICAg
ICArK2l0OwogICAgICAgICAgICAgaW50IGRlcHRoID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMsICVzLCAl
cywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgdmFsdWVU
b1NvdXJjZVN0cmluZyhleGVjLCBzY29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9p
ZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIGRlcHRoKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIHJlc29sdmVfZ2xvYmFsX2R5bmFtaWNcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBz
Y29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRh
KCksIGRlcHRoKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtOTE2LDcgKzk1Miw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2tpcExl
dmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0
X3Njb3BlZF92YXJcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIGluZGV4LCBza2lwTGV2ZWxzKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIGdldF9zY29wZWRfdmFyXHQgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgaW5kZXgsIHNraXBMZXZlbHMpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05MjQsMjAgKzk2MSwyMyBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgaW5kZXgg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBza2lwTGV2ZWxzID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9zY29wZWRfdmFyXHQgJWQsICVkLCAlc1xuIiwg
bG9jYXRpb24sIGluZGV4LCBza2lwTGV2ZWxzLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfc2NvcGVkX3Zhclx0ICVkLCAlZCwg
JXMiLCBsb2NhdGlvbiwgaW5kZXgsIHNraXBMZXZlbHMsIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytp
dCktPnUucmVnaXN0ZXJQb2ludGVyOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2ds
b2JhbF92YXJcdCAlcywgZyVkKCVwKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2lu
dGVyKSwgcmVnaXN0ZXJQb2ludGVyKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9n
bG9iYWxfdmFyXHQgJXMsIGclZCglcCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50
ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVy
UG9pbnRlcjsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9nbG9iYWxfdmFyX3dhdGNo
YWJsZVx0ICVzLCBnJWQoJXApXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIp
LCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2dsb2Jh
bF92YXJfd2F0Y2hhYmxlXHQgJXMsIGclZCglcCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3Rl
clBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAg
IGl0Kys7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk0NSwxMyArOTg1LDE1IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgY2FzZSBvcF9wdXRfZ2xv
YmFsX3ZhcjogewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBv
aW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVyOwogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFs
X3Zhclx0IGclZCglcCksICVzXG4iLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdp
c3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2Jh
bF92YXJcdCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lz
dGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHB1dF9nbG9iYWxfdmFyX2NoZWNrXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9u
LCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVn
aXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhcl9jaGVja1x0IGclZCglcCksICVzIiwgbG9j
YXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIp
LCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGl0Kys7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NjAs
MjEgKzEwMDIsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
aWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaXNTdHJpY3QgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfYmFzZSVz
XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfYmFzZSVzXHQgJXMs
ICVzIiwgbG9jYXRpb24sIGlzU3RyaWN0ID8gIl9zdHJpY3QiIDogIiIsIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAl
cywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1l
KGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gZW5zdXJlX3Byb3BlcnR5X2V4aXN0c1x0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNv
bHZlX3dpdGhfYmFzZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJl
c29sdmVfd2l0aF9iYXNlICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IHJlc29sdmVfd2l0aF9iYXNlICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQw
LCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTk4Miw3ICsxMDI3LDggQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIHJlc29sdmVfd2l0aF90aGlzICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlk
TmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHJlc29sdmVfd2l0aF90aGlzICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBp
ZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMDEsNyArMTA0Nyw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgY2FzZSBvcF9nZXRf
c3RyaW5nX2xlbmd0aDogewogICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9jYXRp
b24sIGl0KTsKICAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKGV4ZWMsIGxvY2F0
aW9uKTsKLSAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoOiB7CkBAIC0xMDM4LDcg
KzEwODQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAg
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dldHRlcl9zZXR0ZXJcdCAlcywg
JXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBp
ZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIHB1dF9nZXR0ZXJfc2V0dGVyXHQgJXMsICVzLCAlcywgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9tZXRob2RfY2hlY2s6IHsKQEAgLTEwNzAsNyArMTExNyw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIpIik7CiAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgIGRhdGFMb2coIlxu
Iik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0KTsKICAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKGV4ZWMsIGxv
Y2F0aW9uKTsKQEAgLTEwODEsMTQgKzExMjgsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRl
bF9ieV9pZFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlbF9i
eV9pZFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGdldF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfYnlfdmFs
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTA5Niw3ICsxMTQ1LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBj
bwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2FyZ3VtZW50X2J5X3Zh
bFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMiku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9hcmd1bWVudF9ieV92YWxc
dCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0x
MTA3LDM4ICsxMTU3LDQ0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjUgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9ieV9wbmFtZVx0ICVz
LCAlcywgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9ieV9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjUpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIHB1dF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
ZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlbF9ieV92YWxc
dCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aW5kZXg6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgdW5zaWduZWQgbjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2J5
X2luZGV4XHQgJXMsICV1LCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7
CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBqbXBcdFx0ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbXBcdFx0ICVk
KC0+JWQpIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wOiB7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBsb29wXHRcdCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcFx0XHQgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2p0cnVlOiB7CkBAIC0xMTY5LDEyOSArMTIyNSwxNDggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB2b2lkKiBwb2ludGVyID0gKCsr
aXQpLT51LnBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVwLCAlZCgt
PiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBwb2ludGVy
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGpuZXFfcHRyXHRcdCAlcywgJXAsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBwb2ludGVyLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfamxlc3M6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgt
PiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2pncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfamdyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
amdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5sZXNzXHRc
dCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVz
c2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5sZXNzZXFc
dFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24g
KyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5sZXNzZXFcdFx0ICVzLCAl
cywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5ncmVhdGVyXHRcdCAl
cywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZ3JlYXRlclx0XHQgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAl
cywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMs
ICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzczog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3BfaWZfbGVzc1x0
ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBv
ZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcF9pZl9sZXNzXHQgJXMsICVz
LCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xlc3Nl
cTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3BfaWZfbGVz
c2VxXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lmX2xlc3NlcVx0
ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9p
Zl9ncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9m
ZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9v
cF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lm
X2dyZWF0ZXJcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9sb29wX2hpbnQ6IHsKLSAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIGxvb3BfaGludFxuIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
bG9vcF9oaW50IiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX2ltbVx0ICVkLCAl
ZCgtPiVkKSwgJXNcbiIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2Nh
dGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3Rl
cikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9pbW1cdCAlZCwg
JWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0
aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVy
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9z
d2l0Y2hfY2hhcjogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9jaGFyXHQgJWQsICVkKC0+JWQpLCAl
c1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVm
YXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX2NoYXJcdCAlZCwgJWQoLT4lZCks
ICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVm
YXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3Ry
aW5nOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAlZCgtPiVkKSwgJXNcbiIs
IGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRU
YXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9zdHJpbmdcdCAlZCwgJWQoLT4lZCksICVz
IiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVs
dFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuYzogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
ZjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzaG91bGRDaGVjayA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2Z1bmNcdFx0
ICVzLCBmJWQsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IGYwLCBzaG91bGRDaGVjayA/ICI8Q2hlY2tlZD4iIDogIjxVbmNoZWNrZWQ+Iik7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfZnVuY1x0XHQgJXMsIGYlZCwgJXMiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwLCBzaG91bGRDaGVjayA/ICI8Q2hlY2tl
ZD4iIDogIjxVbmNoZWNrZWQ+Iik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19mdW5jX2V4cFx0ICVzLCBmJWRcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjApOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbmV3X2Z1bmNfZXhwXHQgJXMsIGYlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgZjApOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9jYWxsOiB7CkBAIC0xMzA3LDM1ICsxMzgyLDQxIEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCB0aGlzVmFsdWUgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudHMgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdEZyZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVz
LCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBjYWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFs
dWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZy
ZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3RlYXJfb2ZmX2FjdGl2YXRpb246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSB0ZWFyX29mZl9hY3RpdmF0aW9uXHQgJXMsICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRp
b25cdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJf
b2ZmX2FyZ3VtZW50cyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJfb2ZmX2FyZ3VtZW50cyAlcyIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3JldDogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXRcdFx0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gcmV0XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRcdFx0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF9wdXRfcmVzdWx0XHRcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXRfb2JqZWN0X29yX3RoaXM6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
b25zdHJ1Y3Rvcl9yZXRcdFx0ICVzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXMiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0
OiB7CkBAIC0xMzQ2LDEzICsxNDI3LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgY291
bnQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN0cmNh
dFx0XHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291bnQpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gc3RyY2F0XHRcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291
bnQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90b19wcmlt
aXRpdmU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSB0b19wcmltaXRpdmVcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9wbmFtZXM6
IHsKQEAgLTEzNjEsNyArMTQ0NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIGludCByMiA9IGl0WzNdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMyA9IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBp
dFs1XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfcG5hbWVzXHQg
JXMsICVzLCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X3BuYW1l
c1x0ICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2dl
dF9wbmFtZXMpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzcyLDY3
ICsxNDU2LDc5IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIGludCBzaXplID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGl0
ZXIgPSBpdFs1XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXRbNl0udS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywg
JXMsICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVz
dCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgaSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgaXRlcikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5leHRfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMs
ICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBp
dGVyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQgKz0g
T1BDT0RFX0xFTkdUSChvcF9uZXh0X3BuYW1lKSAtIDE7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1c2hfc2NvcGU6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9z
Y29wZVx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9zY29wZVx0ICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcG9wX3Njb3BlOiB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBwb3Bfc2NvcGVcbiIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHBv
cF9zY29wZSIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcHVzaF9uZXdfc2NvcGU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHB1c2hfbmV3X3Njb3BlIFx0JXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wX3Njb3BlczogewogICAgICAgICAgICAgaW50
IHNjb3BlRGVsdGEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGptcF9zY29w
ZXNcdF4lZCwgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGptcF9zY29wZXNcdF4l
ZCwgJWQoLT4lZCkiLCBsb2NhdGlvbiwgc2NvcGVEZWx0YSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhdGNo
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGNhdGNoXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNhdGNoXHRcdCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRo
cm93XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRocm93XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjogewogICAgICAgICAgICAgaW50
IGswID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSB0aHJv
d19yZWZlcmVuY2VfZXJyb3JcdCAlc1xuIiwgbG9jYXRpb24sIGNvbnN0YW50TmFtZShleGVjLCBr
MCwgZ2V0Q29uc3RhbnQoazApKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
dGhyb3dfcmVmZXJlbmNlX2Vycm9yXHQgJXMiLCBsb2NhdGlvbiwgY29uc3RhbnROYW1lKGV4ZWMs
IGswLCBnZXRDb25zdGFudChrMCkpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2RlYnVnOiB7CiAgICAgICAgICAgICBpbnQgZGVidWdIb29rSUQg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdExpbmUgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZGVidWdcdFx0ICVzLCAlZCwgJWRcbiIsIGxv
Y2F0aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7
CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCIsIGxvY2F0
aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9j
YWxsOiB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxsICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gcHJvZmlsZV93aWxsX2NhbGwgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOiB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rp
b24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2Zp
bGVfZGlkX2NhbGxcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlv
bikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2ZpbGVfZGlkX2NhbGxc
dCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2VuZDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBlbmRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZW5kXHRcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KQEAgLTE2MDEsNiArMTY5Nyw5IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQ
YXJzZWRCbG9ja1RhZywKICAgICAsIG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKDApCiAgICAg
LCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKDApCiAgICAgLCBtX2xpbmVJbmZvKG90aGVy
Lm1fbGluZUluZm8pCisjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorICAgICwgbV9ieXRl
Y29kZUNvbW1lbnRJdGVyYXRvcigwKQorI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAsIG1f
Y2FuQ29tcGlsZVdpdGhERkdTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5vdFNldCkKICNlbmRp
ZgpAQCAtMTY1Myw2ICsxNzUyLDkgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgICwgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKDApCiAgICAgLCBtX29wdGlt
aXphdGlvbkRlbGF5Q291bnRlcigwKQogICAgICwgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRl
cigwKQorI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAsIG1fYnl0ZWNvZGVDb21t
ZW50SXRlcmF0b3IoMCkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCkBA
IC0yMTI3LDYgKzIyMjksODIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVm
ZXJlbgogI2VuZGlmICAgIAogfQogCisjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorLy8g
RmluZHMgdGhlIGNvbW1lbnQgc3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIGJ5dGVjb2RlIG9mZnNl
dC9QQyBpcyBhdmFpbGFibGUuIAorY29uc3QgY2hhciogQ29kZUJsb2NrOjpjb21tZW50Rm9yQnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgQVNTRVJUKGJ5dGVj
b2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKworICAgIFZlY3RvcjxDb21tZW50
PiYgY29tbWVudHMgPSBtX2J5dGVjb2RlQ29tbWVudHM7CisgICAgc2l6ZV90IG51bWJlck9mQ29t
bWVudHMgPSBjb21tZW50cy5zaXplKCk7CisgICAgY29uc3QgY2hhciogcmVzdWx0ID0gMDsKKwor
ICAgIGlmICghbnVtYmVyT2ZDb21tZW50cykKKyAgICAgICAgcmV0dXJuIDA7IC8vIE5vIGNvbW1l
bnRzIHRvIG1hdGNoIHdpdGguCisKKyAgICAvLyBUaGUgbmV4dCBtYXRjaCBpcyBtb3N0IGxpa2Vs
eSB0aGUgbmV4dCBjb21tZW50IGluIHRoZSBsaXN0LgorICAgIC8vIERvIGEgcXVpY2sgY2hlY2sg
dG8gc2VlIGlmIHRoYXQgaXMgYSBtYXRjaCBmaXJzdC4KKyAgICAvLyBtX2J5dGVjb2RlQ29tbWVu
dEl0ZXJhdG9yIHNob3VsZCBhbHJlYWR5IGJlIHBvaW50aW5nIHRvIHRoZQorICAgIC8vIG5leHQg
Y29tbWVudCB3ZSBzaG91bGQgY2hlY2suCisKKyAgICBBU1NFUlQobV9ieXRlY29kZUNvbW1lbnRJ
dGVyYXRvciA8IGNvbW1lbnRzLnNpemUoKSk7CisKKyAgICBzaXplX3QgaSA9IG1fYnl0ZWNvZGVD
b21tZW50SXRlcmF0b3I7CisgICAgc2l6ZV90IGNvbW1lbnRQQyA9IGNvbW1lbnRzW2ldLnBjOwor
ICAgIGlmIChjb21tZW50UEMgPT0gYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgLy8gV2UndmUg
Z290IGEgbWF0Y2guIEFsbCBkb25lIQorICAgICAgICBtX2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9y
ID0gaTsKKyAgICAgICAgcmVzdWx0ID0gY29tbWVudHNbaV0uc3RyaW5nOworICAgIH0gZWxzZSBp
ZiAoY29tbWVudFBDID4gYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQg
Y29tbWVudCBpcyBhbHJlYWR5IGdyZWF0ZXIgdGhhbiB0aGUgcmVxdWVzdGVkIFBDLgorICAgICAg
ICAvLyBTdGFydCBzZWFyY2hpbmcgZnJvbSB0aGUgZmlyc3QgY29tbWVudC4KKyAgICAgICAgaSA9
IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgY3VycmVudCBjb21t
ZW50J3MgUEMgaXMgbGVzcyB0aGFuIHRoZSByZXF1ZXN0ZWQgUEMuCisgICAgICAgIC8vIEhlbmNl
LCB3ZSBjYW4ganVzdCBzdGFydCBzZWFyY2hpbmcgZnJvbSB0aGUgbmV4dCBjb21tZW50IGluIHRo
ZQorICAgICAgICAvLyBsaXN0LgorICAgICAgICBpKys7CisgICAgfQorCisgICAgLy8gSWYgdGhl
IHJlc3VsdCBpcyBzdGlsbCBub3QgZm91bmQsIGRvIGEgbGluZWFyIHNlYXJjaCBpbiB0aGUgcmFu
Z2UKKyAgICAvLyB0aGF0IHdlJ3ZlIGRldGVybWluZWQgYWJvdmUuCisgICAgaWYgKCFyZXN1bHQp
IHsKKyAgICAgICAgZm9yICg7IGkgPCBjb21tZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgY29tbWVudFBDID0gY29tbWVudHNbaV0ucGM7CisgICAgICAgICAgICBpZiAoY29tbWVudFBD
ID09IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tbWVudHNb
aV0uc3RyaW5nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGNvbW1lbnRzW2ldLnBjID4gYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBUaGUgY3VycmVudCBjb21tZW50IFBDIGlzIGFscmVhZHkgcGFzdCB0aGUgcmVxdWVz
dGVkCisgICAgICAgICAgICAgICAgLy8gYnl0ZWNvZGVPZmZzZXQuIEhlbmNlLCB0aGVyZSBhcmUg
bm8gbW9yZSBwb3NzaWJsZQorICAgICAgICAgICAgICAgIC8vIG1hdGNoZXMuIEp1c3QgZmFpbC4K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFVwZGF0ZSB0aGUgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIG5leHQgY29tbWVu
dC4KKyAgICBpZiAoKytpID49IG51bWJlck9mQ29tbWVudHMpIHsKKyAgICAgICAgLy8gQXQgbW9z
dCBwb2ludCB0byB0aGUgbGFzdCBjb21tZW50IGVudHJ5LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUK
KyAgICAgICAgLy8gbmV4dCB0aW1lIHdlIGNhbGwgdGhpcyBmdW5jdGlvbiwgdGhlIHF1aWNrIGNo
ZWNrcyB3aWxsIGF0IGxlYXN0CisgICAgICAgIC8vIGhhdmUgb25lIGVudHJ5IHRvIGNoZWNrIGFu
ZCBjYW4gZmFpbCBmYXN0IGlmIGFwcHJvcHJpYXRlLgorICAgICAgICBpID0gbnVtYmVyT2ZDb21t
ZW50cyAtIDE7CisgICAgfQorICAgIG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3IgPSBpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50
cygpCit7CisgICAgVmVjdG9yPENvbW1lbnQ+JiBjb21tZW50cyA9IG1fYnl0ZWNvZGVDb21tZW50
czsKKyAgICBwcmludGYoIkNvbW1lbnRzIGZvciBjb2RlYmxvY2sgJXA6IHNpemUgJWx1XG4iLCB0
aGlzLCBjb21tZW50cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWVu
dHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHByaW50ZigiICAgICBwYyAlbHUgOiAnJXMnXG4iLCBj
b21tZW50c1tpXS5wYywgY29tbWVudHNbaV0uc3RyaW5nKTsKKyAgICBwcmludGYoIkVuZCBvZiBj
b21tZW50cyBmb3IgY29kZWJsb2NrICVwXG4iLCB0aGlzKTsKK30KKyNlbmRpZiAvLyBFTkFCTEVf
QllURUNPREVfQ09NTUVOVFMKKwogSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVChieXRl
Y29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjEzODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgorI2lu
Y2x1ZGUgIkNvbW1lbnQuaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5oIgogI2luY2x1
ZGUgIkRGR0NvZGVCbG9ja3MuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKQEAgLTY2LDEwICs2
NywzNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
ZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKy8vIFNldCBFTkFC
TEVfQllURUNPREVfQ09NTUVOVFMgdG8gMSB0byBlbmFibGUgcmVjb3JkaW5nIGJ5dGVjb2RlIGdl
bmVyYXRvcgorLy8gY29tbWVudHMgZm9yIHRoZSBieXRlY29kZXMgdGhhdCBpdCBnZW5lcmF0ZXMu
IFRoaXMgd2lsbCBhbGxvdworLy8gQ29kZUJsb2NrOjpkdW1wKCkgdG8gcHJvdmlkZSBzb21lIGNv
bnRleHR1YWwgaW5mbyBhYm91dCB0aGUgYnl0ZWNvZGVzLgorLy8KKy8vIFRoZSB3YXkgdGhpcyBj
b21tZW50IHN5c3RlbSB3b3JrcyBpcyBhcyBmb2xsb3dzOgorLy8gMS4gVGhlIEJ5dGVjb2RlR2Vu
ZXJhdG9yIGNhbGxzIHByZXBlbmRDb21tZW50KCkgd2l0aCBhIGNvbnN0YW50IGNvbW1lbnQKKy8v
ICAgIHN0cmluZyBpbiAudGV4dC4gVGhlIHN0cmluZyBtdXN0IG5vdCBiZSBhIHN0YWNrIG9yIGhl
YXAgYWxsb2NhdGVkCisvLyAgICBzdHJpbmcuCisvLyAyLiBXaGVuIHRoZSBCeXRlY29kZUdlbmVy
YXRvcidzIGVtaXRPcGNvZGUoKSBpcyBjYWxsZWQsIHRoZSBsYXN0CisvLyAgICBwcmVwZW5kZWQg
Y29tbWVudCB3aWxsIGJlIHJlY29yZGVkIHdpdGggdGhlIFBDIG9mIHRoZSBvcGNvZGUgYmVpbmcK
Ky8vICAgIGVtaXR0ZWQuIFRoaXMgY29tbWVudCBpcyBiZWluZyByZWNvcmRlZCBpbiB0aGUgQ29k
ZUJsb2NrJ3MKKy8vICAgIG1fYnl0ZWNvZGVDb21tZW50cy4KKy8vIDMuIFdoZW4gQ29kZUJsb2Nr
OjpkdW1wKCkgaXMgY2FsbGVkLCBpdCB3aWxsIHBhaXIgdXAgdGhlIGNvbW1lbnRzIHdpdGgKKy8v
ICAgIHRoZWlyIGNvcnJlc3BvbmRpbmcgYnl0ZWNvZGVzIGJhc2VkIG9uIHRoZSBieXRlY29kZSBh
bmQgY29tbWVudCdzCisvLyAgICBQQy4gSWYgYSBtYXRjaGluZyBwYWlyIGlzIGZvdW5kLCB0aGUg
Y29tbWVudCB3aWxsIGJlIHByaW50ZWQgYWZ0ZXIKKy8vICAgIHRoZSBieXRlY29kZS4gSWYgbm90
LCBubyBjb21tZW50IGlzIHByaW50ZWQuCisvLworLy8gTk9URTogRW5hYmxpbmcgdGhpcyB3aWxs
IGNvbnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgYXQgcnVudGltZSB0byBzdG9yZQorLy8gdGhlIGNv
bW1lbnRzLiBTaW5jZSB0aGVzZSBjb21tZW50cyBhcmUgb25seSB1c2VmdWwgZm9yIFZNIGRlYnVn
Z2luZworLy8gKGFzIG9wcG9zZWQgdG8gYXBwIGRlYnVnZ2luZyksIHRoaXMgZmVhdHVyZSBpcyB0
byBiZSBkaXNhYmxlZCBieSBkZWZhdWx0LAorLy8gYW5kIGNhbiBiZSBlbmFibGVkIGFzIG5lZWRl
ZCBmb3IgVk0gZGV2ZWxvcG1lbnQgdXNlIG9ubHkuCisKKyNkZWZpbmUgRU5BQkxFX0JZVEVDT0RF
X0NPTU1FTlRTIDAKKwogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBERkdDb2RlQmxvY2tz
OwpAQCAtMTU1LDYgKzE4MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGludCBsb2NhdGlvbik7CisjaWYgRU5BQkxFKEJZVEVDT0RF
X0NPTU1FTlRTKQorICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICB2b2lkIGR1bXBCeXRlY29kZUNvbW1l
bnRzKCk7CisjZW5kaWYKKwogICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgaW50IGxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIHZvaWQg
ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KTsKQEAgLTM2NSw2
ICszOTcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0
cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAg
ICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgICAgIAorI2lmIEVOQUJMRShCWVRF
Q09ERV9DT01NRU5UUykKKyAgICAgICAgVmVjdG9yPENvbW1lbnQ+JiBieXRlY29kZUNvbW1lbnRz
KCkgeyByZXR1cm4gbV9ieXRlY29kZUNvbW1lbnRzOyB9CisjZW5kaWYKKwogICAgICAgICBzaXpl
X3QgcHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCk7CiAgICAgICAgIAogICAgICAgICBib29sIHVz
ZXNPcGNvZGUoT3Bjb2RlSUQpOwpAQCAtMTMwMiw2ICsxMzM4LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB1aW50MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwogCiAgICAg
ICAgIFZlY3RvcjxMaW5lSW5mbz4gbV9saW5lSW5mbzsKKyNpZiBFTkFCTEUoQllURUNPREVfQ09N
TUVOVFMpCisgICAgICAgIFZlY3RvcjxDb21tZW50PiAgbV9ieXRlY29kZUNvbW1lbnRzOworICAg
ICAgICBzaXplX3QgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcjsKKyNlbmRpZgogCiAgICAgICAg
IHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVudC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb21tZW50X2gKKyNkZWZpbmUgQ29tbWVudF9o
CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgQ29tbWVudCB7CisgICAgc2l6ZV90IHBjOwor
ICAgIGNvbnN0IGNoYXIqIHN0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gQ29tbWVudF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTIxMzgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKKyNp
bmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC0yNDUsNiArMjQ2LDkg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBybwogICAgICwgbV9zaG91
bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2Jh
bE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERh
dGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQorI2lmIEVO
QUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAsIG1fY3VycmVudENvbW1lbnRTdHJpbmcoMCkK
KyNlbmRpZgogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX2NvZGVCbG9j
ayhjb2RlQmxvY2spCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpKQpAQCAtMjcwLDYgKzI3NCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihQcm8KICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAg
bV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKKyAgICBwcmVwZW5k
Q29tbWVudCgiZW50ZXJpbmcgUHJvZ3JhbSBibG9jayIpOwogICAgIGVtaXRPcGNvZGUob3BfZW50
ZXIpOwogICAgIGNvZGVCbG9jay0+c2V0R2xvYmFsRGF0YShtX2dsb2JhbERhdGEpOwogCkBAIC0z
MjIsNiArMzI3LDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bgog
ICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3Bl
Q2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hh
aW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRh
YmxlKQorI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAsIG1fY3VycmVudENvbW1l
bnRTdHJpbmcoMCkKKyNlbmRpZgogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Cb2R5KQogICAg
ICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIoMCkK
QEAgLTM0OSw5ICszNTcsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KEZ1bgogCiAgICAgY29kZUJsb2NrLT5zZXRHbG9iYWxEYXRhKG1fZ2xvYmFsRGF0YSk7CiAgICAg
CisgICAgcHJlcGVuZENvbW1lbnQoImVudGVyaW5nIEZ1bmN0aW9uIGJsb2NrIik7CiAgICAgZW1p
dE9wY29kZShvcF9lbnRlcik7CiAgICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkpIHsKICAgICAgICAgbV9hY3RpdmF0aW9uUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAg
ICAgcHJlcGVuZENvbW1lbnQoImFjdGl2YXRpb24gZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAg
ICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIobV9hY3RpdmF0aW9uUmVnaXN0ZXIpOwogICAgICAg
ICBtX2NvZGVCbG9jay0+c2V0QWN0aXZhdGlvblJlZ2lzdGVyKG1fYWN0aXZhdGlvblJlZ2lzdGVy
LT5pbmRleCgpKTsKICAgICB9CkBAIC0zNjgsMTAgKzM3OCwxMyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAgICAgICAgIGNvZGVCbG9jay0+c2V0QXJndW1lbnRz
UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyLT5pbmRleCgpID09IEpTQzo6dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGNvZGVCbG9j
ay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpOwogCisgICAgICAgIHByZXBlbmRDb21tZW50KCJhcmd1
bWVudHMgZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0
ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICBwcmVwZW5kQ29tbWVudCgidW5tb2RpZmll
ZCBhcmd1bWVudHMgZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAgICAgZW1pdEluaXRMYXp5
UmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIHByZXBlbmRD
b21tZW50KCJjcmVhdGUgYXJndW1lbnRzIGZvciBzdHJpY3QgbW9kZSIpOwogICAgICAgICAgICAg
ZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgIH0KQEAgLTM4
MCw2ICszOTMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAg
ICAgICAgIC8vIGl0IGZyb20gYSBjYWxsIGZyYW1lLiAgSW4gdGhlIGxvbmctdGVybSBpdCBzaG91
bGQgc3RvcCBkb2luZyB0aGF0ICg8cmRhcjovL3Byb2JsZW0vNjkxMTg4Nj4pLAogICAgICAgICAv
LyBidXQgZm9yIG5vdyB3ZSBmb3JjZSBlYWdlciBjcmVhdGlvbiBvZiB0aGUgYXJndW1lbnRzIG9i
amVjdCB3aGVuIGRlYnVnZ2luZy4KICAgICAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3Mp
IHsKKyAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJjcmVhdGUgYXJndW1lbnRzIGZvciBkZWJ1
ZyBob29rcyIpOwogICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsK
ICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rlci0+aW5k
ZXgoKSk7CiAgICAgICAgIH0KQEAgLTM5OCwxMCArNDEyLDEyIEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAgICAgIGlmIChmdW5jdGlvbkJvZHktPmNh
cHR1cmVzKGlkZW50KSkgewogICAgICAgICAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkQWN0aXZh
dGlvbikgewogICAgICAgICAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgcHJlcGVuZENvbW1lbnQoImFjdGl2YXRpb24gZm9yIGNh
cHR1cmVkIHZhcnMiKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVf
YWN0aXZhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIG1fZnVuY3Rpb25zLmFkZChpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAg
IHByZXBlbmRDb21tZW50KCJjYXB0dXJlZCBmdW5jdGlvbiB2YXIiKTsKICAgICAgICAgICAgICAg
ICBlbWl0TmV3RnVuY3Rpb24oYWRkVmFyKGlkZW50LCBmYWxzZSksIGZ1bmN0aW9uKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE0LDYgKzQzMCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICBib29sIGNhbkxhemlseUNyZWF0ZUZ1bmN0aW9u
cyA9ICFmdW5jdGlvbkJvZHktPm5lZWRzQWN0aXZhdGlvbkZvck1vcmVUaGFuVmFyaWFibGVzKCkg
JiYgIW1fc2hvdWxkRW1pdERlYnVnSG9va3M7CiAgICAgaWYgKCFjYW5MYXppbHlDcmVhdGVGdW5j
dGlvbnMgJiYgIW1faGFzQ3JlYXRlZEFjdGl2YXRpb24pIHsKICAgICAgICAgbV9oYXNDcmVhdGVk
QWN0aXZhdGlvbiA9IHRydWU7CisgICAgICAgIHByZXBlbmRDb21tZW50KCJjYW5ub3QgbGF6aWx5
IGNyZWF0ZSBmdW5jdGlvbnMiKTsKICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYWN0aXZh
dGlvbik7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rl
ci0+aW5kZXgoKSk7CiAgICAgfQpAQCAtNDI4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZWcgPSBhZGRWYXIoaWRlbnQsIGZhbHNlKTsKICAgICAgICAgICAgIC8vIERvbid0IGxhemlseSBj
cmVhdGUgZnVuY3Rpb25zIHRoYXQgb3ZlcnJpZGUgdGhlIG5hbWUgJ2FyZ3VtZW50cycKICAgICAg
ICAgICAgIC8vIGFzIHRoaXMgd291bGQgY29tcGxpY2F0ZSBsYXp5IGluc3RhbnRpYXRpb24gb2Yg
YWN0dWFsIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJhIGZ1bmN0aW9u
IHRoYXQgb3ZlcnJpZGUgJ2FyZ3VtZW50cyciKTsKICAgICAgICAgICAgIGlmICghY2FuTGF6aWx5
Q3JlYXRlRnVuY3Rpb25zIHx8IGlkZW50ID09IHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCiAg
ICAgICAgICAgICAgICAgZW1pdE5ld0Z1bmN0aW9uKHJlZy5nZXQoKSwgZnVuY3Rpb24pOwogICAg
ICAgICAgICAgZWxzZSB7CkBAIC00NjAsNiArNDc4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKEZ1bgogICAgIHByZXNlcnZlTGFzdFZhcigpOwogCiAgICAgaWYgKGlz
Q29uc3RydWN0b3IoKSkgeworICAgICAgICBwcmVwZW5kQ29tbWVudCgiJ3RoaXMnIGJlY2F1c2Ug
d2UgYXJlIGEgQ29uc3RydWN0b3IgZnVuY3Rpb24iKTsKICAgICAgICAgZW1pdE9wY29kZShvcF9j
cmVhdGVfdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rl
ci5pbmRleCgpKTsKICAgICB9IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYm
IChmdW5jdGlvbkJvZHktPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IG1f
c2hvdWxkRW1pdERlYnVnSG9va3MpKSB7CkBAIC00NzUsNiArNDk0LDkgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YQogICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJj
ZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkp
CiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4p
CiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQorI2lmIEVOQUJMRShCWVRFQ09ERV9D
T01NRU5UUykKKyAgICAsIG1fY3VycmVudENvbW1lbnRTdHJpbmcoMCkKKyNlbmRpZgogICAgICwg
bV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAg
LCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQpAQCAtNTAw
LDYgKzUyMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihFdmEKICAg
ICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2Jhc2VTY29wZURlcHRoKQogICAgICAg
ICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIAorICAgIHByZXBl
bmRDb21tZW50KCJlbnRlcmluZyBFdmFsIGJsb2NrIik7CiAgICAgZW1pdE9wY29kZShvcF9lbnRl
cik7CiAgICAgY29kZUJsb2NrLT5zZXRHbG9iYWxEYXRhKG1fZ2xvYmFsRGF0YSk7CiAgICAgbV9j
b2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CkBAIC02NTgsMTAgKzY4MSwzMSBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3Bjb2RlKE9wY29kCiAgICAgQVNTRVJUKG9wY29kZVBv
c2l0aW9uIC0gbV9sYXN0T3Bjb2RlUG9zaXRpb24gPT0gb3Bjb2RlTGVuZ3RoKG1fbGFzdE9wY29k
ZUlEKSB8fCBtX2xhc3RPcGNvZGVJRCA9PSBvcF9lbmQpOwogICAgIG1fbGFzdE9wY29kZVBvc2l0
aW9uID0gb3Bjb2RlUG9zaXRpb247CiAjZW5kaWYKKyAgICBlbWl0Q29tbWVudCgpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChnbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5nZXRPcGNvZGUo
b3Bjb2RlSUQpKTsKICAgICBtX2xhc3RPcGNvZGVJRCA9IG9wY29kZUlEOwogfQogCisjaWYgRU5B
QkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorLy8gUmVjb3JkIGEgY29tbWVudCBpbiB0aGUgQ29kZUJs
b2NrJ3MgY29tbWVudHMgbGlzdCBmb3IgdGhlIGN1cnJlbnQgb3Bjb2RlCisvLyB0aGF0IGlzIGFi
b3V0IHRvIGJlIGVtaXR0ZWQuCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tbWVudCgp
Cit7CisgICAgaWYgKG1fY3VycmVudENvbW1lbnRTdHJpbmcpIHsKKyAgICAgICAgc2l6ZV90IG9w
Y29kZVBvc2l0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAgICAgICBDb21tZW50IGNv
bW1lbnQgPSB7IG9wY29kZVBvc2l0aW9uLCBtX2N1cnJlbnRDb21tZW50U3RyaW5nIH07CisgICAg
ICAgIG1fY29kZUJsb2NrLT5ieXRlY29kZUNvbW1lbnRzKCkuYXBwZW5kKGNvbW1lbnQpOworICAg
ICAgICBtX2N1cnJlbnRDb21tZW50U3RyaW5nID0gMDsKKyAgICB9Cit9CisKKy8vIFJlZ2lzdGVy
IGEgY29tbWVudCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG5leHQgb3Bjb2RlIHRoYXQgd2ls
bCBiZSBlbWl0dGVkLgordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHJlcGVuZENvbW1lbnQoY29u
c3QgY2hhciogc3RyaW5nKQoreworICAgIG1fY3VycmVudENvbW1lbnRTdHJpbmcgPSBzdHJpbmc7
Cit9CisjZW5kaWYKKwogVmFsdWVQcm9maWxlKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2Zp
bGVkT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxF
UikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEyMTM4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNTQyLDYgKzU0MiwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIAorI2lmIEVOQUJMRShCWVRFQ09ERV9DT01N
RU5UUykKKyAgICAgICAgLy8gUmVjb3JkIGEgY29tbWVudCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29t
bWVudHMgbGlzdCBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgLy8gb3Bjb2RlIHRoYXQgaXMgYWJv
dXQgdG8gYmUgZW1pdHRlZC4KKyAgICAgICAgdm9pZCBlbWl0Q29tbWVudCgpOworICAgICAgICAv
LyBSZWdpc3RlciBhIGNvbW1lbnQgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0IG9wY29k
ZSB0aGF0IHdpbGwKKyAgICAgICAgLy8gYmUgZW1pdHRlZC4KKyAgICAgICAgdm9pZCBwcmVwZW5k
Q29tbWVudChjb25zdCBjaGFyKiBzdHJpbmcpOworI2Vsc2UKKyAgICAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGVtaXRDb21tZW50KCkgeyB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVw
ZW5kQ29tbWVudChjb25zdCBjaGFyKikgeyB9CisjZW5kaWYKKwogICAgICAgICB2b2lkIGVtaXRP
cGNvZGUoT3Bjb2RlSUQpOwogICAgICAgICBWYWx1ZVByb2ZpbGUqIGVtaXRQcm9maWxlZE9wY29k
ZShPcGNvZGVJRCk7CiAgICAgICAgIHZvaWQgcmV0cmlldmVMYXN0QmluYXJ5T3AoaW50JiBkc3RJ
bmRleCwgaW50JiBzcmMxSW5kZXgsIGludCYgc3JjMkluZGV4KTsKQEAgLTYyMyw2ICs2MzUsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVj
dGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgICAgICBTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUoKSB7IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQorI2lmIEVOQUJMRShCWVRF
Q09ERV9DT01NRU5UUykKKyAgICAgICAgVmVjdG9yPENvbW1lbnQ+JiBjb21tZW50cygpIHsgcmV0
dXJuIG1fY29tbWVudHM7IH0KKyNlbmRpZgogCiAgICAgICAgIGJvb2wgc2hvdWxkT3B0aW1pemVM
b2NhbHMoKQogICAgICAgICB7CkBAIC02NjQsNiArNjc5LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBTdHJvbmc8U2NvcGVDaGFpbk5vZGU+IG1fc2NvcGVDaGFpbjsKICAgICAgICAgU3lt
Ym9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAKKyNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMp
CisgICAgICAgIFZlY3RvcjxDb21tZW50PiBtX2NvbW1lbnRzOworICAgICAgICBjb25zdCBjaGFy
ICptX2N1cnJlbnRDb21tZW50U3RyaW5nOworI2VuZGlmCisKICAgICAgICAgU2NvcGVOb2RlKiBt
X3Njb3BlTm9kZTsKICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKIAo=
</data>
<flag name="review"
          id="158136"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149992</attachid>
            <date>2012-06-28 13:16:38 -0700</date>
            <delta_ts>2012-06-28 16:03:28 -0700</delta_ts>
            <desc>rev3: Copyright header updated for the new file.</desc>
            <filename>bug-90095-rev3.patch</filename>
            <type>text/plain</type>
            <size>67892</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEyLTA2LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGRpbmcgYSBjb21tZW50aW5nIHV0aWxpdHkgdG8gcmVjb3JkIEJ5dGVjb2RlR2VuZXJhdG9yIGNv
bW1lbnRzCisgICAgICAgIHdpdGggb3Bjb2RlcyB0aGF0IGFyZSBlbWl0dGVkLiAgUHJlc2VudGx5
LCB0aGUgY29tbWVudHMgY2FuIG9ubHkKKyAgICAgICAgYmUgY29uc3RhbnQgc3RyaW5ncy4gIEFk
ZGluZyBjb21tZW50cyBmb3Igb3Bjb2RlcyBpcyBvcHRpb25hbC4KKyAgICAgICAgSWYgYSBjb21t
ZW50IGlzIGFkZGVkLCB0aGUgY29tbWVudCB3aWxsIGJlIHByaW50ZWQgZm9sbG93aW5nIHRoZQor
ICAgICAgICBvcGNvZGUgd2hlbiBDb2RlQmxvY2s6OmR1bXAoKSBpcyBjYWxsZWQuCisKKyAgICAg
ICAgVGhpcyB1dGlsaXR5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFuZCBpcyBvbmx5IG1lYW50
IGZvciBWTQorICAgICAgICBkZXZlbG9wbWVudCBwdXJwb3Nlcy4gIEl0IHNob3VsZCBub3QgYmUg
ZW5hYmxlZCBmb3IgcHJvZHVjdCBidWlsZHMuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoaXMgdXRp
bGl0eSwgc2V0IEVOQUJMRV9CWVRFQ09ERV9DT01NRU5UUyBpbiBDb2RlQmxvY2suaAorICAgICAg
ICB0byAxLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50
QW5kTmV3TGluZSk6IER1bXBzIHRoZSBjb21tZW50LgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpwcmludFVuYXJ5T3ApOiBBZGQgY29tbWVudCBkdW1wcy4KKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEJpbmFyeU9wKTogQWRkIGNvbW1lbnQgZHVtcHMuCisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRDb25kaXRpb25hbEp1bXApOiBBZGQgY29tbWVu
dCBkdW1wcy4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludENhbGxPcCk6IEFkZCBjb21t
ZW50IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50UHV0QnlJZE9wKTogQWRk
IGNvbW1lbnQgZHVtcHMuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6IEFkZCBjb21t
ZW50IGR1bXBzLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Y29tbWVudEZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgICAg
IEZpbmRzIHRoZSBjb21tZW50IGZvciBhbiBvcGNvZGUgaWYgYXZhaWxhYmxlLgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZUNvbW1lbnRzKToKKyAgICAgICAgICAgIEZvciBk
ZWJ1Z2dpbmcgd2hldGhlciBjb21tZW50cyBhcmUgY29sbGVjdGVkLgorICAgICAgICAgICAgSXQg
aXMgbm90IGJlaW5nIGNhbGxlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0
ZWNvZGVDb21tZW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29tbWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChDb21tZW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE9wY29kZSk6IENhbGxzIGVtaXRDb21tZW50KCkuCisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbW1lbnQpOiBBZGRzIGNvbW1lbnQgdG8gQ29k
ZUJsb2NrLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHJlcGVuZENvbW1lbnQp
OgorICAgICAgICAgICAgUmVnaXN0ZXJzIGEgY29tbWVudCBmb3IgZW1pdENvbWVtbnQoKSB0byB1
c2UgbGF0ZXIuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q29tbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVw
ZW5kQ29tbWVudCk6CisgICAgICAgICAgICBUaGVzZSBhcmUgaW5saW5lZCB2ZXJzaW9ucyBvZiB0
aGVzZSBmdW5jdGlvbnMgdGhhdCBudWxsaWZ5IHRoZW0KKyAgICAgICAgICAgIHdoZW4gRU5BQkxF
X0JZVEVDT0RFX0NPTU1FTlRTIGlzIDAuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojpjb21tZW50cyk6CisKIDIwMTItMDYtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkcgZGlzYXNzZW1ibHkgc2hvdWxkIGJlIGVhc2llciB0byByZWFkCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTIxMzgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvbW1lbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFG
b3JtYXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMTM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYyLDYgKzE1NjIsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29tbWVudC5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxFdmFsQ29kZUNhY2hlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTM4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQAogCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYwRjcg
LyogVVN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQlGNjkyQTg4NjAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1
NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENv
bW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0yMzYw
LDYgKzIzNjEsNyBAQAogCQkJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxs
TGlua0luZm8uaCAqLywKIAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJ
bmZvLmNwcCAqLywKIAkJCQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZv
LmggKi8sCisJCQkJRkVCNjNBQTIxNTlCOURBMzAwODkzMkE2IC8qIENvbW1lbnQuaCAqLywKIAkJ
CQkwRjBCODNBQzE0QkNGNjAyMDA4ODVCNEYgLyogTGluZUluZm8uaCAqLywKIAkJCQkwRjBCODNB
QTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovLAogCQkJCTBGMEI4
M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyMTM4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpbmNsdWRl
ICJERkdPcGVyYXRpb25zLmgiCkBAIC05Myw2ICs5NCwxOCBAQCBzdGF0aWMgQ1N0cmluZyBpZE5h
bWUoaW50IGlkMCwgY29uc3QgSWRlCiAgICAgcmV0dXJuIG1ha2VVU3RyaW5nKGlkZW50LnVzdHJp
bmcoKSwgIihAaWQiLCBVU3RyaW5nOjpudW1iZXIoaWQwKSwgIikiKS51dGY4KCk7CiB9CiAKK3Zv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShpbnQgbG9jYXRpb24p
Cit7CisjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorICAgIGNvbnN0IGNoYXIqIGNvbW1l
bnQgPSBjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQobG9jYXRpb24pOworICAgIGlmIChjb21tZW50
KQorICAgICAgICBkYXRhTG9nKCJcdFx0IDsgJXMiLCBjb21tZW50KTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKKyNlbmRpZgorICAgIGRhdGFMb2coIlxuIik7Cit9CisKIENT
dHJpbmcgQ29kZUJsb2NrOjpyZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgcikgY29u
c3QKIHsKICAgICBpZiAociA9PSBtaXNzaW5nVGhpc09iamVjdE1hcmtlcigpKQpAQCAtMTU2LDcg
KzE2OSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFVuYXJ5T3AoRXhlY1N0YXRlKiAKICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKIAotICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKKyAgICBkYXRhTG9nKCJbJTRkXSAlc1x0XHQgJXMsICVzIiwgbG9jYXRpb24sIG9wLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKIH0KIAog
dm9pZCBDb2RlQmxvY2s6OnByaW50QmluYXJ5T3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRp
b24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBpdCwgY29uc3QgY2hhciog
b3ApCkBAIC0xNjQsMTQgKzE3OCwxNiBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRCaW5hcnlPcChF
eGVjU3RhdGUqCiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ZGF0YUxvZygiWyU0ZF0gJXNcdFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgZGF0YUxvZygiWyU0ZF0gJXNcdFx0
ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKIH0K
IAogdm9pZCBDb2RlQmxvY2s6OnByaW50Q29uZGl0aW9uYWxKdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBWZWN0b3I8SW5zdHJ1
Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgaXQsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3Ap
CiB7CiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IG9mZnNldCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJWQoLT4lZClc
biIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJWQoLT4l
ZCkiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUq
IGV4ZWMsIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3Im
IGl0KQpAQCAtNDAyLDcgKzQxOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludENhbGxPcChFeGVj
U3RhdGUqIGUKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGRhdGFMb2coIlxuIik7Cisg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgIGl0ICs9IDI7
CiB9CiAKQEAgLTQxMSw3ICs0MjcsOCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRQdXRCeUlkT3Ao
RXhlY1N0YXRlCiAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
IGRhdGFMb2coIlslNGRdICVzXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICBkYXRhTG9nKCJbJTRk
XSAlc1x0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5l
KGxvY2F0aW9uKTsKICAgICBpdCArPSA1OwogfQogCkBAIC02NTAsNTIgKzY2Nyw2MSBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgaW50IGxvY2F0aW9uID0g
aXQgLSBiZWdpbjsKICAgICBzd2l0Y2ggKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlE
KGl0LT51Lm9wY29kZSkpIHsKICAgICAgICAgY2FzZSBvcF9lbnRlcjogewotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gZW50ZXJcbiIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGVudGVyIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9jcmVhdGVfYWN0aXZhdGlvbjogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjcmVhdGVfYWN0
aXZhdGlvbiAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNyZWF0ZV9hY3RpdmF0aW9uICVzIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
cmVhdGVfYXJndW1lbnRzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRzXHQg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGluaXRfbGF6eV9yZWdcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGluaXRfbGF6eV9yZWdc
dCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGNyZWF0ZV90aGlzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY3JlYXRlX3RoaXMgJXMiLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb252ZXJ0X3RoaXM6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
Y29udmVydF90aGlzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAlcyIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICArK2l0OyAv
LyBTa2lwIHZhbHVlIHByb2ZpbGUuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gbmV3X29iamVjdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIG5ld19hcnJheVx0ICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd2KS5kYXRhKCksIGFyZ2MpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2FycmF5XHQgJXMsICVzLCAlZCIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBh
cmd2KS5kYXRhKCksIGFyZ2MpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIG5ld19hcnJheV9idWZmZXIgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgYXJndiwgYXJnYyk7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBuZXdfYXJyYXlfYnVmZmVyICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBhcmdjKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDogewpAQCAtNzAzLDE1ICs3
MjksMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gbmV3X3JlZ2V4cFx0ICVzLCAiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKHIwID49MCAmJiByMCA8IChpbnQpbnVtYmVyT2ZS
ZWdFeHBzKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiJXNcbiIsIHJlZ2V4cE5hbWUocmUw
LCByZWdleHAocmUwKSkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIlcyIsIHJl
Z2V4cE5hbWUocmUwLCByZWdleHAocmUwKSkuZGF0YSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJiYWRfcmVnZXhwKCVkKVxuIiwgcmUwKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21vdjogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG1vdlx0XHQgJXMsICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG1vdlx0XHQgJXMsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X25vdDogewpAQCAtNzYwLDEyICs3ODgsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBwcmVfaW5jXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByZV9pbmNcdFx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1
bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJlX2RlYzogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwcmVf
ZGVjXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByZV9kZWNcdFx0ICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcG9zdF9pbmM6IHsKQEAgLTgzNyw3ICs4NjcsOCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6IHsKICAgICAgICAgICAgIGludCBiYXNlID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjaGVja19oYXNfaW5zdGFu
Y2VcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSk7
CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0ICVzIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOiB7CkBAIC04NDUsNyAr
ODc2LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gaW5zdGFuY2VvZlx0XHQgJXMsICVzLCAlcywg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBp
bnN0YW5jZW9mXHRcdCAlcywgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSk7CisgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewpAQCAtODgz
LDcgKzkxNSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgY2FzZSBvcF9yZXNvbHZlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVcdFx0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlXHRcdCAlcywg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtODkxLDE0ICs5MjQsMTYgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV9za2lwXHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSwgc2tpcExldmVscyk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNv
bHZlX3NraXBcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgc2tpcExldmVs
cyk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX2dsb2JhbFx0ICVzLCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50
aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZl
X2dsb2JhbFx0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQg
Kz0gMzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05MDgsNyArOTQzLDggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgSlNW
YWx1ZSBzY29wZSA9IEpTVmFsdWUoKCsraXQpLT51LmpzQ2VsbC5nZXQoKSk7CiAgICAgICAgICAg
ICArK2l0OwogICAgICAgICAgICAgaW50IGRlcHRoID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMsICVzLCAl
cywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgdmFsdWVU
b1NvdXJjZVN0cmluZyhleGVjLCBzY29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9p
ZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIGRlcHRoKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIHJlc29sdmVfZ2xvYmFsX2R5bmFtaWNcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBz
Y29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRh
KCksIGRlcHRoKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxv
Y2F0aW9uKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtOTE2LDcgKzk1Miw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2tpcExl
dmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0
X3Njb3BlZF92YXJcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIGluZGV4LCBza2lwTGV2ZWxzKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIGdldF9zY29wZWRfdmFyXHQgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgaW5kZXgsIHNraXBMZXZlbHMpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05MjQsMjAgKzk2MSwyMyBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgaW5kZXgg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBza2lwTGV2ZWxzID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9zY29wZWRfdmFyXHQgJWQsICVkLCAlc1xuIiwg
bG9jYXRpb24sIGluZGV4LCBza2lwTGV2ZWxzLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfc2NvcGVkX3Zhclx0ICVkLCAlZCwg
JXMiLCBsb2NhdGlvbiwgaW5kZXgsIHNraXBMZXZlbHMsIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytp
dCktPnUucmVnaXN0ZXJQb2ludGVyOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2ds
b2JhbF92YXJcdCAlcywgZyVkKCVwKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2lu
dGVyKSwgcmVnaXN0ZXJQb2ludGVyKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9n
bG9iYWxfdmFyXHQgJXMsIGclZCglcCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50
ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVy
UG9pbnRlcjsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9nbG9iYWxfdmFyX3dhdGNo
YWJsZVx0ICVzLCBnJWQoJXApXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIp
LCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2dsb2Jh
bF92YXJfd2F0Y2hhYmxlXHQgJXMsIGclZCglcCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3Rl
clBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29t
bWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAg
IGl0Kys7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk0NSwxMyArOTg1LDE1IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgY2FzZSBvcF9wdXRfZ2xv
YmFsX3ZhcjogewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBv
aW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVyOwogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFs
X3Zhclx0IGclZCglcCksICVzXG4iLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdp
c3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2Jh
bF92YXJcdCBnJWQoJXApLCAlcyIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lz
dGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHB1dF9nbG9iYWxfdmFyX2NoZWNrXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9u
LCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVn
aXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhcl9jaGVja1x0IGclZCglcCksICVzIiwgbG9j
YXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIp
LCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGl0Kys7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NjAs
MjEgKzEwMDIsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
aWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaXNTdHJpY3QgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfYmFzZSVz
XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfYmFzZSVzXHQgJXMs
ICVzIiwgbG9jYXRpb24sIGlzU3RyaWN0ID8gIl9zdHJpY3QiIDogIiIsIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAg
ICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAl
cywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1l
KGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gZW5zdXJlX3Byb3BlcnR5X2V4aXN0c1x0ICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNv
bHZlX3dpdGhfYmFzZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJl
c29sdmVfd2l0aF9iYXNlICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IHJlc29sdmVfd2l0aF9iYXNlICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQw
LCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTk4Miw3ICsxMDI3LDggQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIHJlc29sdmVfd2l0aF90aGlzICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlk
TmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHJlc29sdmVfd2l0aF90aGlzICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBp
ZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1w
Qnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMDEsNyArMTA0Nyw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgY2FzZSBvcF9nZXRf
c3RyaW5nX2xlbmd0aDogewogICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9jYXRp
b24sIGl0KTsKICAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKGV4ZWMsIGxvY2F0
aW9uKTsKLSAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoOiB7CkBAIC0xMDM4LDcg
KzEwODQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAg
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dldHRlcl9zZXR0ZXJcdCAlcywg
JXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBp
ZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIHB1dF9nZXR0ZXJfc2V0dGVyXHQgJXMsICVzLCAlcywgJXMiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9tZXRob2RfY2hlY2s6IHsKQEAgLTEwNzAsNyArMTExNyw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIpIik7CiAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgIGRhdGFMb2coIlxu
Iik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7
CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0KTsKICAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKGV4ZWMsIGxv
Y2F0aW9uKTsKQEAgLTEwODEsMTQgKzExMjgsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRl
bF9ieV9pZFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlbF9i
eV9pZFx0ICVzLCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGdldF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfYnlfdmFs
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTA5Niw3ICsxMTQ1LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBj
bwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2FyZ3VtZW50X2J5X3Zh
bFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMiku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9hcmd1bWVudF9ieV92YWxc
dCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0x
MTA3LDM4ICsxMTU3LDQ0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjUgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9ieV9wbmFtZVx0ICVz
LCAlcywgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9ieV9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywg
JXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjUpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIHB1dF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdM
aW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
ZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlbF9ieV92YWxc
dCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRh
KCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aW5kZXg6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgdW5zaWduZWQgbjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2J5
X2luZGV4XHQgJXMsICV1LCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7
CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBqbXBcdFx0ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbXBcdFx0ICVk
KC0+JWQpIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wOiB7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBsb29wXHRcdCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcFx0XHQgJWQoLT4lZCkiLCBsb2Nh
dGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNv
ZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2p0cnVlOiB7CkBAIC0xMTY5LDEyOSArMTIyNSwxNDggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB2b2lkKiBwb2ludGVyID0gKCsr
aXQpLT51LnBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVwLCAlZCgt
PiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBwb2ludGVy
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGpuZXFfcHRyXHRcdCAlcywgJXAsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBwb2ludGVyLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfamxlc3M6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgt
PiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2pncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfamdyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
amdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5sZXNzXHRc
dCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pubGVz
c2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5sZXNzZXFc
dFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24g
KyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5sZXNzZXFcdFx0ICVzLCAl
cywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gam5ncmVhdGVyXHRcdCAl
cywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZ3JlYXRlclx0XHQgJXMsICVzLCAl
ZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAl
cywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMs
ICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzczog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3BfaWZfbGVzc1x0
ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBv
ZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcF9pZl9sZXNzXHQgJXMsICVz
LCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xlc3Nl
cTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3BfaWZfbGVz
c2VxXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lmX2xlc3NlcVx0
ICVzLCAlcywgJWQoLT4lZCkiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9p
Zl9ncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9m
ZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9v
cF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lm
X2dyZWF0ZXJcdCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGlu
ZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2Rl
Q29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9sb29wX2hpbnQ6IHsKLSAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIGxvb3BfaGludFxuIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
bG9vcF9oaW50IiwgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX2ltbVx0ICVkLCAl
ZCgtPiVkKSwgJXNcbiIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2Nh
dGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3Rl
cikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9pbW1cdCAlZCwg
JWQoLT4lZCksICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0
aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVy
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9z
d2l0Y2hfY2hhcjogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9jaGFyXHQgJWQsICVkKC0+JWQpLCAl
c1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVm
YXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX2NoYXJcdCAlZCwgJWQoLT4lZCks
ICVzIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVm
YXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkp
OworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3Ry
aW5nOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAlZCgtPiVkKSwgJXNcbiIs
IGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRU
YXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9zdHJpbmdcdCAlZCwgJWQoLT4lZCksICVz
IiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVs
dFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuYzogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
ZjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzaG91bGRDaGVjayA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV3X2Z1bmNcdFx0
ICVzLCBmJWQsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IGYwLCBzaG91bGRDaGVjayA/ICI8Q2hlY2tlZD4iIDogIjxVbmNoZWNrZWQ+Iik7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfZnVuY1x0XHQgJXMsIGYlZCwgJXMiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwLCBzaG91bGRDaGVjayA/ICI8Q2hlY2tl
ZD4iIDogIjxVbmNoZWNrZWQ+Iik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19mdW5jX2V4cFx0ICVzLCBmJWRcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjApOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbmV3X2Z1bmNfZXhwXHQgJXMsIGYlZCIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgZjApOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFu
ZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9jYWxsOiB7CkBAIC0xMzA3LDM1ICsxMzgyLDQxIEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCB0aGlzVmFsdWUgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudHMgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdEZyZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVz
LCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBjYWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZCIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFs
dWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZy
ZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShs
b2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3RlYXJfb2ZmX2FjdGl2YXRpb246IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSB0ZWFyX29mZl9hY3RpdmF0aW9uXHQgJXMsICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRp
b25cdCAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJf
b2ZmX2FyZ3VtZW50cyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJfb2ZmX2FyZ3VtZW50cyAlcyIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3JldDogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXRcdFx0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gcmV0XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3
TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRcdFx0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF9wdXRfcmVzdWx0XHRcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXRfb2JqZWN0X29yX3RoaXM6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
b25zdHJ1Y3Rvcl9yZXRcdFx0ICVzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXMiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0
OiB7CkBAIC0xMzQ2LDEzICsxNDI3LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgY291
bnQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN0cmNh
dFx0XHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291bnQpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gc3RyY2F0XHRcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291
bnQpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90b19wcmlt
aXRpdmU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSB0b19wcmltaXRpdmVcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9wbmFtZXM6
IHsKQEAgLTEzNjEsNyArMTQ0NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIGludCByMiA9IGl0WzNdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMyA9IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBp
dFs1XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfcG5hbWVzXHQg
JXMsICVzLCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X3BuYW1l
c1x0ICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2dl
dF9wbmFtZXMpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzcyLDY3
ICsxNDU2LDc5IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIGludCBzaXplID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGl0
ZXIgPSBpdFs1XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXRbNl0udS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywg
JXMsICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVz
dCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgaSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgaXRlcikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5leHRfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMs
ICVkKC0+JWQpIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBp
dGVyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZHVt
cEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgaXQgKz0g
T1BDT0RFX0xFTkdUSChvcF9uZXh0X3BuYW1lKSAtIDE7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1c2hfc2NvcGU6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9z
Y29wZVx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9zY29wZVx0ICVzIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNv
bW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcG9wX3Njb3BlOiB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBwb3Bfc2NvcGVcbiIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHBv
cF9zY29wZSIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmRO
ZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcHVzaF9uZXdfc2NvcGU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHB1c2hfbmV3X3Njb3BlIFx0JXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBC
eXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wX3Njb3BlczogewogICAgICAgICAgICAgaW50
IHNjb3BlRGVsdGEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGptcF9zY29w
ZXNcdF4lZCwgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBzY29wZURlbHRhLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGptcF9zY29wZXNcdF4l
ZCwgJWQoLT4lZCkiLCBsb2NhdGlvbiwgc2NvcGVEZWx0YSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhdGNo
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGNhdGNoXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNhdGNoXHRcdCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRo
cm93XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRocm93XHRcdCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21t
ZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjogewogICAgICAgICAgICAgaW50
IGswID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSB0aHJv
d19yZWZlcmVuY2VfZXJyb3JcdCAlc1xuIiwgbG9jYXRpb24sIGNvbnN0YW50TmFtZShleGVjLCBr
MCwgZ2V0Q29uc3RhbnQoazApKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
dGhyb3dfcmVmZXJlbmNlX2Vycm9yXHQgJXMiLCBsb2NhdGlvbiwgY29uc3RhbnROYW1lKGV4ZWMs
IGswLCBnZXRDb25zdGFudChrMCkpLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2RlYnVnOiB7CiAgICAgICAgICAgICBpbnQgZGVidWdIb29rSUQg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdExpbmUgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZGVidWdcdFx0ICVzLCAlZCwgJWRcbiIsIGxv
Y2F0aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7
CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCIsIGxvY2F0
aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9j
YWxsOiB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxsICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gcHJvZmlsZV93aWxsX2NhbGwgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVu
dEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOiB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rp
b24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2Zp
bGVfZGlkX2NhbGxcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jdGlv
bikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2ZpbGVfZGlkX2NhbGxc
dCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2VuZDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBlbmRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZW5kXHRcdCAlcyIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkdW1wQnl0ZWNvZGVD
b21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KQEAgLTE2MDEsNiArMTY5Nyw5IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQ
YXJzZWRCbG9ja1RhZywKICAgICAsIG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKDApCiAgICAg
LCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKDApCiAgICAgLCBtX2xpbmVJbmZvKG90aGVy
Lm1fbGluZUluZm8pCisjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorICAgICwgbV9ieXRl
Y29kZUNvbW1lbnRJdGVyYXRvcigwKQorI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAsIG1f
Y2FuQ29tcGlsZVdpdGhERkdTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5vdFNldCkKICNlbmRp
ZgpAQCAtMTY1Myw2ICsxNzUyLDkgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgICwgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKDApCiAgICAgLCBtX29wdGlt
aXphdGlvbkRlbGF5Q291bnRlcigwKQogICAgICwgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRl
cigwKQorI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAsIG1fYnl0ZWNvZGVDb21t
ZW50SXRlcmF0b3IoMCkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCkBA
IC0yMTI3LDYgKzIyMjksODIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVm
ZXJlbgogI2VuZGlmICAgIAogfQogCisjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorLy8g
RmluZHMgdGhlIGNvbW1lbnQgc3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIGJ5dGVjb2RlIG9mZnNl
dC9QQyBpcyBhdmFpbGFibGUuIAorY29uc3QgY2hhciogQ29kZUJsb2NrOjpjb21tZW50Rm9yQnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgQVNTRVJUKGJ5dGVj
b2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKworICAgIFZlY3RvcjxDb21tZW50
PiYgY29tbWVudHMgPSBtX2J5dGVjb2RlQ29tbWVudHM7CisgICAgc2l6ZV90IG51bWJlck9mQ29t
bWVudHMgPSBjb21tZW50cy5zaXplKCk7CisgICAgY29uc3QgY2hhciogcmVzdWx0ID0gMDsKKwor
ICAgIGlmICghbnVtYmVyT2ZDb21tZW50cykKKyAgICAgICAgcmV0dXJuIDA7IC8vIE5vIGNvbW1l
bnRzIHRvIG1hdGNoIHdpdGguCisKKyAgICAvLyBUaGUgbmV4dCBtYXRjaCBpcyBtb3N0IGxpa2Vs
eSB0aGUgbmV4dCBjb21tZW50IGluIHRoZSBsaXN0LgorICAgIC8vIERvIGEgcXVpY2sgY2hlY2sg
dG8gc2VlIGlmIHRoYXQgaXMgYSBtYXRjaCBmaXJzdC4KKyAgICAvLyBtX2J5dGVjb2RlQ29tbWVu
dEl0ZXJhdG9yIHNob3VsZCBhbHJlYWR5IGJlIHBvaW50aW5nIHRvIHRoZQorICAgIC8vIG5leHQg
Y29tbWVudCB3ZSBzaG91bGQgY2hlY2suCisKKyAgICBBU1NFUlQobV9ieXRlY29kZUNvbW1lbnRJ
dGVyYXRvciA8IGNvbW1lbnRzLnNpemUoKSk7CisKKyAgICBzaXplX3QgaSA9IG1fYnl0ZWNvZGVD
b21tZW50SXRlcmF0b3I7CisgICAgc2l6ZV90IGNvbW1lbnRQQyA9IGNvbW1lbnRzW2ldLnBjOwor
ICAgIGlmIChjb21tZW50UEMgPT0gYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgLy8gV2UndmUg
Z290IGEgbWF0Y2guIEFsbCBkb25lIQorICAgICAgICBtX2J5dGVjb2RlQ29tbWVudEl0ZXJhdG9y
ID0gaTsKKyAgICAgICAgcmVzdWx0ID0gY29tbWVudHNbaV0uc3RyaW5nOworICAgIH0gZWxzZSBp
ZiAoY29tbWVudFBDID4gYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQg
Y29tbWVudCBpcyBhbHJlYWR5IGdyZWF0ZXIgdGhhbiB0aGUgcmVxdWVzdGVkIFBDLgorICAgICAg
ICAvLyBTdGFydCBzZWFyY2hpbmcgZnJvbSB0aGUgZmlyc3QgY29tbWVudC4KKyAgICAgICAgaSA9
IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgY3VycmVudCBjb21t
ZW50J3MgUEMgaXMgbGVzcyB0aGFuIHRoZSByZXF1ZXN0ZWQgUEMuCisgICAgICAgIC8vIEhlbmNl
LCB3ZSBjYW4ganVzdCBzdGFydCBzZWFyY2hpbmcgZnJvbSB0aGUgbmV4dCBjb21tZW50IGluIHRo
ZQorICAgICAgICAvLyBsaXN0LgorICAgICAgICBpKys7CisgICAgfQorCisgICAgLy8gSWYgdGhl
IHJlc3VsdCBpcyBzdGlsbCBub3QgZm91bmQsIGRvIGEgbGluZWFyIHNlYXJjaCBpbiB0aGUgcmFu
Z2UKKyAgICAvLyB0aGF0IHdlJ3ZlIGRldGVybWluZWQgYWJvdmUuCisgICAgaWYgKCFyZXN1bHQp
IHsKKyAgICAgICAgZm9yICg7IGkgPCBjb21tZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgY29tbWVudFBDID0gY29tbWVudHNbaV0ucGM7CisgICAgICAgICAgICBpZiAoY29tbWVudFBD
ID09IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tbWVudHNb
aV0uc3RyaW5nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGNvbW1lbnRzW2ldLnBjID4gYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBUaGUgY3VycmVudCBjb21tZW50IFBDIGlzIGFscmVhZHkgcGFzdCB0aGUgcmVxdWVz
dGVkCisgICAgICAgICAgICAgICAgLy8gYnl0ZWNvZGVPZmZzZXQuIEhlbmNlLCB0aGVyZSBhcmUg
bm8gbW9yZSBwb3NzaWJsZQorICAgICAgICAgICAgICAgIC8vIG1hdGNoZXMuIEp1c3QgZmFpbC4K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFVwZGF0ZSB0aGUgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIG5leHQgY29tbWVu
dC4KKyAgICBpZiAoKytpID49IG51bWJlck9mQ29tbWVudHMpIHsKKyAgICAgICAgLy8gQXQgbW9z
dCBwb2ludCB0byB0aGUgbGFzdCBjb21tZW50IGVudHJ5LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUK
KyAgICAgICAgLy8gbmV4dCB0aW1lIHdlIGNhbGwgdGhpcyBmdW5jdGlvbiwgdGhlIHF1aWNrIGNo
ZWNrcyB3aWxsIGF0IGxlYXN0CisgICAgICAgIC8vIGhhdmUgb25lIGVudHJ5IHRvIGNoZWNrIGFu
ZCBjYW4gZmFpbCBmYXN0IGlmIGFwcHJvcHJpYXRlLgorICAgICAgICBpID0gbnVtYmVyT2ZDb21t
ZW50cyAtIDE7CisgICAgfQorICAgIG1fYnl0ZWNvZGVDb21tZW50SXRlcmF0b3IgPSBpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50
cygpCit7CisgICAgVmVjdG9yPENvbW1lbnQ+JiBjb21tZW50cyA9IG1fYnl0ZWNvZGVDb21tZW50
czsKKyAgICBwcmludGYoIkNvbW1lbnRzIGZvciBjb2RlYmxvY2sgJXA6IHNpemUgJWx1XG4iLCB0
aGlzLCBjb21tZW50cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWVu
dHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHByaW50ZigiICAgICBwYyAlbHUgOiAnJXMnXG4iLCBj
b21tZW50c1tpXS5wYywgY29tbWVudHNbaV0uc3RyaW5nKTsKKyAgICBwcmludGYoIkVuZCBvZiBj
b21tZW50cyBmb3IgY29kZWJsb2NrICVwXG4iLCB0aGlzKTsKK30KKyNlbmRpZiAvLyBFTkFCTEVf
QllURUNPREVfQ09NTUVOVFMKKwogSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVChieXRl
Y29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjEzODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgorI2lu
Y2x1ZGUgIkNvbW1lbnQuaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5oIgogI2luY2x1
ZGUgIkRGR0NvZGVCbG9ja3MuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKQEAgLTY2LDEwICs2
NywzNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
ZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKy8vIFNldCBFTkFC
TEVfQllURUNPREVfQ09NTUVOVFMgdG8gMSB0byBlbmFibGUgcmVjb3JkaW5nIGJ5dGVjb2RlIGdl
bmVyYXRvcgorLy8gY29tbWVudHMgZm9yIHRoZSBieXRlY29kZXMgdGhhdCBpdCBnZW5lcmF0ZXMu
IFRoaXMgd2lsbCBhbGxvdworLy8gQ29kZUJsb2NrOjpkdW1wKCkgdG8gcHJvdmlkZSBzb21lIGNv
bnRleHR1YWwgaW5mbyBhYm91dCB0aGUgYnl0ZWNvZGVzLgorLy8KKy8vIFRoZSB3YXkgdGhpcyBj
b21tZW50IHN5c3RlbSB3b3JrcyBpcyBhcyBmb2xsb3dzOgorLy8gMS4gVGhlIEJ5dGVjb2RlR2Vu
ZXJhdG9yIGNhbGxzIHByZXBlbmRDb21tZW50KCkgd2l0aCBhIGNvbnN0YW50IGNvbW1lbnQKKy8v
ICAgIHN0cmluZyBpbiAudGV4dC4gVGhlIHN0cmluZyBtdXN0IG5vdCBiZSBhIHN0YWNrIG9yIGhl
YXAgYWxsb2NhdGVkCisvLyAgICBzdHJpbmcuCisvLyAyLiBXaGVuIHRoZSBCeXRlY29kZUdlbmVy
YXRvcidzIGVtaXRPcGNvZGUoKSBpcyBjYWxsZWQsIHRoZSBsYXN0CisvLyAgICBwcmVwZW5kZWQg
Y29tbWVudCB3aWxsIGJlIHJlY29yZGVkIHdpdGggdGhlIFBDIG9mIHRoZSBvcGNvZGUgYmVpbmcK
Ky8vICAgIGVtaXR0ZWQuIFRoaXMgY29tbWVudCBpcyBiZWluZyByZWNvcmRlZCBpbiB0aGUgQ29k
ZUJsb2NrJ3MKKy8vICAgIG1fYnl0ZWNvZGVDb21tZW50cy4KKy8vIDMuIFdoZW4gQ29kZUJsb2Nr
OjpkdW1wKCkgaXMgY2FsbGVkLCBpdCB3aWxsIHBhaXIgdXAgdGhlIGNvbW1lbnRzIHdpdGgKKy8v
ICAgIHRoZWlyIGNvcnJlc3BvbmRpbmcgYnl0ZWNvZGVzIGJhc2VkIG9uIHRoZSBieXRlY29kZSBh
bmQgY29tbWVudCdzCisvLyAgICBQQy4gSWYgYSBtYXRjaGluZyBwYWlyIGlzIGZvdW5kLCB0aGUg
Y29tbWVudCB3aWxsIGJlIHByaW50ZWQgYWZ0ZXIKKy8vICAgIHRoZSBieXRlY29kZS4gSWYgbm90
LCBubyBjb21tZW50IGlzIHByaW50ZWQuCisvLworLy8gTk9URTogRW5hYmxpbmcgdGhpcyB3aWxs
IGNvbnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgYXQgcnVudGltZSB0byBzdG9yZQorLy8gdGhlIGNv
bW1lbnRzLiBTaW5jZSB0aGVzZSBjb21tZW50cyBhcmUgb25seSB1c2VmdWwgZm9yIFZNIGRlYnVn
Z2luZworLy8gKGFzIG9wcG9zZWQgdG8gYXBwIGRlYnVnZ2luZyksIHRoaXMgZmVhdHVyZSBpcyB0
byBiZSBkaXNhYmxlZCBieSBkZWZhdWx0LAorLy8gYW5kIGNhbiBiZSBlbmFibGVkIGFzIG5lZWRl
ZCBmb3IgVk0gZGV2ZWxvcG1lbnQgdXNlIG9ubHkuCisKKyNkZWZpbmUgRU5BQkxFX0JZVEVDT0RF
X0NPTU1FTlRTIDAKKwogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBERkdDb2RlQmxvY2tz
OwpAQCAtMTU1LDYgKzE4MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGR1bXBCeXRl
Y29kZUNvbW1lbnRBbmROZXdMaW5lKGludCBsb2NhdGlvbik7CisjaWYgRU5BQkxFKEJZVEVDT0RF
X0NPTU1FTlRTKQorICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50Rm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICB2b2lkIGR1bXBCeXRlY29kZUNvbW1l
bnRzKCk7CisjZW5kaWYKKwogICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgaW50IGxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIHZvaWQg
ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KTsKQEAgLTM2NSw2
ICszOTcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0
cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAg
ICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgICAgIAorI2lmIEVOQUJMRShCWVRF
Q09ERV9DT01NRU5UUykKKyAgICAgICAgVmVjdG9yPENvbW1lbnQ+JiBieXRlY29kZUNvbW1lbnRz
KCkgeyByZXR1cm4gbV9ieXRlY29kZUNvbW1lbnRzOyB9CisjZW5kaWYKKwogICAgICAgICBzaXpl
X3QgcHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCk7CiAgICAgICAgIAogICAgICAgICBib29sIHVz
ZXNPcGNvZGUoT3Bjb2RlSUQpOwpAQCAtMTMwMiw2ICsxMzM4LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB1aW50MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwogCiAgICAg
ICAgIFZlY3RvcjxMaW5lSW5mbz4gbV9saW5lSW5mbzsKKyNpZiBFTkFCTEUoQllURUNPREVfQ09N
TUVOVFMpCisgICAgICAgIFZlY3RvcjxDb21tZW50PiAgbV9ieXRlY29kZUNvbW1lbnRzOworICAg
ICAgICBzaXplX3QgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcjsKKyNlbmRpZgogCiAgICAgICAg
IHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29tbWVudC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbW1lbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb21tZW50X2gKKyNk
ZWZpbmUgQ29tbWVudF9oCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgQ29tbWVudCB7Cisg
ICAgc2l6ZV90IHBjOworICAgIGNvbnN0IGNoYXIqIHN0cmluZzsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gQ29tbWVudF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2
aXNpb24gMTIxMzgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25P
cHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9u
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBA
IC0yNDUsNiArMjQ2LDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBy
bwogICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2Jq
ZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNj
b3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3Bl
Q2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJv
bFRhYmxlKQorI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAsIG1fY3VycmVudENv
bW1lbnRTdHJpbmcoMCkKKyNlbmRpZgogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAg
ICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJh
bWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQpAQCAtMjcwLDYgKzI3NCw3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8KICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdI
b29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7
CiAKKyAgICBwcmVwZW5kQ29tbWVudCgiZW50ZXJpbmcgUHJvZ3JhbSBibG9jayIpOwogICAgIGVt
aXRPcGNvZGUob3BfZW50ZXIpOwogICAgIGNvZGVCbG9jay0+c2V0R2xvYmFsRGF0YShtX2dsb2Jh
bERhdGEpOwogCkBAIC0zMjIsNiArMzI3LDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKEZ1bgogICAgICwgbV9zaG91bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFp
bi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hT
b3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3Bl
Q2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJv
bFRhYmxlKHN5bWJvbFRhYmxlKQorI2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAs
IG1fY3VycmVudENvbW1lbnRTdHJpbmcoMCkKKyNlbmRpZgogICAgICwgbV9zY29wZU5vZGUoZnVu
Y3Rpb25Cb2R5KQogICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9hY3RpdmF0
aW9uUmVnaXN0ZXIoMCkKQEAgLTM0OSw5ICszNTcsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKEZ1bgogCiAgICAgY29kZUJsb2NrLT5zZXRHbG9iYWxEYXRhKG1fZ2xv
YmFsRGF0YSk7CiAgICAgCisgICAgcHJlcGVuZENvbW1lbnQoImVudGVyaW5nIEZ1bmN0aW9uIGJs
b2NrIik7CiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CiAgICAgaWYgKG1fY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpIHsKICAgICAgICAgbV9hY3RpdmF0aW9uUmVnaXN0ZXIgPSBh
ZGRWYXIoKTsKKyAgICAgICAgcHJlcGVuZENvbW1lbnQoImFjdGl2YXRpb24gZm9yIEZ1bGwgU2Nv
cGUgQ2hhaW4iKTsKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIobV9hY3RpdmF0aW9uUmVn
aXN0ZXIpOwogICAgICAgICBtX2NvZGVCbG9jay0+c2V0QWN0aXZhdGlvblJlZ2lzdGVyKG1fYWN0
aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICB9CkBAIC0zNjgsMTAgKzM3OCwxMyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAgICAgICAgIGNvZGVCbG9j
ay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgdW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpID09IEpTQzo6dW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpOwogCisgICAgICAgIHByZXBl
bmRDb21tZW50KCJhcmd1bWVudHMgZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAgICAgZW1p
dEluaXRMYXp5UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICBwcmVwZW5kQ29t
bWVudCgidW5tb2RpZmllZCBhcmd1bWVudHMgZm9yIEZ1bGwgU2NvcGUgQ2hhaW4iKTsKICAgICAg
ICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAg
ICAgICAgIHByZXBlbmRDb21tZW50KCJjcmVhdGUgYXJndW1lbnRzIGZvciBzdHJpY3QgbW9kZSIp
OwogICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CiAg
ICAgICAgIH0KQEAgLTM4MCw2ICszOTMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoRnVuCiAgICAgICAgIC8vIGl0IGZyb20gYSBjYWxsIGZyYW1lLiAgSW4gdGhlIGxv
bmctdGVybSBpdCBzaG91bGQgc3RvcCBkb2luZyB0aGF0ICg8cmRhcjovL3Byb2JsZW0vNjkxMTg4
Nj4pLAogICAgICAgICAvLyBidXQgZm9yIG5vdyB3ZSBmb3JjZSBlYWdlciBjcmVhdGlvbiBvZiB0
aGUgYXJndW1lbnRzIG9iamVjdCB3aGVuIGRlYnVnZ2luZy4KICAgICAgICAgaWYgKG1fc2hvdWxk
RW1pdERlYnVnSG9va3MpIHsKKyAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJjcmVhdGUgYXJn
dW1lbnRzIGZvciBkZWJ1ZyBob29rcyIpOwogICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVh
dGVfYXJndW1lbnRzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVu
dHNSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgIH0KQEAgLTM5OCwxMCArNDEyLDEyIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAgICAgIGlmIChm
dW5jdGlvbkJvZHktPmNhcHR1cmVzKGlkZW50KSkgewogICAgICAgICAgICAgICAgIGlmICghbV9o
YXNDcmVhdGVkQWN0aXZhdGlvbikgewogICAgICAgICAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRB
Y3RpdmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcHJlcGVuZENvbW1lbnQoImFj
dGl2YXRpb24gZm9yIGNhcHR1cmVkIHZhcnMiKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdE9w
Y29kZShvcF9jcmVhdGVfYWN0aXZhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIG1fZnVuY3Rpb25zLmFkZChpZGVudC5pbXBsKCkpOwor
ICAgICAgICAgICAgICAgIHByZXBlbmRDb21tZW50KCJjYXB0dXJlZCBmdW5jdGlvbiB2YXIiKTsK
ICAgICAgICAgICAgICAgICBlbWl0TmV3RnVuY3Rpb24oYWRkVmFyKGlkZW50LCBmYWxzZSksIGZ1
bmN0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE0LDYgKzQzMCw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICBib29sIGNhbkxhemls
eUNyZWF0ZUZ1bmN0aW9ucyA9ICFmdW5jdGlvbkJvZHktPm5lZWRzQWN0aXZhdGlvbkZvck1vcmVU
aGFuVmFyaWFibGVzKCkgJiYgIW1fc2hvdWxkRW1pdERlYnVnSG9va3M7CiAgICAgaWYgKCFjYW5M
YXppbHlDcmVhdGVGdW5jdGlvbnMgJiYgIW1faGFzQ3JlYXRlZEFjdGl2YXRpb24pIHsKICAgICAg
ICAgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbiA9IHRydWU7CisgICAgICAgIHByZXBlbmRDb21tZW50
KCJjYW5ub3QgbGF6aWx5IGNyZWF0ZSBmdW5jdGlvbnMiKTsKICAgICAgICAgZW1pdE9wY29kZShv
cF9jcmVhdGVfYWN0aXZhdGlvbik7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2Fj
dGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQpAQCAtNDI4LDYgKzQ0NSw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWcgPSBhZGRWYXIoaWRlbnQsIGZhbHNlKTsKICAgICAgICAgICAgIC8v
IERvbid0IGxhemlseSBjcmVhdGUgZnVuY3Rpb25zIHRoYXQgb3ZlcnJpZGUgdGhlIG5hbWUgJ2Fy
Z3VtZW50cycKICAgICAgICAgICAgIC8vIGFzIHRoaXMgd291bGQgY29tcGxpY2F0ZSBsYXp5IGlu
c3RhbnRpYXRpb24gb2YgYWN0dWFsIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIHByZXBlbmRDb21t
ZW50KCJhIGZ1bmN0aW9uIHRoYXQgb3ZlcnJpZGUgJ2FyZ3VtZW50cyciKTsKICAgICAgICAgICAg
IGlmICghY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zIHx8IGlkZW50ID09IHByb3BlcnR5TmFtZXMo
KS5hcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgZW1pdE5ld0Z1bmN0aW9uKHJlZy5nZXQoKSwg
ZnVuY3Rpb24pOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00NjAsNiArNDc4LDcgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bgogICAgIHByZXNlcnZlTGFzdFZhcigp
OwogCiAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICBwcmVwZW5kQ29tbWVudCgi
J3RoaXMnIGJlY2F1c2Ugd2UgYXJlIGEgQ29uc3RydWN0b3IgZnVuY3Rpb24iKTsKICAgICAgICAg
ZW1pdE9wY29kZShvcF9jcmVhdGVfdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsKICAgICB9IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpICYmIChmdW5jdGlvbkJvZHktPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpIHx8IG1fc2hvdWxkRW1pdERlYnVnSG9va3MpKSB7CkBAIC00NzUsNiArNDk0LDkg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YQogICAgICwgbV9zaG91
bGRFbWl0UmljaFNvdXJjZUluZm8oc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5zdXBwb3J0c1JpY2hTb3VyY2VJbmZvKHNjb3BlQ2hhaW4tPmdsb2Jh
bE9iamVjdC5nZXQoKSkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oKnNjb3BlQ2hhaW4tPmdsb2JhbERh
dGEsIHNjb3BlQ2hhaW4pCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQorI2lmIEVO
QUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAsIG1fY3VycmVudENvbW1lbnRTdHJpbmcoMCkK
KyNlbmRpZgogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayhj
b2RlQmxvY2spCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9m
ZnNldCgpKQpAQCAtNTAwLDYgKzUyMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihFdmEKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2Jhc2VTY29w
ZURlcHRoKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVl
KTsKIAorICAgIHByZXBlbmRDb21tZW50KCJlbnRlcmluZyBFdmFsIGJsb2NrIik7CiAgICAgZW1p
dE9wY29kZShvcF9lbnRlcik7CiAgICAgY29kZUJsb2NrLT5zZXRHbG9iYWxEYXRhKG1fZ2xvYmFs
RGF0YSk7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CkBAIC02NTgsMTAg
KzY4MSwzMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3Bjb2RlKE9wY29kCiAgICAg
QVNTRVJUKG9wY29kZVBvc2l0aW9uIC0gbV9sYXN0T3Bjb2RlUG9zaXRpb24gPT0gb3Bjb2RlTGVu
Z3RoKG1fbGFzdE9wY29kZUlEKSB8fCBtX2xhc3RPcGNvZGVJRCA9PSBvcF9lbmQpOwogICAgIG1f
bGFzdE9wY29kZVBvc2l0aW9uID0gb3Bjb2RlUG9zaXRpb247CiAjZW5kaWYKKyAgICBlbWl0Q29t
bWVudCgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnbG9iYWxEYXRhKCktPmludGVycHJl
dGVyLT5nZXRPcGNvZGUob3Bjb2RlSUQpKTsKICAgICBtX2xhc3RPcGNvZGVJRCA9IG9wY29kZUlE
OwogfQogCisjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQorLy8gUmVjb3JkIGEgY29tbWVu
dCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29tbWVudHMgbGlzdCBmb3IgdGhlIGN1cnJlbnQgb3Bjb2Rl
CisvLyB0aGF0IGlzIGFib3V0IHRvIGJlIGVtaXR0ZWQuCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q29tbWVudCgpCit7CisgICAgaWYgKG1fY3VycmVudENvbW1lbnRTdHJpbmcpIHsKKyAg
ICAgICAgc2l6ZV90IG9wY29kZVBvc2l0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAg
ICAgICBDb21tZW50IGNvbW1lbnQgPSB7IG9wY29kZVBvc2l0aW9uLCBtX2N1cnJlbnRDb21tZW50
U3RyaW5nIH07CisgICAgICAgIG1fY29kZUJsb2NrLT5ieXRlY29kZUNvbW1lbnRzKCkuYXBwZW5k
KGNvbW1lbnQpOworICAgICAgICBtX2N1cnJlbnRDb21tZW50U3RyaW5nID0gMDsKKyAgICB9Cit9
CisKKy8vIFJlZ2lzdGVyIGEgY29tbWVudCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG5leHQg
b3Bjb2RlIHRoYXQgd2lsbCBiZSBlbWl0dGVkLgordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHJl
cGVuZENvbW1lbnQoY29uc3QgY2hhciogc3RyaW5nKQoreworICAgIG1fY3VycmVudENvbW1lbnRT
dHJpbmcgPSBzdHJpbmc7Cit9CisjZW5kaWYKKwogVmFsdWVQcm9maWxlKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEyMTM4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQyLDYgKzU0MiwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIAorI2lmIEVOQUJM
RShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAgICAgLy8gUmVjb3JkIGEgY29tbWVudCBpbiB0aGUg
Q29kZUJsb2NrJ3MgY29tbWVudHMgbGlzdCBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgLy8gb3Bj
b2RlIHRoYXQgaXMgYWJvdXQgdG8gYmUgZW1pdHRlZC4KKyAgICAgICAgdm9pZCBlbWl0Q29tbWVu
dCgpOworICAgICAgICAvLyBSZWdpc3RlciBhIGNvbW1lbnQgdG8gYmUgYXNzb2NpYXRlZCB3aXRo
IHRoZSBuZXh0IG9wY29kZSB0aGF0IHdpbGwKKyAgICAgICAgLy8gYmUgZW1pdHRlZC4KKyAgICAg
ICAgdm9pZCBwcmVwZW5kQ29tbWVudChjb25zdCBjaGFyKiBzdHJpbmcpOworI2Vsc2UKKyAgICAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGVtaXRDb21tZW50KCkgeyB9CisgICAgICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBwcmVwZW5kQ29tbWVudChjb25zdCBjaGFyKikgeyB9CisjZW5kaWYKKwogICAg
ICAgICB2b2lkIGVtaXRPcGNvZGUoT3Bjb2RlSUQpOwogICAgICAgICBWYWx1ZVByb2ZpbGUqIGVt
aXRQcm9maWxlZE9wY29kZShPcGNvZGVJRCk7CiAgICAgICAgIHZvaWQgcmV0cmlldmVMYXN0Qmlu
YXJ5T3AoaW50JiBkc3RJbmRleCwgaW50JiBzcmMxSW5kZXgsIGludCYgc3JjMkluZGV4KTsKQEAg
LTYyMyw2ICs2MzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWZWN0b3I8SW5zdHJ1
Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgICAg
ICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUoKSB7IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQor
I2lmIEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKKyAgICAgICAgVmVjdG9yPENvbW1lbnQ+JiBj
b21tZW50cygpIHsgcmV0dXJuIG1fY29tbWVudHM7IH0KKyNlbmRpZgogCiAgICAgICAgIGJvb2wg
c2hvdWxkT3B0aW1pemVMb2NhbHMoKQogICAgICAgICB7CkBAIC02NjQsNiArNjc5LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBTdHJvbmc8U2NvcGVDaGFpbk5vZGU+IG1fc2NvcGVDaGFp
bjsKICAgICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAKKyNpZiBFTkFCTEUoQllU
RUNPREVfQ09NTUVOVFMpCisgICAgICAgIFZlY3RvcjxDb21tZW50PiBtX2NvbW1lbnRzOworICAg
ICAgICBjb25zdCBjaGFyICptX2N1cnJlbnRDb21tZW50U3RyaW5nOworI2VuZGlmCisKICAgICAg
ICAgU2NvcGVOb2RlKiBtX3Njb3BlTm9kZTsKICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9j
azsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>