<?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>162809</bug_id>
          
          <creation_ts>2016-09-30 14:20:40 -0700</creation_ts>
          <short_desc>Emit DebugHooks uniformly with pause locations instead of having separate pause locations and op_debug emits</short_desc>
          <delta_ts>2016-10-12 11:51:14 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1235415</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-09-30 14:20:40 -0700</bug_when>
    <thetext>Summary:
Emit DebugHooks uniformly with pause locations instead of having separate pause locations and op_debug emits

Currently:
- The Parser generates pause locations and sets nodes as needing a debug hook
- Bytecode generation emits op_debugs, and ensures all nodes it generates for needed a debug hook

This ensures op_debugs are generated for breakpoint locations.
However this does not ensure all breakpoint locations generate op_debugs.

We should eliminate the distinction so that op_debugs are always generated for nodes where we set breakpoint locations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239095</commentid>
    <comment_count>1</comment_count>
      <attachid>291318</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-11 16:51:00 -0700</bug_when>
    <thetext>Created attachment 291318
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239098</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-11 16:56:34 -0700</bug_when>
    <thetext>Naturally this doesn&apos;t apply because of patches still up for review that I&apos;m building off of =(. I&apos;ll put up a combined patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239100</commentid>
    <comment_count>3</comment_count>
      <attachid>291319</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-11 16:57:19 -0700</bug_when>
    <thetext>Created attachment 291319
[PATCH] For Bots - All Necessary Parts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239102</commentid>
    <comment_count>4</comment_count>
      <attachid>291318</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-11 17:02:57 -0700</bug_when>
    <thetext>Comment on attachment 291318
[PATCH] Proposed Fix

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

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:101
&gt; +    if (value != MixedTriState) {
&gt; +        if (UNLIKELY(needsDebugHook()))
&gt; +            generator.emitDebugHook(this);
&gt; +    }

The reason these emitBytecodeInConditionContext don&apos;t arbitrarily emit a debug hook is because if we fall into the ExpressionNode::emitBytecodeInConditionContext path, that function will emit a debug hook. So we do this dance to avoid emitting two debug hooks. I&apos;ll clarify this in the ChangeLog somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239384</commentid>
    <comment_count>5</comment_count>
      <attachid>291319</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-12 11:32:06 -0700</bug_when>
    <thetext>Comment on attachment 291319
[PATCH] For Bots - All Necessary Parts

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239385</commentid>
    <comment_count>6</comment_count>
      <attachid>291319</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 11:33:19 -0700</bug_when>
    <thetext>Comment on attachment 291319
[PATCH] For Bots - All Necessary Parts

Rejecting attachment 291319 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 291319, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebInspectorUI/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/2271766</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239403</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-12 11:51:08 -0700</bug_when>
    <thetext>&lt;https://trac.webkit.org/changeset/207228&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291318</attachid>
            <date>2016-10-11 16:51:00 -0700</date>
            <delta_ts>2016-10-12 11:51:14 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>emit-debug-hooks01.patch</filename>
            <type>text/plain</type>
            <size>70908</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MGI4NTY2Li5kNTE5MzEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAt
MTEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBFbWl0
IERlYnVnSG9va3MgdW5pZm9ybWx5IHdpdGggcGF1c2UgbG9jYXRpb25zIGluc3RlYWQgb2YgaGF2
aW5nIHNlcGFyYXRlIHBhdXNlIGxvY2F0aW9ucyBhbmQgb3BfZGVidWcgZW1pdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjgwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy5odG1s
OgorICAgICAgICBBZGQgbmV3IHRlc3RzIGZvciBzdGVwcGluZyB0aHJvdWdoIGNvbmRpdGlvbmFs
IGV4cHJlc3Npb25zIHdpdGggY29uc3RhbnRzLAorICAgICAgICBsb2dpY2FsIG9wZXJhdGlvbnMs
IGJpbmFyeSBvcGVyYXRpb25zLCBhbmQgdW5hcnkgbmVnYXRpb25zLgorCisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMuaHRtbDoK
KyAgICAgICAgVXBkYXRlIHRlc3RzIGZvciBjaGFuZ2VzIGluIHN0ZXBwaW5nIGJlaGF2aW9yIGlu
IGZvciBsb29wcy4KKwogMjAxNi0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVzZSBJRExUeXBlcyBpbiBtb3JlIHBsYWNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctY29udHJvbC1mbG93LWV4cGVjdGVkLnR4dAppbmRleCA5YjU5NWEwLi4yMjdhZjA0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBp
bmctY29udHJvbC1mbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93LWV4cGVjdGVkLnR4dApAQCAt
Nyw0MCArNyw0MCBAQCBFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SWZTaW5nbGVTdGF0ZW1l
bnQpCiBTVEVQUzogb3Zlciwgb3Zlciwgb3Zlciwgb3ZlciwgcmVzdW1lCiBQQVVTRUQgKGRlYnVn
Z2VyLXN0YXRlbWVudCkKIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MTY6NQotICAg
ICAxMiAgICB9CisgICAgIDEyICAgIAogICAgICAxMyAgICAKICAgICAgMTQgICAgZnVuY3Rpb24g
ZW50cnlJZlNpbmdsZVN0YXRlbWVudCgpIHsKICAtPiAgMTUgICAgICAgIHxkZWJ1Z2dlcjsKLSAg
ICAgMTYgICAgICAgIGlmICh0cnVlKQorICAgICAxNiAgICAgICAgaWYgKHRydXRoeSkKICAgICAg
MTcgICAgICAgICAgICBhKCk7Ci0gICAgIDE4ICAgICAgICBpZiAoZmFsc2UpCisgICAgIDE4ICAg
ICAgICBpZiAoZmFsc2V5KQogCiBBQ1RJT046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlJZlNp
bmdsZVN0YXRlbWVudDoxNzo5CiAgICAgIDEzICAgIAogICAgICAxNCAgICBmdW5jdGlvbiBlbnRy
eUlmU2luZ2xlU3RhdGVtZW50KCkgewogICAgICAxNSAgICAgICAgZGVidWdnZXI7Ci0gLT4gIDE2
ICAgICAgICBpZiAofHRydWUpCisgLT4gIDE2ICAgICAgICBpZiAofHRydXRoeSkKICAgICAgMTcg
ICAgICAgICAgICBhKCk7Ci0gICAgIDE4ICAgICAgICBpZiAoZmFsc2UpCisgICAgIDE4ICAgICAg
ICBpZiAoZmFsc2V5KQogICAgICAxOSAgICAgICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVwLW92
ZXIKIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MTg6OQogICAgICAxNCAgICBmdW5j
dGlvbiBlbnRyeUlmU2luZ2xlU3RhdGVtZW50KCkgewogICAgICAxNSAgICAgICAgZGVidWdnZXI7
Ci0gICAgIDE2ICAgICAgICBpZiAodHJ1ZSkKKyAgICAgMTYgICAgICAgIGlmICh0cnV0aHkpCiAg
LT4gIDE3ICAgICAgICAgICAgfGEoKTsKLSAgICAgMTggICAgICAgIGlmIChmYWxzZSkKKyAgICAg
MTggICAgICAgIGlmIChmYWxzZXkpCiAgICAgIDE5ICAgICAgICAgICAgYSgpOwogICAgICAyMCAg
ICB9CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmU2luZ2xlU3RhdGVtZW50
OjE5OjkKICAgICAgMTUgICAgICAgIGRlYnVnZ2VyOwotICAgICAxNiAgICAgICAgaWYgKHRydWUp
CisgICAgIDE2ICAgICAgICBpZiAodHJ1dGh5KQogICAgICAxNyAgICAgICAgICAgIGEoKTsKLSAt
PiAgMTggICAgICAgIGlmICh8ZmFsc2UpCisgLT4gIDE4ICAgICAgICBpZiAofGZhbHNleSkKICAg
ICAgMTkgICAgICAgICAgICBhKCk7CiAgICAgIDIwICAgIH0KICAgICAgMjEgICAgCkBAIC00OCw3
ICs0OCw3IEBAIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MTk6OQogQUNUSU9OOiBz
dGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MjE6MgogICAgICAxNyAg
ICAgICAgICAgIGEoKTsKLSAgICAgMTggICAgICAgIGlmIChmYWxzZSkKKyAgICAgMTggICAgICAg
IGlmIChmYWxzZXkpCiAgICAgIDE5ICAgICAgICAgICAgYSgpOwogIC0+ICAyMCAgICB9fAogICAg
ICAyMSAgICAKQEAgLTY4LDcgKzY4LDcgQEAgUEFVU0UgQVQgZW50cnlJZk11bHRpU3RhdGVtZW50
OjI0OjUKICAgICAgMjEgICAgCiAgICAgIDIyICAgIGZ1bmN0aW9uIGVudHJ5SWZNdWx0aVN0YXRl
bWVudCgpIHsKICAtPiAgMjMgICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAgMjQgICAgICAgIGlmICh0
cnVlKSB7CisgICAgIDI0ICAgICAgICBpZiAodHJ1dGh5KSB7CiAgICAgIDI1ICAgICAgICAgICAg
YSgpOwogICAgICAyNiAgICAgICAgICAgIGEoKTsKIApAQCAtNzcsNyArNzcsNyBAQCBQQVVTRSBB
VCBlbnRyeUlmTXVsdGlTdGF0ZW1lbnQ6MjU6OQogICAgICAyMSAgICAKICAgICAgMjIgICAgZnVu
Y3Rpb24gZW50cnlJZk11bHRpU3RhdGVtZW50KCkgewogICAgICAyMyAgICAgICAgZGVidWdnZXI7
Ci0gLT4gIDI0ICAgICAgICBpZiAofHRydWUpIHsKKyAtPiAgMjQgICAgICAgIGlmICh8dHJ1dGh5
KSB7CiAgICAgIDI1ICAgICAgICAgICAgYSgpOwogICAgICAyNiAgICAgICAgICAgIGEoKTsKICAg
ICAgMjcgICAgICAgIH0KQEAgLTg2LDIwICs4NiwyMCBAQCBBQ1RJT046IHN0ZXAtb3ZlcgogUEFV
U0UgQVQgZW50cnlJZk11bHRpU3RhdGVtZW50OjI2OjkKICAgICAgMjIgICAgZnVuY3Rpb24gZW50
cnlJZk11bHRpU3RhdGVtZW50KCkgewogICAgICAyMyAgICAgICAgZGVidWdnZXI7Ci0gICAgIDI0
ICAgICAgICBpZiAodHJ1ZSkgeworICAgICAyNCAgICAgICAgaWYgKHRydXRoeSkgewogIC0+ICAy
NSAgICAgICAgICAgIHxhKCk7CiAgICAgIDI2ICAgICAgICAgICAgYSgpOwogICAgICAyNyAgICAg
ICAgfQotICAgICAyOCAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgIDI4ICAgICAgICBpZiAoZmFs
c2V5KSB7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmTXVsdGlTdGF0ZW1l
bnQ6Mjc6OQogICAgICAyMyAgICAgICAgZGVidWdnZXI7Ci0gICAgIDI0ICAgICAgICBpZiAodHJ1
ZSkgeworICAgICAyNCAgICAgICAgaWYgKHRydXRoeSkgewogICAgICAyNSAgICAgICAgICAgIGEo
KTsKICAtPiAgMjYgICAgICAgICAgICB8YSgpOwogICAgICAyNyAgICAgICAgfQotICAgICAyOCAg
ICAgICAgaWYgKGZhbHNlKSB7CisgICAgIDI4ICAgICAgICBpZiAoZmFsc2V5KSB7CiAgICAgIDI5
ICAgICAgICAgICAgYSgpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgpAQCAtMTA3LDcgKzEwNyw3IEBA
IFBBVVNFIEFUIGVudHJ5SWZNdWx0aVN0YXRlbWVudDoyOTo5CiAgICAgIDI1ICAgICAgICAgICAg
YSgpOwogICAgICAyNiAgICAgICAgICAgIGEoKTsKICAgICAgMjcgICAgICAgIH0KLSAtPiAgMjgg
ICAgICAgIGlmICh8ZmFsc2UpIHsKKyAtPiAgMjggICAgICAgIGlmICh8ZmFsc2V5KSB7CiAgICAg
IDI5ICAgICAgICAgICAgYSgpOwogICAgICAzMCAgICAgICAgICAgIGEoKTsKICAgICAgMzEgICAg
ICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBQQVVTRSBBVCBlbnRyeUlmRWxzZTozNjo1CiAgICAg
IDMzICAgIAogICAgICAzNCAgICBmdW5jdGlvbiBlbnRyeUlmRWxzZSgpIHsKICAtPiAgMzUgICAg
ICAgIHxkZWJ1Z2dlcjsKLSAgICAgMzYgICAgICAgIGlmICh0cnVlKQorICAgICAzNiAgICAgICAg
aWYgKHRydXRoeSkKICAgICAgMzcgICAgICAgICAgICBhKCk7CiAgICAgIDM4ICAgICAgICBlbHNl
CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBQQVVTRSBBVCBlbnRyeUlmRWxzZTozNzo5CiAgICAgIDMz
ICAgIAogICAgICAzNCAgICBmdW5jdGlvbiBlbnRyeUlmRWxzZSgpIHsKICAgICAgMzUgICAgICAg
IGRlYnVnZ2VyOwotIC0+ICAzNiAgICAgICAgaWYgKHx0cnVlKQorIC0+ICAzNiAgICAgICAgaWYg
KHx0cnV0aHkpCiAgICAgIDM3ICAgICAgICAgICAgYSgpOwogICAgICAzOCAgICAgICAgZWxzZQog
ICAgICAzOSAgICAgICAgICAgIGEoKTsKQEAgLTE1MywyNSArMTUzLDI1IEBAIEFDVElPTjogc3Rl
cC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmRWxzZTozODo5CiAgICAgIDM0ICAgIGZ1bmN0aW9uIGVu
dHJ5SWZFbHNlKCkgewogICAgICAzNSAgICAgICAgZGVidWdnZXI7Ci0gICAgIDM2ICAgICAgICBp
ZiAodHJ1ZSkKKyAgICAgMzYgICAgICAgIGlmICh0cnV0aHkpCiAgLT4gIDM3ICAgICAgICAgICAg
fGEoKTsKICAgICAgMzggICAgICAgIGVsc2UKICAgICAgMzkgICAgICAgICAgICBhKCk7Ci0gICAg
IDQwICAgICAgICBpZiAoZmFsc2UpCisgICAgIDQwICAgICAgICBpZiAoZmFsc2V5KQogCiBBQ1RJ
T046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlJZkVsc2U6NDE6OQogICAgICAzNyAgICAgICAg
ICAgIGEoKTsKICAgICAgMzggICAgICAgIGVsc2UKICAgICAgMzkgICAgICAgICAgICBhKCk7Ci0g
LT4gIDQwICAgICAgICBpZiAofGZhbHNlKQorIC0+ICA0MCAgICAgICAgaWYgKHxmYWxzZXkpCiAg
ICAgIDQxICAgICAgICAgICAgYSgpOwogICAgICA0MiAgICAgICAgZWxzZQogICAgICA0MyAgICAg
ICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5SWZFbHNlOjQ0
OjkKLSAgICAgNDAgICAgICAgIGlmIChmYWxzZSkKKyAgICAgNDAgICAgICAgIGlmIChmYWxzZXkp
CiAgICAgIDQxICAgICAgICAgICAgYSgpOwogICAgICA0MiAgICAgICAgZWxzZQogIC0+ICA0MyAg
ICAgICAgICAgIHxhKCk7CkBAIC0yMDIsMzUgKzIwMiwzNSBAQCBQQVVTRSBBVCBlbnRyeUlmRWxz
ZUNoYWluOjQ4OjUKICAgICAgNDUgICAgCiAgICAgIDQ2ICAgIGZ1bmN0aW9uIGVudHJ5SWZFbHNl
Q2hhaW4oKSB7CiAgLT4gIDQ3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgIDQ4ICAgICAgICBpZiAo
ZmFsc2UpCisgICAgIDQ4ICAgICAgICBpZiAoZmFsc2V5KQogICAgICA0OSAgICAgICAgICAgIGEo
KTsKLSAgICAgNTAgICAgICAgIGVsc2UgaWYgKHRydWUpCisgICAgIDUwICAgICAgICBlbHNlIGlm
ICh0cnV0aHkpCiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmRWxzZUNoYWlu
OjQ5OjkKICAgICAgNDUgICAgCiAgICAgIDQ2ICAgIGZ1bmN0aW9uIGVudHJ5SWZFbHNlQ2hhaW4o
KSB7CiAgICAgIDQ3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgNDggICAgICAgIGlmICh8ZmFsc2Up
CisgLT4gIDQ4ICAgICAgICBpZiAofGZhbHNleSkKICAgICAgNDkgICAgICAgICAgICBhKCk7Ci0g
ICAgIDUwICAgICAgICBlbHNlIGlmICh0cnVlKQorICAgICA1MCAgICAgICAgZWxzZSBpZiAodHJ1
dGh5KQogICAgICA1MSAgICAgICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNF
IEFUIGVudHJ5SWZFbHNlQ2hhaW46NTE6MTQKICAgICAgNDcgICAgICAgIGRlYnVnZ2VyOwotICAg
ICA0OCAgICAgICAgaWYgKGZhbHNlKQorICAgICA0OCAgICAgICAgaWYgKGZhbHNleSkKICAgICAg
NDkgICAgICAgICAgICBhKCk7Ci0gLT4gIDUwICAgICAgICBlbHNlIGlmICh8dHJ1ZSkKKyAtPiAg
NTAgICAgICAgIGVsc2UgaWYgKHx0cnV0aHkpCiAgICAgIDUxICAgICAgICAgICAgYSgpOwogICAg
ICA1MiAgICAgICAgZWxzZQogICAgICA1MyAgICAgICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVw
LW92ZXIKIFBBVVNFIEFUIGVudHJ5SWZFbHNlQ2hhaW46NTI6OQotICAgICA0OCAgICAgICAgaWYg
KGZhbHNlKQorICAgICA0OCAgICAgICAgaWYgKGZhbHNleSkKICAgICAgNDkgICAgICAgICAgICBh
KCk7Ci0gICAgIDUwICAgICAgICBlbHNlIGlmICh0cnVlKQorICAgICA1MCAgICAgICAgZWxzZSBp
ZiAodHJ1dGh5KQogIC0+ICA1MSAgICAgICAgICAgIHxhKCk7CiAgICAgIDUyICAgICAgICBlbHNl
CiAgICAgIDUzICAgICAgICAgICAgYSgpOwpAQCAtMjQxLDI0ICsyNDEsMjQgQEAgUEFVU0UgQVQg
ZW50cnlJZkVsc2VDaGFpbjo1Njo5CiAgICAgIDUyICAgICAgICBlbHNlCiAgICAgIDUzICAgICAg
ICAgICAgYSgpOwogICAgICA1NCAgICAKLSAtPiAgNTUgICAgICAgIGlmICh8ZmFsc2UpCisgLT4g
IDU1ICAgICAgICBpZiAofGZhbHNleSkKICAgICAgNTYgICAgICAgICAgICBhKCk7Ci0gICAgIDU3
ICAgICAgICBlbHNlIGlmIChmYWxzZSkKKyAgICAgNTcgICAgICAgIGVsc2UgaWYgKGZhbHNleSkK
ICAgICAgNTggICAgICAgICAgICBhKCk7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBl
bnRyeUlmRWxzZUNoYWluOjU4OjE0CiAgICAgIDU0ICAgIAotICAgICA1NSAgICAgICAgaWYgKGZh
bHNlKQorICAgICA1NSAgICAgICAgaWYgKGZhbHNleSkKICAgICAgNTYgICAgICAgICAgICBhKCk7
Ci0gLT4gIDU3ICAgICAgICBlbHNlIGlmICh8ZmFsc2UpCisgLT4gIDU3ICAgICAgICBlbHNlIGlm
ICh8ZmFsc2V5KQogICAgICA1OCAgICAgICAgICAgIGEoKTsKICAgICAgNTkgICAgICAgIGVsc2UK
ICAgICAgNjAgICAgICAgICAgICBhKCk7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBl
bnRyeUlmRWxzZUNoYWluOjYxOjkKLSAgICAgNTcgICAgICAgIGVsc2UgaWYgKGZhbHNlKQorICAg
ICA1NyAgICAgICAgZWxzZSBpZiAoZmFsc2V5KQogICAgICA1OCAgICAgICAgICAgIGEoKTsKICAg
ICAgNTkgICAgICAgIGVsc2UKICAtPiAgNjAgICAgICAgICAgICB8YSgpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIFBBVVNFIEFUIGVudHJ5SWZXaXRoQ2FsbDo2ODoyCiAgLT4gIDY3ICAgIH18CiAgICAg
IDY4ICAgIAogICAgICA2OSAgICBmdW5jdGlvbiBlbnRyeVRlcm5hcnkoKSB7Ci0gICAgIDcwICAg
ICAgICBsZXQgdCA9ICgpID0+IHRydWU7CisgICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRy
dXRoeTsKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTM1MSwxNCArMzUxLDE0IEBAIFBB
VVNFIEFUIGVudHJ5SWZXaXRoQ2FsbDo2Njo5CiAgICAgIDY4ICAgIAogCiBBQ1RJT046IHN0ZXAt
aW4KLVBBVVNFIEFUIGE6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAg
ICAgIDYgICAgZnVuY3Rpb24gYSgpIHsKLSAtPiAgIDcgICAgICAgIHxyZXR1cm4gMTsKLSAgICAg
IDggICAgfQotICAgICAgOSAgICAKLSAgICAgMTAgICAgZnVuY3Rpb24gYigpIHsKK1BBVVNFIEFU
IGE6MTE6MTYKKyAgICAgIDcgICAgdmFyIHZhbHVlID0gMTsKKyAgICAgIDggICAgdmFyIHRydXRo
eSA9IHRydWU7CisgICAgICA5ICAgIHZhciBmYWxzZXkgPSBmYWxzZTsKKyAtPiAgMTAgICAgZnVu
Y3Rpb24gYSgpIHsgfHJldHVybiB2YWx1ZTsgfQorICAgICAxMSAgICBmdW5jdGlvbiBiKCkgeyBy
ZXR1cm4gdmFsdWU7IH0KKyAgICAgMTIgICAgCisgICAgIDEzICAgIAogCiBBQ1RJT046IHN0ZXAt
b3V0CiBQQVVTRSBBVCBlbnRyeUlmV2l0aENhbGw6NjY6MTYKQEAgLTM3MSwxNCArMzcxLDE0IEBA
IFBBVVNFIEFUIGVudHJ5SWZXaXRoQ2FsbDo2NjoxNgogICAgICA2OCAgICAKIAogQUNUSU9OOiBz
dGVwLWluCi1QQVVTRSBBVCBhOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+
Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGEoKSB7Ci0gLT4gICA3ICAgICAgICB8cmV0dXJuIDE7Ci0g
ICAgICA4ICAgIH0KLSAgICAgIDkgICAgCi0gICAgIDEwICAgIGZ1bmN0aW9uIGIoKSB7CitQQVVT
RSBBVCBhOjExOjE2CisgICAgICA3ICAgIHZhciB2YWx1ZSA9IDE7CisgICAgICA4ICAgIHZhciB0
cnV0aHkgPSB0cnVlOworICAgICAgOSAgICB2YXIgZmFsc2V5ID0gZmFsc2U7CisgLT4gIDEwICAg
IGZ1bmN0aW9uIGEoKSB7IHxyZXR1cm4gdmFsdWU7IH0KKyAgICAgMTEgICAgZnVuY3Rpb24gYigp
IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgIDEyICAgIAorICAgICAxMyAgICAKIAogQUNUSU9OOiBz
dGVwLW91dAogUEFVU0UgQVQgZW50cnlJZldpdGhDYWxsOjY3OjkKQEAgLTM5OCw3ICszOTgsNyBA
QCBQQVVTRSBBVCBlbnRyeUlmV2l0aENhbGw6Njg6MgogIC0+ICA2NyAgICB9fAogICAgICA2OCAg
ICAKICAgICAgNjkgICAgZnVuY3Rpb24gZW50cnlUZXJuYXJ5KCkgewotICAgICA3MCAgICAgICAg
bGV0IHQgPSAoKSA9PiB0cnVlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7
CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECkBAIC00MTAsOCArNDEwLDggQEAgU1RFUFM6IG92
ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVT
RSBBVCBlbnRyeVRlcm5hcnk6NzM6NQogICAgICA2OSAgICBmdW5jdGlvbiBlbnRyeVRlcm5hcnko
KSB7Ci0gICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAgIDcxICAgICAgICBs
ZXQgZiA9ICgpID0+IGZhbHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7
CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAtPiAgNzIgICAgICAgIHxk
ZWJ1Z2dlcjsKICAgICAgNzMgICAgICAgIGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogICAgICA3
NCAgICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00MTksOCArNDE5LDggQEAgUEFV
U0UgQVQgZW50cnlUZXJuYXJ5OjczOjUKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVu
dHJ5VGVybmFyeTo3NDo1Ci0gICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAg
IDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAo
KSA9PiB0cnV0aHk7CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAg
NzIgICAgICAgIGRlYnVnZ2VyOwogIC0+ICA3MyAgICAgICAgfGxldCB4ID0gdCgpID8gYSgpIDog
YigpOwogICAgICA3NCAgICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00MjksMTMg
KzQyOSwxMyBAQCBQQVVTRSBBVCBlbnRyeVRlcm5hcnk6NzQ6NQogCiBBQ1RJT046IHN0ZXAtb3Zl
cgogUEFVU0UgQVQgZW50cnlUZXJuYXJ5Ojc1OjUKLSAgICAgNzEgICAgICAgIGxldCBmID0gKCkg
PT4gZmFsc2U7CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAgNzIg
ICAgICAgIGRlYnVnZ2VyOwogICAgICA3MyAgICAgICAgbGV0IHggPSB0KCkgPyBhKCkgOiBiKCk7
CiAgLT4gIDc0ICAgICAgICB8bGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CiAgICAgIDc1ICAgIH0K
ICAgICAgNzYgICAgCi0gICAgIDc3ICAgIC8vIC0tLS0tLS0tLQorICAgICA3NyAgICBmdW5jdGlv
biBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBB
VCBlbnRyeVRlcm5hcnk6NzY6MgpAQCAtNDQ0LDggKzQ0NCw4IEBAIFBBVVNFIEFUIGVudHJ5VGVy
bmFyeTo3NjoyCiAgICAgIDc0ICAgICAgICBsZXQgeSA9IGYoKSA/IGEoKSA6IGIoKTsKICAtPiAg
NzUgICAgfXwKICAgICAgNzYgICAgCi0gICAgIDc3ICAgIC8vIC0tLS0tLS0tLQotICAgICA3OCAg
ICAKKyAgICAgNzcgICAgZnVuY3Rpb24gZW50cnlJZkNvbnN0YW50QnJhbmNoKCkgeworICAgICA3
OCAgICAgICAgZGVidWdnZXI7CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECkBAIC00NTcsOCAr
NDU3LDggQEAgU1RFUFM6IG92ZXIsIGluLCBvdXQsIGluLCBvdXQsIGluLCBvdXQsIGluLCBvdXQs
IHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCBlbnRyeVRlcm5h
cnk6NzM6NQogICAgICA2OSAgICBmdW5jdGlvbiBlbnRyeVRlcm5hcnkoKSB7Ci0gICAgIDcwICAg
ICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZh
bHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7CisgICAgIDcxICAgICAg
ICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAtPiAgNzIgICAgICAgIHxkZWJ1Z2dlcjsKICAgICAg
NzMgICAgICAgIGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogICAgICA3NCAgICAgICAgbGV0IHkg
PSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00NjYsOCArNDY2LDggQEAgUEFVU0UgQVQgZW50cnlUZXJu
YXJ5OjczOjUKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5VGVybmFyeTo3NDo1
Ci0gICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAgIDcxICAgICAgICBsZXQg
ZiA9ICgpID0+IGZhbHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7Cisg
ICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAgNzIgICAgICAgIGRlYnVn
Z2VyOwogIC0+ICA3MyAgICAgICAgfGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogICAgICA3NCAg
ICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00NzksMTUgKzQ3OSwxNSBAQCBQQVVT
RSBBVCB0OjcxOjE5CiAgICAgIDY3ICAgIH0KICAgICAgNjggICAgCiAgICAgIDY5ICAgIGZ1bmN0
aW9uIGVudHJ5VGVybmFyeSgpIHsKLSAtPiAgNzAgICAgICAgIGxldCB0ID0gKCkgPT4gfHRydWU7
Ci0gICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNlOworIC0+ICA3MCAgICAgICAgbGV0
IHQgPSAoKSA9PiB8dHJ1dGh5OworICAgICA3MSAgICAgICAgbGV0IGYgPSAoKSA9PiBmYWxzZXk7
CiAgICAgIDcyICAgICAgICBkZWJ1Z2dlcjsKICAgICAgNzMgICAgICAgIGxldCB4ID0gdCgpID8g
YSgpIDogYigpOwogCiBBQ1RJT046IHN0ZXAtb3V0CiBQQVVTRSBBVCBlbnRyeVRlcm5hcnk6NzQ6
MTkKLSAgICAgNzAgICAgICAgIGxldCB0ID0gKCkgPT4gdHJ1ZTsKLSAgICAgNzEgICAgICAgIGxl
dCBmID0gKCkgPT4gZmFsc2U7CisgICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydXRoeTsK
KyAgICAgNzEgICAgICAgIGxldCBmID0gKCkgPT4gZmFsc2V5OwogICAgICA3MiAgICAgICAgZGVi
dWdnZXI7CiAgLT4gIDczICAgICAgICBsZXQgeCA9IHQoKSA/IHxhKCkgOiBiKCk7CiAgICAgIDc0
ICAgICAgICBsZXQgeSA9IGYoKSA/IGEoKSA6IGIoKTsKQEAgLTQ5NSw1MiArNDk1LDUyIEBAIFBB
VVNFIEFUIGVudHJ5VGVybmFyeTo3NDoxOQogICAgICA3NiAgICAKIAogQUNUSU9OOiBzdGVwLWlu
Ci1QQVVTRSBBVCBhOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2xv
Zy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAg
ICA2ICAgIGZ1bmN0aW9uIGEoKSB7Ci0gLT4gICA3ICAgICAgICB8cmV0dXJuIDE7Ci0gICAgICA4
ICAgIH0KLSAgICAgIDkgICAgCi0gICAgIDEwICAgIGZ1bmN0aW9uIGIoKSB7CitQQVVTRSBBVCBh
OjExOjE2CisgICAgICA3ICAgIHZhciB2YWx1ZSA9IDE7CisgICAgICA4ICAgIHZhciB0cnV0aHkg
PSB0cnVlOworICAgICAgOSAgICB2YXIgZmFsc2V5ID0gZmFsc2U7CisgLT4gIDEwICAgIGZ1bmN0
aW9uIGEoKSB7IHxyZXR1cm4gdmFsdWU7IH0KKyAgICAgMTEgICAgZnVuY3Rpb24gYigpIHsgcmV0
dXJuIHZhbHVlOyB9CisgICAgIDEyICAgIAorICAgICAxMyAgICAKIAogQUNUSU9OOiBzdGVwLW91
dAogUEFVU0UgQVQgZW50cnlUZXJuYXJ5Ojc1OjUKLSAgICAgNzEgICAgICAgIGxldCBmID0gKCkg
PT4gZmFsc2U7CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAgNzIg
ICAgICAgIGRlYnVnZ2VyOwogICAgICA3MyAgICAgICAgbGV0IHggPSB0KCkgPyBhKCkgOiBiKCk7
CiAgLT4gIDc0ICAgICAgICB8bGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CiAgICAgIDc1ICAgIH0K
ICAgICAgNzYgICAgCi0gICAgIDc3ICAgIC8vIC0tLS0tLS0tLQorICAgICA3NyAgICBmdW5jdGlv
biBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CiAKIEFDVElPTjogc3RlcC1pbgogUEFVU0UgQVQg
Zjo3MjoxOQogICAgICA2OCAgICAKICAgICAgNjkgICAgZnVuY3Rpb24gZW50cnlUZXJuYXJ5KCkg
ewotICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnVlOwotIC0+ICA3MSAgICAgICAgbGV0
IGYgPSAoKSA9PiB8ZmFsc2U7CisgICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydXRoeTsK
KyAtPiAgNzEgICAgICAgIGxldCBmID0gKCkgPT4gfGZhbHNleTsKICAgICAgNzIgICAgICAgIGRl
YnVnZ2VyOwogICAgICA3MyAgICAgICAgbGV0IHggPSB0KCkgPyBhKCkgOiBiKCk7CiAgICAgIDc0
ICAgICAgICBsZXQgeSA9IGYoKSA/IGEoKSA6IGIoKTsKIAogQUNUSU9OOiBzdGVwLW91dAogUEFV
U0UgQVQgZW50cnlUZXJuYXJ5Ojc1OjI1Ci0gICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZh
bHNlOworICAgICA3MSAgICAgICAgbGV0IGYgPSAoKSA9PiBmYWxzZXk7CiAgICAgIDcyICAgICAg
ICBkZWJ1Z2dlcjsKICAgICAgNzMgICAgICAgIGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogIC0+
ICA3NCAgICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiB8YigpOwogICAgICA3NSAgICB9CiAgICAg
IDc2ICAgIAotICAgICA3NyAgICAvLyAtLS0tLS0tLS0KKyAgICAgNzcgICAgZnVuY3Rpb24gZW50
cnlJZkNvbnN0YW50QnJhbmNoKCkgewogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGI6MTI6
NQotICAgICAgOCAgICB9Ci0gICAgICA5ICAgIAotICAgICAxMCAgICBmdW5jdGlvbiBiKCkgewot
IC0+ICAxMSAgICAgICAgfHJldHVybiAyOwotICAgICAxMiAgICB9CitQQVVTRSBBVCBiOjEyOjE2
CisgICAgICA4ICAgIHZhciB0cnV0aHkgPSB0cnVlOworICAgICAgOSAgICB2YXIgZmFsc2V5ID0g
ZmFsc2U7CisgICAgIDEwICAgIGZ1bmN0aW9uIGEoKSB7IHJldHVybiB2YWx1ZTsgfQorIC0+ICAx
MSAgICBmdW5jdGlvbiBiKCkgeyB8cmV0dXJuIHZhbHVlOyB9CisgICAgIDEyICAgIAogICAgICAx
MyAgICAKICAgICAgMTQgICAgZnVuY3Rpb24gZW50cnlJZlNpbmdsZVN0YXRlbWVudCgpIHsKIApA
QCAtNTUxLDggKzU1MSwyNzYgQEAgUEFVU0UgQVQgZW50cnlUZXJuYXJ5Ojc2OjIKICAgICAgNzQg
ICAgICAgIGxldCB5ID0gZigpID8gYSgpIDogYigpOwogIC0+ICA3NSAgICB9fAogICAgICA3NiAg
ICAKLSAgICAgNzcgICAgLy8gLS0tLS0tLS0tCi0gICAgIDc4ICAgIAorICAgICA3NyAgICBmdW5j
dGlvbiBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CisgICAgIDc4ICAgICAgICBkZWJ1Z2dlcjsK
KworQUNUSU9OOiByZXN1bWUKK1JFU1VNRUQKK1BBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0
ZXBzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcHBpbmcuQ29uc3RhbnRC
cmFuY2gKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJZkNvbnN0YW50QnJhbmNoKQorU1RF
UFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQorUEFVU0VEIChk
ZWJ1Z2dlci1zdGF0ZW1lbnQpCitQQVVTRSBBVCBlbnRyeUlmQ29uc3RhbnRCcmFuY2g6Nzk6NQor
ICAgICA3NSAgICB9CisgICAgIDc2ICAgIAorICAgICA3NyAgICBmdW5jdGlvbiBlbnRyeUlmQ29u
c3RhbnRCcmFuY2goKSB7CisgLT4gIDc4ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDc5ICAgICAg
ICBpZiAodHJ1ZSkKKyAgICAgODAgICAgICAgICAgICBhKCk7CisgICAgIDgxICAgICAgICBpZiAo
ZmFsc2UpCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmQ29uc3RhbnRCcmFu
Y2g6ODA6OQorICAgICA3NiAgICAKKyAgICAgNzcgICAgZnVuY3Rpb24gZW50cnlJZkNvbnN0YW50
QnJhbmNoKCkgeworICAgICA3OCAgICAgICAgZGVidWdnZXI7CisgLT4gIDc5ICAgICAgICBpZiAo
fHRydWUpCisgICAgIDgwICAgICAgICAgICAgYSgpOworICAgICA4MSAgICAgICAgaWYgKGZhbHNl
KQorICAgICA4MiAgICAgICAgICAgIGEoKTsKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFU
IGVudHJ5SWZDb25zdGFudEJyYW5jaDo4MTo5CisgICAgIDc3ICAgIGZ1bmN0aW9uIGVudHJ5SWZD
b25zdGFudEJyYW5jaCgpIHsKKyAgICAgNzggICAgICAgIGRlYnVnZ2VyOworICAgICA3OSAgICAg
ICAgaWYgKHRydWUpCisgLT4gIDgwICAgICAgICAgICAgfGEoKTsKKyAgICAgODEgICAgICAgIGlm
IChmYWxzZSkKKyAgICAgODIgICAgICAgICAgICBhKCk7CisgICAgIDgzICAgICAgICBpZiAoMCkK
KworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZDb25zdGFudEJyYW5jaDo4Mjo5
CisgICAgIDc4ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgNzkgICAgICAgIGlmICh0cnVlKQorICAg
ICA4MCAgICAgICAgICAgIGEoKTsKKyAtPiAgODEgICAgICAgIGlmICh8ZmFsc2UpCisgICAgIDgy
ICAgICAgICAgICAgYSgpOworICAgICA4MyAgICAgICAgaWYgKDApCisgICAgIDg0ICAgICAgICAg
ICAgYSgpOworCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlJZkNvbnN0YW50QnJh
bmNoOjg0OjkKKyAgICAgODAgICAgICAgICAgICBhKCk7CisgICAgIDgxICAgICAgICBpZiAoZmFs
c2UpCisgICAgIDgyICAgICAgICAgICAgYSgpOworIC0+ICA4MyAgICAgICAgaWYgKHwwKQorICAg
ICA4NCAgICAgICAgICAgIGEoKTsKKyAgICAgODUgICAgICAgIGlmIChudWxsKQorICAgICA4NiAg
ICAgICAgICAgIGEoKTsKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZDb25z
dGFudEJyYW5jaDo4Njo5CisgICAgIDgyICAgICAgICAgICAgYSgpOworICAgICA4MyAgICAgICAg
aWYgKDApCisgICAgIDg0ICAgICAgICAgICAgYSgpOworIC0+ICA4NSAgICAgICAgaWYgKHxudWxs
KQorICAgICA4NiAgICAgICAgICAgIGEoKTsKKyAgICAgODcgICAgfQorICAgICA4OCAgICAKKwor
QUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZDb25zdGFudEJyYW5jaDo4ODoyCisg
ICAgIDg0ICAgICAgICAgICAgYSgpOworICAgICA4NSAgICAgICAgaWYgKG51bGwpCisgICAgIDg2
ICAgICAgICAgICAgYSgpOworIC0+ICA4NyAgICB9fAorICAgICA4OCAgICAKKyAgICAgODkgICAg
ZnVuY3Rpb24gZW50cnlJZldpdGhMb2dpY2FsT3BlcmF0aW9uKCkgeworICAgICA5MCAgICAgICAg
ZGVidWdnZXI7CisKK0FDVElPTjogcmVzdW1lCitSRVNVTUVECitQQVNTOiBTaG91bGQgaGF2ZSB1
c2VkIGFsbCBzdGVwcy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5n
LklmV2l0aExvZ2ljYWxPcGVyYXRpb24KK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJZldp
dGhMb2dpY2FsT3BlcmF0aW9uKQorU1RFUFM6IG92ZXIsIGluLCBvdXQsIGluLCBvdXQsIG92ZXIs
IHJlc3VtZQorUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCitQQVVTRSBBVCBlbnRyeUlmV2l0
aExvZ2ljYWxPcGVyYXRpb246OTE6NQorICAgICA4NyAgICB9CisgICAgIDg4ICAgIAorICAgICA4
OSAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb24oKSB7CisgLT4gIDkwICAg
ICAgICB8ZGVidWdnZXI7CisgICAgIDkxICAgICAgICBpZiAodHJ1ZSAmJiBhKCkgJiYgYSgpKQor
ICAgICA5MiAgICAgICAgICAgIGIoKTsKKyAgICAgOTMgICAgfQorCitBQ1RJT046IHN0ZXAtb3Zl
cgorUEFVU0UgQVQgZW50cnlJZldpdGhMb2dpY2FsT3BlcmF0aW9uOjkyOjkKKyAgICAgODggICAg
CisgICAgIDg5ICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoTG9naWNhbE9wZXJhdGlvbigpIHsKKyAg
ICAgOTAgICAgICAgIGRlYnVnZ2VyOworIC0+ICA5MSAgICAgICAgaWYgKHx0cnVlICYmIGEoKSAm
JiBhKCkpCisgICAgIDkyICAgICAgICAgICAgYigpOworICAgICA5MyAgICB9CisgICAgIDk0ICAg
IAorCitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGE6MTE6MTYKKyAgICAgIDcgICAgdmFyIHZh
bHVlID0gMTsKKyAgICAgIDggICAgdmFyIHRydXRoeSA9IHRydWU7CisgICAgICA5ICAgIHZhciBm
YWxzZXkgPSBmYWxzZTsKKyAtPiAgMTAgICAgZnVuY3Rpb24gYSgpIHsgfHJldHVybiB2YWx1ZTsg
fQorICAgICAxMSAgICBmdW5jdGlvbiBiKCkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICAgMTIgICAg
CisgICAgIDEzICAgIAorCitBQ1RJT046IHN0ZXAtb3V0CitQQVVTRSBBVCBlbnRyeUlmV2l0aExv
Z2ljYWxPcGVyYXRpb246OTI6MjQKKyAgICAgODggICAgCisgICAgIDg5ICAgIGZ1bmN0aW9uIGVu
dHJ5SWZXaXRoTG9naWNhbE9wZXJhdGlvbigpIHsKKyAgICAgOTAgICAgICAgIGRlYnVnZ2VyOwor
IC0+ICA5MSAgICAgICAgaWYgKHRydWUgJiYgYSgpICYmIHxhKCkpCisgICAgIDkyICAgICAgICAg
ICAgYigpOworICAgICA5MyAgICB9CisgICAgIDk0ICAgIAorCitBQ1RJT046IHN0ZXAtaW4KK1BB
VVNFIEFUIGE6MTE6MTYKKyAgICAgIDcgICAgdmFyIHZhbHVlID0gMTsKKyAgICAgIDggICAgdmFy
IHRydXRoeSA9IHRydWU7CisgICAgICA5ICAgIHZhciBmYWxzZXkgPSBmYWxzZTsKKyAtPiAgMTAg
ICAgZnVuY3Rpb24gYSgpIHsgfHJldHVybiB2YWx1ZTsgfQorICAgICAxMSAgICBmdW5jdGlvbiBi
KCkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICAgMTIgICAgCisgICAgIDEzICAgIAorCitBQ1RJT046
IHN0ZXAtb3V0CitQQVVTRSBBVCBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb246OTM6OQorICAg
ICA4OSAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb24oKSB7CisgICAgIDkw
ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgOTEgICAgICAgIGlmICh0cnVlICYmIGEoKSAmJiBhKCkp
CisgLT4gIDkyICAgICAgICAgICAgfGIoKTsKKyAgICAgOTMgICAgfQorICAgICA5NCAgICAKKyAg
ICAgOTUgICAgZnVuY3Rpb24gZW50cnlJZldpdGhCaW5hcnlPcGVyYXRpb24oKSB7CisKK0FDVElP
Tjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb246OTQ6Mgor
ICAgICA5MCAgICAgICAgZGVidWdnZXI7CisgICAgIDkxICAgICAgICBpZiAodHJ1ZSAmJiBhKCkg
JiYgYSgpKQorICAgICA5MiAgICAgICAgICAgIGIoKTsKKyAtPiAgOTMgICAgfXwKKyAgICAgOTQg
ICAgCisgICAgIDk1ICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKCkgewor
ICAgICA5NiAgICAgICAgbGV0IGkgPSBhKCk7CisKK0FDVElPTjogcmVzdW1lCitSRVNVTUVECitQ
QVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERlYnVnZ2VyLnN0ZXBwaW5nLklmV2l0aEJpbmFyeU9wZXJhdGlvbgorRVhQUkVTU0lPTjogc2V0
VGltZW91dChlbnRyeUlmV2l0aEJpbmFyeU9wZXJhdGlvbikKK1NURVBTOiBvdmVyLCBpbiwgb3Zl
ciwgcmVzdW1lCitQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKK1BBVVNFIEFUIGVudHJ5SWZX
aXRoQmluYXJ5T3BlcmF0aW9uOjk4OjUKKyAgICAgOTQgICAgCisgICAgIDk1ICAgIGZ1bmN0aW9u
IGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKCkgeworICAgICA5NiAgICAgICAgbGV0IGkgPSBh
KCk7CisgLT4gIDk3ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDk4ICAgICAgICBpZiAoaSA8IDIp
CisgICAgIDk5ICAgICAgICAgICAgYigpOworICAgIDEwMCAgICB9CisKK0FDVElPTjogc3RlcC1v
dmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aEJpbmFyeU9wZXJhdGlvbjo5OTo5CisgICAgIDk1ICAg
IGZ1bmN0aW9uIGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKCkgeworICAgICA5NiAgICAgICAg
bGV0IGkgPSBhKCk7CisgICAgIDk3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgOTggICAgICAgIGlm
ICh8aSA8IDIpCisgICAgIDk5ICAgICAgICAgICAgYigpOworICAgIDEwMCAgICB9CisgICAgMTAx
ICAgIAorCitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0
aW9uOjEwMDo5CisgICAgIDk2ICAgICAgICBsZXQgaSA9IGEoKTsKKyAgICAgOTcgICAgICAgIGRl
YnVnZ2VyOworICAgICA5OCAgICAgICAgaWYgKGkgPCAyKQorIC0+ICA5OSAgICAgICAgICAgIHxi
KCk7CisgICAgMTAwICAgIH0KKyAgICAxMDEgICAgCisgICAgMTAyICAgIGZ1bmN0aW9uIGVudHJ5
SWZXaXRoTm90T3BlcmF0aW9uKCkgeworCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50
cnlJZldpdGhCaW5hcnlPcGVyYXRpb246MTAxOjIKKyAgICAgOTcgICAgICAgIGRlYnVnZ2VyOwor
ICAgICA5OCAgICAgICAgaWYgKGkgPCAyKQorICAgICA5OSAgICAgICAgICAgIGIoKTsKKyAtPiAx
MDAgICAgfXwKKyAgICAxMDEgICAgCisgICAgMTAyICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoTm90
T3BlcmF0aW9uKCkgeworICAgIDEwMyAgICAgICAgZGVidWdnZXI7CisKK0FDVElPTjogcmVzdW1l
CitSRVNVTUVECitQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5nLklmV2l0aE5vdE9wZXJhdGlvbgorRVhQUkVT
U0lPTjogc2V0VGltZW91dChlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbikKK1NURVBTOiBvdmVyLCBp
biwgb3ZlciwgaW4sIG92ZXIsIHJlc3VtZQorUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCitQ
QVVTRSBBVCBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbjoxMDQ6NQorICAgIDEwMCAgICB9CisgICAg
MTAxICAgIAorICAgIDEwMiAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbigpIHsK
KyAtPiAxMDMgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAxMDQgICAgICAgIGlmICghZmFsc2UpCisg
ICAgMTA1ICAgICAgICAgICAgYSgpOworICAgIDEwNiAgICAgICAgaWYgKCEhdHJ1ZSkKKworQUNU
SU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZXaXRoTm90T3BlcmF0aW9uOjEwNTo5Cisg
ICAgMTAxICAgIAorICAgIDEwMiAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbigp
IHsKKyAgICAxMDMgICAgICAgIGRlYnVnZ2VyOworIC0+IDEwNCAgICAgICAgaWYgKHwhZmFsc2Up
CisgICAgMTA1ICAgICAgICAgICAgYSgpOworICAgIDEwNiAgICAgICAgaWYgKCEhdHJ1ZSkKKyAg
ICAxMDcgICAgICAgICAgICBhKCk7CisKK0FDVElPTjogc3RlcC1pbgorUEFVU0UgQVQgZW50cnlJ
ZldpdGhOb3RPcGVyYXRpb246MTA2OjkKKyAgICAxMDIgICAgZnVuY3Rpb24gZW50cnlJZldpdGhO
b3RPcGVyYXRpb24oKSB7CisgICAgMTAzICAgICAgICBkZWJ1Z2dlcjsKKyAgICAxMDQgICAgICAg
IGlmICghZmFsc2UpCisgLT4gMTA1ICAgICAgICAgICAgfGEoKTsKKyAgICAxMDYgICAgICAgIGlm
ICghIXRydWUpCisgICAgMTA3ICAgICAgICAgICAgYSgpOworICAgIDEwOCAgICB9CisKK0FDVElP
Tjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbjoxMDc6OQorICAg
IDEwMyAgICAgICAgZGVidWdnZXI7CisgICAgMTA0ICAgICAgICBpZiAoIWZhbHNlKQorICAgIDEw
NSAgICAgICAgICAgIGEoKTsKKyAtPiAxMDYgICAgICAgIGlmICh8ISF0cnVlKQorICAgIDEwNyAg
ICAgICAgICAgIGEoKTsKKyAgICAxMDggICAgfQorICAgIDEwOSAgICAKKworQUNUSU9OOiBzdGVw
LWluCitQQVVTRSBBVCBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbjoxMDg6OQorICAgIDEwNCAgICAg
ICAgaWYgKCFmYWxzZSkKKyAgICAxMDUgICAgICAgICAgICBhKCk7CisgICAgMTA2ICAgICAgICBp
ZiAoISF0cnVlKQorIC0+IDEwNyAgICAgICAgICAgIHxhKCk7CisgICAgMTA4ICAgIH0KKyAgICAx
MDkgICAgCisgICAgMTEwICAgIC8vIC0tLS0tLS0tLQorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFV
U0UgQVQgZW50cnlJZldpdGhOb3RPcGVyYXRpb246MTA5OjIKKyAgICAxMDUgICAgICAgICAgICBh
KCk7CisgICAgMTA2ICAgICAgICBpZiAoISF0cnVlKQorICAgIDEwNyAgICAgICAgICAgIGEoKTsK
KyAtPiAxMDggICAgfXwKKyAgICAxMDkgICAgCisgICAgMTEwICAgIC8vIC0tLS0tLS0tLQorICAg
IDExMSAgICAKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250cm9sLWZsb3cuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250
cm9sLWZsb3cuaHRtbAppbmRleCAyNGRhMmJmLi5mZjA3NjJlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5n
LWNvbnRyb2wtZmxvdy5odG1sCkBAIC00LDI5ICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBhKCkgewotICAgIHJldHVybiAxOwotfQorLy8g
V2UgbWF5IHdhbnQgdG8gYWxsb3cgY29uc3RhbnRzIHRvIGVsaW1pbmF0ZSBicmFuY2hlcy4gVXNl
IHZhcnMgZm9yIGV4aXN0aW5nIHRlc3RzIGFuZCBoYXZlIGNvbnN0YW50IHNwZWNpZmljIHRlc3Rz
LgordmFyIHZhbHVlID0gMTsKK3ZhciB0cnV0aHkgPSB0cnVlOwordmFyIGZhbHNleSA9IGZhbHNl
OworZnVuY3Rpb24gYSgpIHsgcmV0dXJuIHZhbHVlOyB9CitmdW5jdGlvbiBiKCkgeyByZXR1cm4g
dmFsdWU7IH0KIAotZnVuY3Rpb24gYigpIHsKLSAgICByZXR1cm4gMjsKLX0KIAogZnVuY3Rpb24g
ZW50cnlJZlNpbmdsZVN0YXRlbWVudCgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBpZiAodHJ1ZSkK
KyAgICBpZiAodHJ1dGh5KQogICAgICAgICBhKCk7Ci0gICAgaWYgKGZhbHNlKQorICAgIGlmIChm
YWxzZXkpCiAgICAgICAgIGEoKTsKIH0KIAogZnVuY3Rpb24gZW50cnlJZk11bHRpU3RhdGVtZW50
KCkgewogICAgIGRlYnVnZ2VyOwotICAgIGlmICh0cnVlKSB7CisgICAgaWYgKHRydXRoeSkgewog
ICAgICAgICBhKCk7CiAgICAgICAgIGEoKTsKICAgICB9Ci0gICAgaWYgKGZhbHNlKSB7CisgICAg
aWYgKGZhbHNleSkgewogICAgICAgICBhKCk7CiAgICAgICAgIGEoKTsKICAgICB9CkBAIC0zNCwx
MSArMzQsMTEgQEAgZnVuY3Rpb24gZW50cnlJZk11bHRpU3RhdGVtZW50KCkgewogCiBmdW5jdGlv
biBlbnRyeUlmRWxzZSgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBpZiAodHJ1ZSkKKyAgICBpZiAo
dHJ1dGh5KQogICAgICAgICBhKCk7CiAgICAgZWxzZQogICAgICAgICBhKCk7Ci0gICAgaWYgKGZh
bHNlKQorICAgIGlmIChmYWxzZXkpCiAgICAgICAgIGEoKTsKICAgICBlbHNlCiAgICAgICAgIGEo
KTsKQEAgLTQ2LDE2ICs0NiwxNiBAQCBmdW5jdGlvbiBlbnRyeUlmRWxzZSgpIHsKIAogZnVuY3Rp
b24gZW50cnlJZkVsc2VDaGFpbigpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBpZiAoZmFsc2UpCisg
ICAgaWYgKGZhbHNleSkKICAgICAgICAgYSgpOwotICAgIGVsc2UgaWYgKHRydWUpCisgICAgZWxz
ZSBpZiAodHJ1dGh5KQogICAgICAgICBhKCk7CiAgICAgZWxzZQogICAgICAgICBhKCk7CiAKLSAg
ICBpZiAoZmFsc2UpCisgICAgaWYgKGZhbHNleSkKICAgICAgICAgYSgpOwotICAgIGVsc2UgaWYg
KGZhbHNlKQorICAgIGVsc2UgaWYgKGZhbHNleSkKICAgICAgICAgYSgpOwogICAgIGVsc2UKICAg
ICAgICAgYSgpOwpAQCAtNjgsMTMgKzY4LDQ2IEBAIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQ2FsbCgp
IHsKIH0KIAogZnVuY3Rpb24gZW50cnlUZXJuYXJ5KCkgewotICAgIGxldCB0ID0gKCkgPT4gdHJ1
ZTsKLSAgICBsZXQgZiA9ICgpID0+IGZhbHNlOworICAgIGxldCB0ID0gKCkgPT4gdHJ1dGh5Owor
ICAgIGxldCBmID0gKCkgPT4gZmFsc2V5OwogICAgIGRlYnVnZ2VyOwogICAgIGxldCB4ID0gdCgp
ID8gYSgpIDogYigpOwogICAgIGxldCB5ID0gZigpID8gYSgpIDogYigpOwogfQogCitmdW5jdGlv
biBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CisgICAgZGVidWdnZXI7CisgICAgaWYgKHRydWUp
CisgICAgICAgIGEoKTsKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGEoKTsKKyAgICBpZiAoMCkK
KyAgICAgICAgYSgpOworICAgIGlmIChudWxsKQorICAgICAgICBhKCk7Cit9CisKK2Z1bmN0aW9u
IGVudHJ5SWZXaXRoTG9naWNhbE9wZXJhdGlvbigpIHsKKyAgICBkZWJ1Z2dlcjsKKyAgICBpZiAo
dHJ1ZSAmJiBhKCkgJiYgYSgpKQorICAgICAgICBiKCk7Cit9CisKK2Z1bmN0aW9uIGVudHJ5SWZX
aXRoQmluYXJ5T3BlcmF0aW9uKCkgeworICAgIGxldCBpID0gYSgpOworICAgIGRlYnVnZ2VyOwor
ICAgIGlmIChpIDwgMikKKyAgICAgICAgYigpOworfQorCitmdW5jdGlvbiBlbnRyeUlmV2l0aE5v
dE9wZXJhdGlvbigpIHsKKyAgICBkZWJ1Z2dlcjsKKyAgICBpZiAoIWZhbHNlKQorICAgICAgICBh
KCk7CisgICAgaWYgKCEhdHJ1ZSkKKyAgICAgICAgYSgpOworfQorCiAvLyAtLS0tLS0tLS0KIAog
ZnVuY3Rpb24gdGVzdCgpCkBAIC0xOTcsNiArMjMwLDYyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICBdCiAgICAgfSk7CiAKKyAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIkRlYnVnZ2VyLnN0ZXBwaW5nLkNvbnN0YW50QnJhbmNoIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgcGF1c2UgZm9yIGNvbnN0YW50IGJyYW5jaGVzLiIsCisgICAgICAgIGV4cHJl
c3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SWZDb25zdGFudEJyYW5jaCkiLAorICAgICAgICBzdGVw
czogWworICAgICAgICAgICAgIm92ZXIiLAorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gKHRy
dWUpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkKKyAgICAgICAgICAgICAgICAib3Zl
ciIsIC8vIChmYWxzZSkKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vICgwKQorICAgICAgICAg
ICAgICAgICJvdmVyIiwgLy8gKG51bGwpCisgICAgICAgICAgICAicmVzdW1lIiwKKyAgICAgICAg
XQorICAgIH0pOworCisgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJE
ZWJ1Z2dlci5zdGVwcGluZy5JZldpdGhMb2dpY2FsT3BlcmF0aW9uIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJTaG91bGQgYWx3YXlzIHBhdXNlIGZvciBhIGNvbmRpdGlvbiB3aXRoIGxvZ2ljYWwg
b3BlcmF0aW9ucy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUlmV2l0
aExvZ2ljYWxPcGVyYXRpb24pIiwKKyAgICAgICAgc3RlcHM6IFsKKyAgICAgICAgICAgICJvdmVy
IiwKKyAgICAgICAgICAgICAgICAiaW4iLCAgIC8vIGludG8gYSgpCisgICAgICAgICAgICAgICAg
Im91dCIsICAvLyBvdXQgb2YgYSgpIC0gYmVmb3JlIGEoKQorICAgICAgICAgICAgICAgICJpbiIs
ICAgLy8gaW50byBhKCkKKyAgICAgICAgICAgICAgICAib3V0IiwgIC8vIG91dCBvZiBhKCkgLSBi
ZWZvcmUgYigpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBiKCkgLSBsZWF2aW5nIGVudHJ5
CisgICAgICAgICAgICAicmVzdW1lIiwKKyAgICAgICAgXQorICAgIH0pOworCisgICAgYWRkU3Rl
cHBpbmdUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwcGluZy5JZldpdGhC
aW5hcnlPcGVyYXRpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBhbHdheXMgcGF1
c2UgZm9yIGEgY29uZGl0aW9uIHdpdGggbG9naWNhbCBvcGVyYXRpb25zLiIsCisgICAgICAgIGV4
cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKSIsCisgICAg
ICAgIHN0ZXBzOiBbCisgICAgICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAgICAgImluIiwg
ICAgLy8gaSA8IDIgW3RydWVdCisgICAgICAgICAgICAgICAgIm92ZXIiLCAgLy8gb3ZlciBiKCkg
LSBsZWF2aW5nIGVudHJ5CisgICAgICAgICAgICAicmVzdW1lIiwKKyAgICAgICAgXQorICAgIH0p
OworCisgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5z
dGVwcGluZy5JZldpdGhOb3RPcGVyYXRpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3Vs
ZCBhbHdheXMgcGF1c2UgZm9yIGEgY29uZGl0aW9uIHRoYXQgaXMgYSBub3Qgb3BlcmF0aW9uLiIs
CisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SWZXaXRoTm90T3BlcmF0aW9u
KSIsCisgICAgICAgIHN0ZXBzOiBbCisgICAgICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAg
ICAgImluIiwgICAvLyAhZmFsc2UKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGEoKQorICAg
ICAgICAgICAgICAgICJpbiIsICAgLy8gISF0cnV0aAorICAgICAgICAgICAgICAgICJvdmVyIiwg
Ly8gYSgpIC0gbGVhdmluZyBlbnRyeQorICAgICAgICAgICAgInJlc3VtZSIsCisgICAgICAgIF0K
KyAgICB9KTsKKwogICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKICAgICAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLWxvb3BzLWV4cGVjdGVkLnR4dAppbmRleCBiMTE2Mjk1Li5hYjAyOTdlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy1sb29wcy1leHBlY3RlZC50eHQKQEAgLTE0OCw3ICsxNDgsNyBAQCBQQVNTOiBT
aG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVn
Z2VyLnN0ZXBwaW5nLlRyYWRpdGlvbmFsRm9yU3RlcE92ZXIKIEVYUFJFU1NJT046IHNldFRpbWVv
dXQoZW50cnlUcmFkaXRpb25hbEZvcikKLVNURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBv
dmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKK1NURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBv
dmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKIFBBVVNFRCAoZGVidWdn
ZXItc3RhdGVtZW50KQogUEFVU0UgQVQgZW50cnlUcmFkaXRpb25hbEZvcjoyNzo1CiAgICAgIDIz
ICAgIH0KQEAgLTE3MCw2ICsxNzAsMTYgQEAgUEFVU0UgQVQgZW50cnlUcmFkaXRpb25hbEZvcjoy
ODoxMAogICAgICAzMCAgICAKIAogQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5VHJh
ZGl0aW9uYWxGb3I6Mjg6MjEKKyAgICAgMjQgICAgCisgICAgIDI1ICAgIGZ1bmN0aW9uIGVudHJ5
VHJhZGl0aW9uYWxGb3IoKSB7CisgICAgIDI2ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjcgICAg
ICAgIGZvciAobGV0IGkgPSAwOyB8aSA8IDI7ICsraSkKKyAgICAgMjggICAgICAgICAgICBhKCk7
CisgICAgIDI5ICAgIH0KKyAgICAgMzAgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBB
VCBlbnRyeVRyYWRpdGlvbmFsRm9yOjI5OjkKICAgICAgMjUgICAgZnVuY3Rpb24gZW50cnlUcmFk
aXRpb25hbEZvcigpIHsKICAgICAgMjYgICAgICAgIGRlYnVnZ2VyOwpAQCAtNDQ5LDcgKzQ1OSw3
IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRGVidWdnZXIuc3RlcHBpbmcuRm9ySW4KIEVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50
cnlGb3JJbikKLVNURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1
bWUKK1NURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1
bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQogUEFVU0UgQVQgZW50cnlGb3JJbjo0MTo1
CiAgICAgIDM3ICAgIApAQCAtNDcxLDYgKzQ4MSwxNiBAQCBQQVVTRSBBVCBlbnRyeUZvckluOjQy
OjI2CiAgICAgIDQ0ICAgIAogCiBBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JJ
bjo0MjoxMAorICAgICAzOCAgICBmdW5jdGlvbiBlbnRyeUZvckluKCkgeworICAgICAzOSAgICAg
ICAgbGV0IG8gPSB7a2V5MTogMSwga2V5MjogMn07CisgICAgIDQwICAgICAgICBkZWJ1Z2dlcjsK
KyAtPiAgNDEgICAgICAgIGZvciAofGxldCBwcm9wZXJ0eSBpbiBvKQorICAgICA0MiAgICAgICAg
ICAgIGEoKTsKKyAgICAgNDMgICAgfQorICAgICA0NCAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIK
IFBBVVNFIEFUIGVudHJ5Rm9ySW46NDM6OQogICAgICAzOSAgICAgICAgbGV0IG8gPSB7a2V5MTog
MSwga2V5MjogMn07CiAgICAgIDQwICAgICAgICBkZWJ1Z2dlcjsKQEAgLTQ4MSwxMSArNTAxLDEx
IEBAIFBBVVNFIEFUIGVudHJ5Rm9ySW46NDM6OQogICAgICA0NSAgICBmdW5jdGlvbiBlbnRyeUZv
ck9mKCkgewogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlGb3JJbjo0MjoyNgor
UEFVU0UgQVQgZW50cnlGb3JJbjo0MjoxMAogICAgICAzOCAgICBmdW5jdGlvbiBlbnRyeUZvcklu
KCkgewogICAgICAzOSAgICAgICAgbGV0IG8gPSB7a2V5MTogMSwga2V5MjogMn07CiAgICAgIDQw
ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgNDEgICAgICAgIGZvciAobGV0IHByb3BlcnR5IGluIHxv
KQorIC0+ICA0MSAgICAgICAgZm9yICh8bGV0IHByb3BlcnR5IGluIG8pCiAgICAgIDQyICAgICAg
ICAgICAgYSgpOwogICAgICA0MyAgICB9CiAgICAgIDQ0ICAgIApAQCAtNTAxLDExICs1MjEsMTEg
QEAgUEFVU0UgQVQgZW50cnlGb3JJbjo0Mzo5CiAgICAgIDQ1ICAgIGZ1bmN0aW9uIGVudHJ5Rm9y
T2YoKSB7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUZvckluOjQyOjI2CitQ
QVVTRSBBVCBlbnRyeUZvckluOjQyOjEwCiAgICAgIDM4ICAgIGZ1bmN0aW9uIGVudHJ5Rm9ySW4o
KSB7CiAgICAgIDM5ICAgICAgICBsZXQgbyA9IHtrZXkxOiAxLCBrZXkyOiAyfTsKICAgICAgNDAg
ICAgICAgIGRlYnVnZ2VyOwotIC0+ICA0MSAgICAgICAgZm9yIChsZXQgcHJvcGVydHkgaW4gfG8p
CisgLT4gIDQxICAgICAgICBmb3IgKHxsZXQgcHJvcGVydHkgaW4gbykKICAgICAgNDIgICAgICAg
ICAgICBhKCk7CiAgICAgIDQzICAgIH0KICAgICAgNDQgICAgCkBAIC01MjYsNyArNTQ2LDcgQEAg
UEFTUzogU2hvdWxkIGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBEZWJ1Z2dlci5zdGVwcGluZy5Gb3JJbgogRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUZv
ck9mKQotU1RFUFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQor
U1RFUFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQog
UEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCBlbnRyeUZvck9mOjQ4OjUKICAg
ICAgNDQgICAgCkBAIC01NDgsNiArNTY4LDE2IEBAIFBBVVNFIEFUIGVudHJ5Rm9yT2Y6NDk6MjMK
ICAgICAgNTEgICAgCiAKIEFDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvck9mOjQ5
OjEwCisgICAgIDQ1ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yT2YoKSB7CisgICAgIDQ2ICAgICAgICBs
ZXQgYXJyID0gWzEsIDJdOworICAgICA0NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDQ4ICAgICAg
ICBmb3IgKHxsZXQgdmFsdWUgb2YgYXJyKQorICAgICA0OSAgICAgICAgICAgIGEoKTsKKyAgICAg
NTAgICAgfQorICAgICA1MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5
Rm9yT2Y6NTA6OQogICAgICA0NiAgICAgICAgbGV0IGFyciA9IFsxLCAyXTsKICAgICAgNDcgICAg
ICAgIGRlYnVnZ2VyOwpAQCAtNTU4LDExICs1ODgsMTEgQEAgUEFVU0UgQVQgZW50cnlGb3JPZjo1
MDo5CiAgICAgIDUyICAgIGZ1bmN0aW9uIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlKCkgewogCiBB
Q1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlGb3JPZjo0OToyMworUEFVU0UgQVQgZW50
cnlGb3JPZjo0OToxMAogICAgICA0NSAgICBmdW5jdGlvbiBlbnRyeUZvck9mKCkgewogICAgICA0
NiAgICAgICAgbGV0IGFyciA9IFsxLCAyXTsKICAgICAgNDcgICAgICAgIGRlYnVnZ2VyOwotIC0+
ICA0OCAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgfGFycikKKyAtPiAgNDggICAgICAgIGZvciAo
fGxldCB2YWx1ZSBvZiBhcnIpCiAgICAgIDQ5ICAgICAgICAgICAgYSgpOwogICAgICA1MCAgICB9
CiAgICAgIDUxICAgIApAQCAtNTc4LDExICs2MDgsMTEgQEAgUEFVU0UgQVQgZW50cnlGb3JPZjo1
MDo5CiAgICAgIDUyICAgIGZ1bmN0aW9uIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlKCkgewogCiBB
Q1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlGb3JPZjo0OToyMworUEFVU0UgQVQgZW50
cnlGb3JPZjo0OToxMAogICAgICA0NSAgICBmdW5jdGlvbiBlbnRyeUZvck9mKCkgewogICAgICA0
NiAgICAgICAgbGV0IGFyciA9IFsxLCAyXTsKICAgICAgNDcgICAgICAgIGRlYnVnZ2VyOwotIC0+
ICA0OCAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgfGFycikKKyAtPiAgNDggICAgICAgIGZvciAo
fGxldCB2YWx1ZSBvZiBhcnIpCiAgICAgIDQ5ICAgICAgICAgICAgYSgpOwogICAgICA1MCAgICB9
CiAgICAgIDUxICAgIApAQCAtNjEwLDcgKzY0MCw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVh
a0NvbnRpbnVlOjU1OjUKICAgICAgNTIgICAgZnVuY3Rpb24gZW50cnlXaGlsZUJyZWFrQ29udGlu
dWUoKSB7CiAgICAgIDUzICAgICAgICBsZXQgaSA9IDA7CiAgLT4gIDU0ICAgICAgICB8ZGVidWdn
ZXI7Ci0gICAgIDU1ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICA1NSAgICAgICAgd2hpbGUg
KHRydXRoeSkgewogICAgICA1NiAgICAgICAgICAgICsraTsKICAgICAgNTcgICAgICAgICAgICBp
ZiAoaSA9PT0gMSkKIApAQCAtNjE5LDcgKzY0OSw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVh
a0NvbnRpbnVlOjU2OjEyCiAgICAgIDUyICAgIGZ1bmN0aW9uIGVudHJ5V2hpbGVCcmVha0NvbnRp
bnVlKCkgewogICAgICA1MyAgICAgICAgbGV0IGkgPSAwOwogICAgICA1NCAgICAgICAgZGVidWdn
ZXI7Ci0gLT4gIDU1ICAgICAgICB3aGlsZSAofHRydWUpIHsKKyAtPiAgNTUgICAgICAgIHdoaWxl
ICh8dHJ1dGh5KSB7CiAgICAgIDU2ICAgICAgICAgICAgKytpOwogICAgICA1NyAgICAgICAgICAg
IGlmIChpID09PSAxKQogICAgICA1OCAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTYyOCw3
ICs2NTgsNyBAQCBBQ1RJT046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlXaGlsZUJyZWFrQ29u
dGludWU6NTc6OQogICAgICA1MyAgICAgICAgbGV0IGkgPSAwOwogICAgICA1NCAgICAgICAgZGVi
dWdnZXI7Ci0gICAgIDU1ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICA1NSAgICAgICAgd2hp
bGUgKHRydXRoeSkgewogIC0+ICA1NiAgICAgICAgICAgIHwrK2k7CiAgICAgIDU3ICAgICAgICAg
ICAgaWYgKGkgPT09IDEpCiAgICAgIDU4ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjM3
LDcgKzY2Nyw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlOjU3OjkKIEFDVElP
Tjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtDb250aW51ZTo1ODoxMwogICAg
ICA1NCAgICAgICAgZGVidWdnZXI7Ci0gICAgIDU1ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICA1NSAgICAgICAgd2hpbGUgKHRydXRoeSkgewogICAgICA1NiAgICAgICAgICAgICsraTsKICAt
PiAgNTcgICAgICAgICAgICBpZiAofGkgPT09IDEpCiAgICAgIDU4ICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtNjQ2LDcgKzY3Niw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVha0NvbnRp
bnVlOjU4OjEzCiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtD
b250aW51ZTo1OToxMwotICAgICA1NSAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgNTUgICAg
ICAgIHdoaWxlICh0cnV0aHkpIHsKICAgICAgNTYgICAgICAgICAgICArK2k7CiAgICAgIDU3ICAg
ICAgICAgICAgaWYgKGkgPT09IDEpCiAgLT4gIDU4ICAgICAgICAgICAgICAgIHxjb250aW51ZTsK
QEAgLTY1OSw3ICs2ODksNyBAQCBQQVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtDb250aW51ZTo1Njox
MgogICAgICA1MiAgICBmdW5jdGlvbiBlbnRyeVdoaWxlQnJlYWtDb250aW51ZSgpIHsKICAgICAg
NTMgICAgICAgIGxldCBpID0gMDsKICAgICAgNTQgICAgICAgIGRlYnVnZ2VyOwotIC0+ICA1NSAg
ICAgICAgd2hpbGUgKHx0cnVlKSB7CisgLT4gIDU1ICAgICAgICB3aGlsZSAofHRydXRoeSkgewog
ICAgICA1NiAgICAgICAgICAgICsraTsKICAgICAgNTcgICAgICAgICAgICBpZiAoaSA9PT0gMSkK
ICAgICAgNTggICAgICAgICAgICAgICAgY29udGludWU7CkBAIC02NjgsNyArNjk4LDcgQEAgQUNU
SU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlOjU3OjkKICAg
ICAgNTMgICAgICAgIGxldCBpID0gMDsKICAgICAgNTQgICAgICAgIGRlYnVnZ2VyOwotICAgICA1
NSAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgNTUgICAgICAgIHdoaWxlICh0cnV0aHkpIHsK
ICAtPiAgNTYgICAgICAgICAgICB8KytpOwogICAgICA1NyAgICAgICAgICAgIGlmIChpID09PSAx
KQogICAgICA1OCAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY3Nyw3ICs3MDcsNyBAQCBQ
QVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtDb250aW51ZTo1Nzo5CiBBQ1RJT046IHN0ZXAtb3Zlcgog
UEFVU0UgQVQgZW50cnlXaGlsZUJyZWFrQ29udGludWU6NTg6MTMKICAgICAgNTQgICAgICAgIGRl
YnVnZ2VyOwotICAgICA1NSAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgNTUgICAgICAgIHdo
aWxlICh0cnV0aHkpIHsKICAgICAgNTYgICAgICAgICAgICArK2k7CiAgLT4gIDU3ICAgICAgICAg
ICAgaWYgKHxpID09PSAxKQogICAgICA1OCAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1s
b29wcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLWxvb3BzLmh0bWwKaW5kZXggY2QyMTdmZC4uMzJkODQzMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3Bz
Lmh0bWwKQEAgLTQsOSArNCw5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+Ci1mdW5jdGlvbiBhKCkgewotICAgIHJldHVybiAxOwotfQordmFyIHRydXRoeSA9IHRydWU7
CitmdW5jdGlvbiBhKCkgeyByZXR1cm4gMTsgfQorCiAKIGZ1bmN0aW9uIGVudHJ5V2hpbGUoKSB7
CiAgICAgbGV0IGkgPSAyOwpAQCAtNTMsNyArNTMsNyBAQCBmdW5jdGlvbiBlbnRyeUZvck9mKCkg
ewogZnVuY3Rpb24gZW50cnlXaGlsZUJyZWFrQ29udGludWUoKSB7CiAgICAgbGV0IGkgPSAwOwog
ICAgIGRlYnVnZ2VyOwotICAgIHdoaWxlICh0cnVlKSB7CisgICAgd2hpbGUgKHRydXRoeSkgewog
ICAgICAgICArK2k7CiAgICAgICAgIGlmIChpID09PSAxKQogICAgICAgICAgICAgY29udGludWU7
CkBAIC0xMTcsNyArMTE3LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGV4cHJlc3Npb246
ICJzZXRUaW1lb3V0KGVudHJ5VHJhZGl0aW9uYWxGb3IpIiwKICAgICAgICAgc3RlcHM6IFsKICAg
ICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBs
ZXQgaSA9IDA7IGkgPCAyCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0
IGkgPSAwCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogaSA8IDIKICAgICAg
ICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCkKICAgICAgICAgICAgICAgICAib3Zl
ciIsIC8vIGNvbXBsZXRlOiArK2kKICAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRl
OiBpIDwgMiBbaT0xXQpAQCAtMTY5LDYgKzE3MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUZvckluKSIsCiAgICAgICAgIHN0ZXBzOiBb
CiAgICAgICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0
ZTogKG8pCiAgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0IHByb3BlcnR5
IGluIG8gW2tleTFdCiAgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogYSgpCiAg
ICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0IHByb3BlcnR5IGluIG8gW2tl
eTJdCkBAIC0xODQsNiArMTg2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGV4cHJlc3Np
b246ICJzZXRUaW1lb3V0KGVudHJ5Rm9yT2YpIiwKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAg
ICAgICJvdmVyIiwKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlIChhcnIpCiAg
ICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0IHZhbHVlIG9mIGFyciBbMV0K
ICAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCkKICAgICAgICAgICAgICAg
ICAib3ZlciIsIC8vIGNvbXBsZXRlOiBsZXQgdmFsdWUgb2YgYXJyIFsyXQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggNmQwMDA5ZS4uOGU5YzlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA5IEBACisyMDE2LTEwLTExICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgRW1pdCBEZWJ1Z0hvb2tzIHVuaWZvcm1seSB3aXRoIHBh
dXNlIGxvY2F0aW9ucyBpbnN0ZWFkIG9mIGhhdmluZyBzZXBhcmF0ZSBwYXVzZSBsb2NhdGlvbnMg
YW5kIG9wX2RlYnVnIGVtaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2UgaG93IEJ5dGVjb2RlR2VuZXJhdGlvbiBlbWl0cyBkZWJ1ZyBob29r
cyB0byBiZSBtb3JlIGNvbnNpc3RlbnQuCisgICAgICAgIFByZXZpb3VzbHkgbW9zdCBub2RlcyBp
bmRpdmlkdWFsbHkgZ2VuZXJhdGVkIHRoZWlyIG93biBkZWJ1ZyBob29rCisgICAgICAgIGFuZCB3
ZSBhc3NlcnRlZCB0aGF0IGl0IG1hdGNoZWQgYSBicmVha3BvaW50IGxvY2F0aW9uIGlkZW50aWZp
ZWQKKyAgICAgICAgYnkgdGhlIHBhcnNlci4gVGhpcyBjb3VsZCBnZXQgb3V0IG9mIHN5bmMsIG9y
IG5vZGVzIGNvdWxkIGZvcmdldCB0bworICAgICAgICBlbWl0IGRlYnVnIGhvb2tzIGV4cGVjdGVk
IGJ5IHRoZSBwYXJzZXIuCisgICAgICAgIAorICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBh
bHdheXMgY2hlY2sgYW5kIGVtaXQgYSBkZWJ1ZyBob29rIGZvciBhbnkKKyAgICAgICAgbm9kZS4g
VGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgZm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZQor
ICAgICAgICB0byBlbWl0IHRoZSBkZWJ1ZyBob29rIHdoZW4gZW1pdHRpbmcgdGhlIG5vZGUgaXRz
ZWxmLiBUaGlzIGNvdmVycworICAgICAgICB0aGUgbWFqb3JpdHkgb2YgY2FzZXMgKHN0YXRlbWVu
dHMpLgorCisgICAgICAgIFRoZXJlIGFyZSBhIGZldyBleGNlcHRpb25zIHdoZXJlIHdlIGNvbnRp
bnVlIHRvIG5lZWQgdG8gY3VzdG9taXplCisgICAgICAgIGVtaXR0aW5nIGRlYnVnIGhvb2tzOgor
CisgICAgICAgICAgICAxLiBOb2RlcyB3aXRoIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4
dAorICAgICAgICAgICAgICAgIC0gbm9uLUV4cHJlc3Npb24gbm9kZXMgY3VzdG9taXplIGhvdyB0
aGV5IGVtaXQgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAtIGUuZy4gY29uc3RhbnRz
IG1heSBjaG9vc2UgdG8gZW1pdCBub3RoaW5nLCBidXQgd2UgaGFkIHJlY29yZGVkIGEgYnJlYWtw
b2ludCBsb2NhdGlvbgorICAgICAgICAgICAgMi4gU3BlY2lhbGl6ZWQgRGVidWcgSG9va3MKKyAg
ICAgICAgICAgICAgICAtIHN1Y2ggYXMgaG9va3MgZm9yIFByb2dyYW0gc3RhcnQvZW5kLCBkZWJ1
Z2dlciBzdGF0ZW1lbnRzLCBldGMuCisgICAgICAgICAgICAzLiBEZWJ1ZyBIb29rcyBpbiBmb3Iu
Lm9mIC8gZm9yLi5pbiB0aGF0IGRvbid0IGNvcnJlc3BvbmQgdG8gcmUtZW1pdHRpbmcgbm9kZXMK
KyAgICAgICAgICAgICAgICAtIHN1Y2ggYXMgcGF1c2luZyBvbiB0aGUgYXNzaWdubWVudCBleHBy
ZXNzaW9uIGluc2lkZSB0aGVzZSBsb29wcworCisgICAgICAgIFRoZSBtYWpvcml0eSBvZiBub2Rl
cyBubyBsb25nZXIgaGF2ZSBjdXN0b20gZW1pdHMuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROb2RlSW5UYWlsUG9zaXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVidWdIb29rKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJh
dGlvbik6CisgICAgICAgIEJ5IGRlZmF1bHQsIHdoZW4gZW1pdHRpbmcgYSBub2RlIGNoZWNrIGlm
IHdlIHNob3VsZCBhbHNvIGVtaXQgYW4gb3BfZGVidWcgZm9yIGl0LgorICAgICAgICBUaGlzIGRl
ZmF1bHQgRGVidWdIb29rIGlzIFdpbGxFeGVjdXRlU3RhdGVtZW50LCB3aGljaCBpcyBhIG5vcm1h
bCBwYXVzZSBwb2ludC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
OgorICAgICAgICAoSlNDOjpDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29u
dGV4dCk6CisgICAgICAgIChKU0M6OkxvZ2ljYWxOb3ROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRp
dGlvbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZUlu
Q29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OmVtaXRCeXRl
Y29kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIFRoZSBwYXJzZXIgd291bGQgaGF2ZSBn
ZW5lcmF0ZWQgYSBwYXVzZSBsb2NhdGlvbiBmb3IgdGhlc2UgY29uZGl0aW9ucworICAgICAgICBu
byBtYXR0ZXIgd2hhdCBjb25zdGFudCBmb2xkaW5nIGFuZCByZS13cml0aW5nIHRoZXNlIG5vZGVz
IG1heSBwZXJmb3JtLgorICAgICAgICBTbywgd2hlbiBlbWl0dGluZyB0aGVzZSBub2RlcyBpbiBj
b25kaXRpb24gY29udGV4dCBjaGVjayBpZiB0aGV5IG5lZWQKKyAgICAgICAgZW1pdCB0aGVpciBv
d24gZGVidWcgaG9vay4KKworICAgICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpEZWNsYXJhdGlvblN0YXRlbWVudDo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG9X
aGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldoaWxlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCcmVha05v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIE5vIGxvbmdlciBuZWVkIHRvIGN1c3RvbSBlbWl0IGRlYnVn
IGhvb2tzLiBUaGUgZGVmYXVsdCBlbWl0Tm9kZSB3aWxsIGhhbmRsZSB0aGVzZS4KKworICAgICAg
ICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIEluY2x1ZGUgZXh0cmEg
ZGVidWcgaG9va3MgdGhlIHVzZXIgZXhwZWN0cyB0byByZXR1cm4gYmFjayB0byB0aGUgYXNzaWdu
bWVudAorICAgICAgICBleHByZXNzaW9uIGluIHRoZSBsb29wIGhlYWRlciBiZWZvcmUgc3RhcnRp
bmcgdGhlIGJvZHkgYWdhaW4uIFRoZSBzYW1lIGlzIGRvbmUKKyAgICAgICAgZm9yIGZvci4ub2Yg
d2l0aCBlbWl0RW51bWVyYXRpb24uCisKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24p
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHBvcnRMb2NhbERlY2xhcmF0aW9u
KToKKyAgICAgICAgVGhlc2UgYXJlIG5vIGxvbmdlciBuZWVkZWQgdG8gZmFrZS1zYXRpc2Z5IGFz
c2VydGlvbnMuIFdlIG5ldmVyIHdhbnRlZCB0bworICAgICAgICBlbWl0IGRlYnVnIGhvb2tzIGZv
ciB0aGVzZSBpbm5lciBzdGF0ZW1lbnRzIGJlY2F1c2UgdGhlIGV4cG9ydCBzdGF0ZW1lbnQKKyAg
ICAgICAgd2lsbCBhbHJlYWR5IGhhdmUgdGhlIGRlYnVnIGhvb2tzLgorCisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZvck9mTG9vcCk6CisgICAgICAgIEluY2x1ZGUgdGhlIGNvcnJlY3QgbG9jYXRpb24g
d2hlcmUgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0cy4KKworICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpicmVha3BvaW50TG9jYXRpb24pOgorICAgICAgICBTaW1wbGlmeSB0byBhIGdlbmVyYWwgaW1w
bGVtZW50YXRpb24gZm9yIE5vZGUuCisKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5o
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JPZkxvb3ApOgorICAgICAgICBJZ25vcmUg
dGhlIG5ldyBleHRyYSBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAg
ICAgICAgKEpTQzo6Tm9kZTo6bmVlZHNEZWJ1Z0hvb2spOgorICAgICAgICAoSlNDOjpOb2RlOjpz
ZXROZWVkc0RlYnVnSG9vayk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjpuZWVkc0Rl
YnVnSG9vayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjpzZXROZWVk
c0RlYnVnSG9vayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OmlzRW1w
dHlTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpuZWVk
c0RlYnVnSG9vayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldE5l
ZWRzRGVidWdIb29rKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSBkZWJ1ZyBob29rIGxvZ2ljIGlu
dG8gdGhlIGJhc2UgTm9kZSBjbGFzcy4KKworICAgICAgICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpp
c0RlYnVnZ2VyU3RhdGVtZW50KToKKyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBkaXN0aW5ndWlz
aCBhIGRlYnVnZ2VyIHN0YXRlbWVudC4KKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAg
ICAgICBQcm92aWRlIHRoZSBsb2NhdGlvbiBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0cy4K
KwogMjAxNi0xMC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBWYWx1ZUFkZCBzaG91bGQgYmUgY29uc3RhbnQgZm9sZGVkIGlmIHRoZSBvcGVyYW5kcyBhcmUg
Y29uc3RhbnQgU3RyaW5nLFByaW1pdGl2ZSBvciBQcmltaXRpdmUsU3RyaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDg2YmE3ZTQuLmY3ZTEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNTA0LDE0
ICszNTA0LDE2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdI
b29rVHlwZSBkZWJ1Z0hvb2tUeXBlLCB1bnNpZ25lZCBsaW5lCiAKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWJ1Z0hvb2soU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQogewotICAgIFJF
TEVBU0VfQVNTRVJUKHN0YXRlbWVudC0+bmVlZHNEZWJ1Z0hvb2soKSk7CisgICAgLy8gRGVidWdn
ZXJTdGF0ZW1lbnROb2RlIHdpbGwgb3V0cHV0IGl0cyBvd24gc3BlY2lhbCBkZWJ1ZyBob29rLgor
ICAgIGlmIChzdGF0ZW1lbnQtPmlzRGVidWdnZXJTdGF0ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgc3RhdGVtZW50LT5w
b3NpdGlvbigpKTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhF
eHByZXNzaW9uTm9kZSogZXhwciwgRGVidWdIb29rVHlwZSBkZWJ1Z0hvb2tUeXBlKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhFeHByZXNzaW9uTm9kZSogZXhwcikKIHsK
LSAgICBSRUxFQVNFX0FTU0VSVChleHByLT5uZWVkc0RlYnVnSG9vaygpKTsKLSAgICBlbWl0RGVi
dWdIb29rKGRlYnVnSG9va1R5cGUsIGV4cHItPnBvc2l0aW9uKCkpOworICAgIGVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGV4cHItPnBvc2l0aW9uKCkpOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0V2lsbExlYXZlQ2FsbEZyYW1lRGVidWdIb29rKCkKQEAgLTQy
MDIsNyArNDIwNCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIGlmIChmb3JM
b29wTm9kZSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9yTG9vcE5vZGUtPmlzRm9y
T2ZOb2RlKCkpOwogICAgICAgICAgICAgcHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29w
SXRlcmF0aW9uKGZvckxvb3BOb2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOwotICAgICAgICAgICAg
ZW1pdERlYnVnSG9vayhmb3JMb29wTm9kZS0+ZXhwcigpLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7
CisgICAgICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBjZmI2ZTQ3Li5hMDliYmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC0zODYsNiArMzg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkobi0+
bmVlZHNEZWJ1Z0hvb2soKSkpCisgICAgICAgICAgICAgICAgZW1pdERlYnVnSG9vayhuKTsKICAg
ICAgICAgICAgIG4tPmVtaXRCeXRlY29kZSgqdGhpcywgZHN0KTsKICAgICAgICAgfQogCkBAIC00
MTEsNiArNDEzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8
fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5y
ZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbV92bS0+aXNTYWZlVG9SZWN1
cnNlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVl
cEV4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG4tPm5lZWRzRGVidWdIb29r
KCkpKQorICAgICAgICAgICAgICAgIGVtaXREZWJ1Z0hvb2sobik7CiAgICAgICAgICAgICByZXR1
cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOwogICAgICAgICB9CiAKQEAgLTQzMCw3ICs0
MzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBlbWl0VGhyb3dFeHByZXNz
aW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KLQogICAgICAgICAgICAgbi0+ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KCp0
aGlzLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFsbFRocm91Z2hNb2RlKTsKICAgICAgICAg
fQogCkBAIC02ODQsNyArNjg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dERlYnVnSG9vayhEZWJ1Z0hvb2tUeXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOwogICAgICAg
ICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdIb29rVHlwZSwgdW5zaWduZWQgbGluZSwgdW5zaWdu
ZWQgY2hhck9mZnNldCwgdW5zaWduZWQgbGluZVN0YXJ0KTsKICAgICAgICAgdm9pZCBlbWl0RGVi
dWdIb29rKFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKEV4cHJl
c3Npb25Ob2RlKiwgRGVidWdIb29rVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdERlYnVnSG9vayhF
eHByZXNzaW9uTm9kZSopOwogICAgICAgICB2b2lkIGVtaXRXaWxsTGVhdmVDYWxsRnJhbWVEZWJ1
Z0hvb2soKTsKIAogICAgICAgICBib29sIGlzSW5GaW5hbGx5QmxvY2soKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCA+IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0ZDI3NmQzLi5lNmNiMGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC05NCw2ICs5NCwxMiBAQCBSZWdpc3RlcklEKiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YTo6ZW1p
dFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImCiB2b2lkIENvbnN0YW50Tm9k
ZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdo
TW9kZSBmYWxsVGhyb3VnaE1vZGUpCiB7CiAgICAgVHJpU3RhdGUgdmFsdWUgPSBqc1ZhbHVlKGdl
bmVyYXRvcikucHVyZVRvQm9vbGVhbigpOworCisgICAgaWYgKHZhbHVlICE9IE1peGVkVHJpU3Rh
dGUpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKG5lZWRzRGVidWdIb29rKCkpKQorICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sodGhpcyk7CisgICAgfQorCiAgICAgaWYgKHZhbHVl
ID09IE1peGVkVHJpU3RhdGUpCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGVJ
bkNvbmRpdGlvbkNvbnRleHQoZ2VuZXJhdG9yLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFs
bFRocm91Z2hNb2RlKTsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBUcnVlVHJpU3RhdGUgJiYgZmFs
bFRocm91Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNGYWxzZSkKQEAgLTE2NjksNyArMTY3NSwx
MCBAQCBSZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogCiB2b2lkIExvZ2ljYWxOb3ROb2RlOjplbWl0
Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
TGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlIGZh
bGxUaHJvdWdoTW9kZSkKIHsKLSAgICAvLyByZXZlcnNlIHRoZSB0cnVlIGFuZCBmYWxzZSB0YXJn
ZXRzCisgICAgaWYgKFVOTElLRUxZKG5lZWRzRGVidWdIb29rKCkpKQorICAgICAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayh0aGlzKTsKKworICAgIC8vIFJldmVyc2UgdGhlIHRydWUgYW5kIGZh
bHNlIHRhcmdldHMuCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KGV4
cHIoKSwgZmFsc2VUYXJnZXQsIHRydWVUYXJnZXQsIGludmVydChmYWxsVGhyb3VnaE1vZGUpKTsK
IH0KIApAQCAtMTc5OSw2ICsxODA4LDExIEBAIHZvaWQgQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNv
ZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBF
eHByZXNzaW9uTm9kZSogYnJhbmNoRXhwcmVzc2lvbjsKICAgICB0cnlGb2xkVG9CcmFuY2goZ2Vu
ZXJhdG9yLCBicmFuY2hDb25kaXRpb24sIGJyYW5jaEV4cHJlc3Npb24pOwogCisgICAgaWYgKFVO
TElLRUxZKG5lZWRzRGVidWdIb29rKCkpKSB7CisgICAgICAgIGlmIChicmFuY2hDb25kaXRpb24g
IT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRo
aXMpOworICAgIH0KKwogICAgIGlmIChicmFuY2hDb25kaXRpb24gPT0gTWl4ZWRUcmlTdGF0ZSkK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChn
ZW5lcmF0b3IsIHRydWVUYXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1vZGUpOwogICAg
IGVsc2UgaWYgKGJyYW5jaENvbmRpdGlvbiA9PSBUcnVlVHJpU3RhdGUpCkBAIC0yMDAwLDYgKzIw
MTQsOSBAQCBSZWdpc3RlcklEKiBMb2dpY2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lkIExvZ2ljYWxPcE5vZGU6OmVt
aXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUg
ZmFsbFRocm91Z2hNb2RlKQogeworICAgIGlmIChVTkxJS0VMWShuZWVkc0RlYnVnSG9vaygpKSkK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sodGhpcyk7CisKICAgICBSZWZQdHI8TGFi
ZWw+IGFmdGVyRXhwcjEgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9vcGVyYXRv
ciA9PSBPcExvZ2ljYWxBbmQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9u
Q29udGV4dChtX2V4cHIxLCBhZnRlckV4cHIxLmdldCgpLCBmYWxzZVRhcmdldCwgRmFsbFRocm91
Z2hNZWFuc1RydWUpOwpAQCAtMjM3Niw5ICsyMzkzLDkgQEAgdm9pZCBCbG9ja05vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVN0YXRlbWVudE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lk
IEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sodGhpcyk7CisgICAgUkVM
RUFTRV9BU1NFUlQobmVlZHNEZWJ1Z0hvb2soKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC0yMzkzLDcgKzI0MTAsNiBAQCB2b2lkIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogdm9p
ZCBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayh0aGlzKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X2V4cHIpOwogfQogCkBAIC0yNDAyLDcgKzI0MTgsNiBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZAogdm9pZCBEZWNsYXJhdGlvblN0YXRlbWVudDo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewogICAgIEFTU0VSVChtX2V4cHIpOwotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZSht
X2V4cHIpOwogfQogCkBAIC0yNDkwLDggKzI1MDUsNiBAQCBib29sIElmRWxzZU5vZGU6OnRyeUZv
bGRCcmVha0FuZENvbnRpbnVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFN0YXRlbWVu
dAogCiB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
bV9jb25kaXRpb24sIFdpbGxFeGVjdXRlU3RhdGVtZW50KTsKLSAgICAKICAgICBSZWZQdHI8TGFi
ZWw+IGJlZm9yZVRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+
IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFm
dGVyRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMjUzNiw3ICsyNTQ5LDYgQEAgdm9p
ZCBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihk
c3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG1fZXhwciwgV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIEZhbGxUaHJv
dWdoTWVhbnNGYWxzZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1Rh
cmdldCgpKTsKQEAgLTI1NDksNyArMjU2MSw2IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIExh
YmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpM
b29wKTsKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0YXRl
bWVudCk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwg
dG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgRmFsbFRocm91Z2hNZWFuc1Ry
dWUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwpAQCAtMjU1
OSw3ICsyNTcwLDYgQEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
SW5UYWlsUG9zaXRpb24oZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhtX2V4cHIsIFdpbGxFeGVjdXRlU3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFr
VGFyZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNGYWxzZSk7CiAKQEAgLTI1NzcsMjEgKzI1ODcsMTIg
QEAgdm9pZCBGb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9
IG51bGxwdHI7CiAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVH
ZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0
b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQsICZmb3JMb29wU3ltYm9sVGFibGUpOwogCi0g
ICAgaWYgKG1fZXhwcjEgfHwgbV9leHByMikgewotICAgICAgICBFeHByZXNzaW9uTm9kZSogZmly
c3RFeHByID0gbV9leHByMSA/IG1fZXhwcjEgOiBtX2V4cHIyOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhmaXJzdEV4cHIsIFdpbGxFeGVjdXRlU3RhdGVtZW50KTsKLSAgICB9Ci0K
LSAgICBpZiAobV9leHByMSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4
cHIxLCBXaWxsRXhlY3V0ZUV4cHJlc3Npb24pOworICAgIGlmIChtX2V4cHIxKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9leHByMSk7Ci0g
ICAgfQogCiAgICAgUmVmUHRyPExhYmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKLSAgICBpZiAobV9leHByMikgewotICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayht
X2V4cHIyLCBXaWxsRXhlY3V0ZUV4cHJlc3Npb24pOworICAgIGlmIChtX2V4cHIyKQogICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdG9wT2ZMb29w
LmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgRmFsbFRocm91Z2hNZWFuc1RydWUpOwotICAg
IH0KIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodG9wT2ZMb29wLmdldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdExvb3BIaW50KCk7CkBAIC0yNjAxLDE1ICsyNjAyLDEyIEBAIHZvaWQgRm9yTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkp
OwogICAgIGdlbmVyYXRvci5wcmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRp
b24odGhpcywgZm9yTG9vcFN5bWJvbFRhYmxlKTsKLSAgICBpZiAobV9leHByMykgewotICAgICAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4cHIzLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7
CisgICAgaWYgKG1fZXhwcjMpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpLCBtX2V4cHIzKTsKLSAgICB9CiAKLSAgICBpZiAobV9leHByMikgewot
ICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4cHIyLCBXaWxsRXhlY3V0ZVN0YXRl
bWVudCk7CisgICAgaWYgKG1fZXhwcjIpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29u
ZGl0aW9uQ29udGV4dChtX2V4cHIyLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1Rhcmdl
dCgpLCBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpOwotICAgIH0gZWxzZQorICAgIGVsc2UKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKHRvcE9mTG9vcC5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKQEAgLTI3MzgsOCArMjczNiw2IEBAIHZv
aWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51
bGxwdHI7CiAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVHZW5l
cmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6
Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQsICZmb3JMb29wU3ltYm9sVGFibGUpOwogCi0gICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7Ci0K
ICAgICBpZiAobV9sZXhwci0+aXNBc3NpZ25SZXNvbHZlTm9kZSgpKQogICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9sZXhwcik7CiAKQEAgLTI3
NTEsNiArMjc0Nyw5IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBsb2NhbCA9IHRoaXMtPnRyeUdldEJvdW5kTG9jYWwoZ2VuZXJhdG9yKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZW51bWVyYXRvckluZGV4OwogCisgICAgLy8gUGF1c2UgYXQgdGhlIGFzc2ln
bm1lbnQgZXhwcmVzc2lvbiBmb3IgZWFjaCBmb3IuLmluIGl0ZXJhdGlvbi4KKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhtX2xleHByKTsKKwogICAgIGludCBwcm9maWxlclN0YXJ0T2Zmc2V0
ID0gbV9zdGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCk7CiAgICAgaW50IHByb2ZpbGVyRW5kT2Zmc2V0
ID0gbV9zdGF0ZW1lbnQtPmVuZE9mZnNldCgpICsgKG1fc3RhdGVtZW50LT5pc0Jsb2NrKCkgPyAx
IDogMCk7CiAKQEAgLTI3ODgsNyArMjc4Nyw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLnByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbih0aGlz
LCBmb3JMb29wU3ltYm9sVGFibGUpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEluYyhpLmdldCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0
YXRlbWVudCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG1fbGV4cHIpOyAvLyBQ
YXVzZSBhdCB0aGUgYXNzaWdubWVudCBleHByZXNzaW9uIGZvciBlYWNoIGZvci4uaW4gaXRlcmF0
aW9uLgogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKIAogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKQEAgLTI4Mjgs
NyArMjgyNyw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBnZW5lcmF0b3IucHJlcGFy
ZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0aW9uKHRoaXMsIGZvckxvb3BTeW1ib2xU
YWJsZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5jKGVudW1lcmF0b3JJbmRleC5nZXQoKSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RW51bWVyYXRvclN0cnVjdHVyZVByb3BlcnR5TmFtZShw
cm9wZXJ0eU5hbWUuZ2V0KCksIGVudW1lcmF0b3IuZ2V0KCksIGVudW1lcmF0b3JJbmRleC5nZXQo
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG1fZXhwciwgV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2xleHByKTsgLy8g
UGF1c2UgYXQgdGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBmb3IgZWFjaCBmb3IuLmluIGl0ZXJh
dGlvbi4KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CiAgICAg
ICAgIAogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsK
QEAgLTI4NjUsNyArMjg2NCw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBnZW5lcmF0
b3IucHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0aW9uKHRoaXMsIGZvckxv
b3BTeW1ib2xUYWJsZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5jKGVudW1lcmF0b3JJbmRl
eC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RW51bWVyYXRvckdlbmVyaWNQcm9wZXJ0
eU5hbWUocHJvcGVydHlOYW1lLmdldCgpLCBlbnVtZXJhdG9yLmdldCgpLCBlbnVtZXJhdG9ySW5k
ZXguZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4cHIsIFdpbGxF
eGVjdXRlU3RhdGVtZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9sZXhw
cik7IC8vIFBhdXNlIGF0IHRoZSBhc3NpZ25tZW50IGV4cHJlc3Npb24gZm9yIGVhY2ggZm9yLi5p
biBpdGVyYXRpb24uCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkp
OwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwpA
QCAtMjk2Miw4ICsyOTYxLDYgQEAgTGFiZWwqIENvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdldChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogCiB2b2lkIENvbnRpbnVlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwotICAgIAogICAgIExhYmVsU2NvcGVQdHIg
c2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNj
b3BlKTsKIApAQCAtMjk5MSw4ICsyOTg4LDYgQEAgTGFiZWwqIEJyZWFrTm9kZTo6dHJpdmlhbFRh
cmdldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogCiB2b2lkIEJyZWFrTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwotICAgIAogICAgIExhYmVsU2NvcGVQ
dHIgc2NvcGUgPSBnZW5lcmF0b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNj
b3BlKTsKIApAQCAtMzAwNiw4ICszMDAxLDYgQEAgdm9pZCBCcmVha05vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogdm9pZCBSZXR1
cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwotCiAgICAg
QVNTRVJUKGdlbmVyYXRvci5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCkBAIC0zMDM0LDggKzMwMjcsNiBAQCB2
b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAKIHZvaWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7Ci0KICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1fZGl2b3QgLSBtX2V4cHJlc3Np
b25MZW5ndGgsIG1fZGl2b3QpOwogICAgIGdlbmVyYXRvci5lbWl0UHVzaFdpdGhTY29wZShzY29w
ZS5nZXQoKSk7CkBAIC0zMjA5LDggKzMyMDAsNiBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVtaXRC
eXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQog
CiB2b2lkIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9l
eHByLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7Ci0gICAgCiAgICAgTGFiZWxTY29wZVB0ciBzY29w
ZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlN3aXRjaCk7CiAKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKQEAgLTMy
MzksOCArMzIyOCw2IEBAIHZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiB2b2lkIFRocm93Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayh0aGlzKTsKLQogICAgIGlmIChkc3QgPT0g
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgZHN0ID0gMDsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZXhwciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA0YTJkNzFlLi42OGQ1MzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtNTU5LDcgKzU1
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQs
IGludCBlbmQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKQogICAgIHsKICAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZvckluTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRz
LCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CkBAIC01Njcs
MTMgKzU2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Np
b25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBh
dHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGRlY2xMb2NhdGlvbiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCwgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcykKICAgICB7Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybiwgMCk7Ci0g
ICAgICAgIHJldHVybiBjcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGxleHByLCBpdGVyLCBzdGF0
ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCwgbGV4aWNhbFZhcmlhYmxl
cyk7CisgICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJp
bmdBc3NpZ25tZW50Tm9kZShkZWNsTG9jYXRpb24sIHBhdHRlcm4sIG51bGxwdHIpOworICAgICAg
ICByZXR1cm4gY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBsZXhwciwgaXRlciwgc3RhdGVtZW50
cywgZGVjbExvY2F0aW9uLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCwgbGV4aWNh
bFZhcmlhYmxlcyk7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvck9m
TG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhz
LCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCwgVmFyaWFibGVFbnZp
cm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JP
Zkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxo
cywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3Rh
cnQsIGludCBlbmQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAg
ewogICAgICAgICBGb3JPZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRm9yT2ZO
b2RlKGxvY2F0aW9uLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMsIGxleGljYWxWYXJpYWJsZXMpOwog
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5zdGFydE9mZnNldCwg
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKQEAgLTU4MSwxMCArNTgxLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3Rh
cnQsIGludCBlbmQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUq
IGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZGVjbExvY2F0aW9uLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBp
bnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAgIHsKLSAg
ICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2ln
bm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCAwKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUZv
ck9mTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90
LCBlRW5kLCBzdGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICAgICAgYXV0byBsZXhw
ciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGRlY2xM
b2NhdGlvbiwgcGF0dGVybiwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiBjcmVhdGVGb3JPZkxv
b3AobG9jYXRpb24sIGxleHByLCBpdGVyLCBzdGF0ZW1lbnRzLCBkZWNsTG9jYXRpb24sIGVTdGFy
dCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICB9CiAK
ICAgICBib29sIGlzQmluZGluZ05vZGUoY29uc3QgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIHBhdHRl
cm4pCkBAIC03NTIsMjEgKzc1MiwxMSBAQCBwdWJsaWM6CiAKICAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgU3RhdGVtZW50Tm9kZSogZGVjbGFyYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGxvY2Fs
TmFtZSkKICAgICB7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFyayB0aGUgaW5uZXIgc3RhdGVt
ZW50IGFzIG5lZWRpbmcgYSBkZWJ1ZyBob29rIChzbyB0aGF0IHdoZW4gdGhlIHN0YXRlbWVudCBp
cyBnZW5lcmF0ZWQgd2UgZG9uJ3QKLSAgICAgICAgLy8gYXNzZXJ0IHdoZW4gZ2VuZXJhdGluZyBh
biBvcF9kZWJ1ZyBmb3IgaXQpIHdpdGhvdXQgcmVjb3JkaW5nIGEgYnJlYWtwb2ludCBsb2NhdGlv
biBiZWNhdXNlIHRoZSBleHBvcnQgc3RhdGVtZW50Ci0gICAgICAgIC8vIGl0c2VsZiB3aWxsIGdl
dCB0aGUgYnJlYWtwb2ludCBsb2NhdGlvbi4gVGhpcyB3aWxsIGJlIGVsaW1pbmF0ZWQgYnk6Ci0g
ICAgICAgIC8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI4MDk+IEVtaXQgRGVidWdIb29rcyB1
bmlmb3JtbHkgd2l0aCBwYXVzZSBsb2NhdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgc2VwYXJhdGUg
cGF1c2UgbG9jYXRpb25zIGFuZCBvcF9kZWJ1ZyBlbWl0cwotICAgICAgICBkZWNsYXJhdGlvbi0+
c2V0TmVlZHNEZWJ1Z0hvb2soKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgZGVjbGFyYXRpb24sIGxvY2Fs
TmFtZSk7CiAgICAgfQogCiAgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0TG9jYWxEZWNs
YXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBk
ZWNsYXJhdGlvbikKICAgICB7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFyayB0aGUgaW5uZXIg
c3RhdGVtZW50IGFzIG5lZWRpbmcgYSBkZWJ1ZyBob29rIChzbyB0aGF0IHdoZW4gdGhlIHN0YXRl
bWVudCBpcyBnZW5lcmF0ZWQgd2UgZG9uJ3QKLSAgICAgICAgLy8gYXNzZXJ0IHdoZW4gZ2VuZXJh
dGluZyBhbiBvcF9kZWJ1ZyBmb3IgaXQpIHdpdGhvdXQgcmVjb3JkaW5nIGEgYnJlYWtwb2ludCBs
b2NhdGlvbiBiZWNhdXNlIHRoZSBleHBvcnQgc3RhdGVtZW50Ci0gICAgICAgIC8vIGl0c2VsZiB3
aWxsIGdldCB0aGUgYnJlYWtwb2ludCBsb2NhdGlvbi4gVGhpcyB3aWxsIGJlIGVsaW1pbmF0ZWQg
Ynk6Ci0gICAgICAgIC8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI4MDk+IEVtaXQgRGVidWdI
b29rcyB1bmlmb3JtbHkgd2l0aCBwYXVzZSBsb2NhdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgc2Vw
YXJhdGUgcGF1c2UgbG9jYXRpb25zIGFuZCBvcF9kZWJ1ZyBlbWl0cwotICAgICAgICBkZWNsYXJh
dGlvbi0+c2V0TmVlZHNEZWJ1Z0hvb2soKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUobG9jYXRpb24sIGRlY2xhcmF0aW9uKTsK
ICAgICB9CiAKQEAgLTk4MywxNiArOTczLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbm9kZS0+c2V0
U3RhcnRPZmZzZXQob2Zmc2V0KTsKICAgICB9CiAKLSAgICBKU1RleHRQb3NpdGlvbiBicmVha3Bv
aW50TG9jYXRpb24oU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgIEpTVGV4dFBvc2l0aW9u
IGJyZWFrcG9pbnRMb2NhdGlvbihOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgc3RhdGVtZW50
LT5zZXROZWVkc0RlYnVnSG9vaygpOwotICAgICAgICByZXR1cm4gc3RhdGVtZW50LT5wb3NpdGlv
bigpOwotICAgIH0KLQotICAgIEpTVGV4dFBvc2l0aW9uIGJyZWFrcG9pbnRMb2NhdGlvbihFeHBy
ZXNzaW9uTm9kZSogZXhwcikKLSAgICB7Ci0gICAgICAgIGV4cHItPnNldE5lZWRzRGVidWdIb29r
KCk7Ci0gICAgICAgIHJldHVybiBleHByLT5wb3NpdGlvbigpOworICAgICAgICBub2RlLT5zZXRO
ZWVkc0RlYnVnSG9vaygpOworICAgICAgICByZXR1cm4gbm9kZS0+cG9zaXRpb24oKTsKICAgICB9
CiAKICAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0FyZ3VtZW50cygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggN2I5Zjg4Yy4uZmI0NTNlOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQ1LDkgKzE0NSwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRFbmRPZmZzZXQoaW50IG9mZnNldCkgeyBt
X2VuZE9mZnNldCA9IG9mZnNldDsgfQogICAgICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCBv
ZmZzZXQpIHsgbV9wb3NpdGlvbi5vZmZzZXQgPSBvZmZzZXQ7IH0KIAorICAgICAgICBib29sIG5l
ZWRzRGVidWdIb29rKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0RlYnVnSG9vazsgfQorICAgICAg
ICB2b2lkIHNldE5lZWRzRGVidWdIb29rKCkgeyBtX25lZWRzRGVidWdIb29rID0gdHJ1ZTsgfQor
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBKU1RleHRQb3NpdGlvbiBtX3Bvc2l0aW9uOwogICAg
ICAgICBpbnQgbV9lbmRPZmZzZXQ7CisgICAgICAgIGJvb2wgbV9uZWVkc0RlYnVnSG9vayB7IGZh
bHNlIH07CiAgICAgfTsKIAogICAgIGNsYXNzIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5vZGUg
ewpAQCAtMTkxLDEyICsxOTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZXN1bHRU
eXBlIHJlc3VsdERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdFR5cGU7IH0KIAot
ICAgICAgICBib29sIG5lZWRzRGVidWdIb29rKCkgeyByZXR1cm4gbV9uZWVkc0RlYnVnSG9vazsg
fQotICAgICAgICB2b2lkIHNldE5lZWRzRGVidWdIb29rKCkgeyBtX25lZWRzRGVidWdIb29rID0g
dHJ1ZTsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzdWx0VHlwZSBtX3Jlc3VsdFR5cGU7
Ci0gICAgICAgIGJvb2wgbV9uZWVkc0RlYnVnSG9vayB7IGZhbHNlIH07CiAgICAgfTsKIAogICAg
IGNsYXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC0yMTMsNiArMjEzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0TmV4dChTdGF0ZW1lbnROb2RlKiBuZXh0
KSB7IG1fbmV4dCA9IG5leHQ7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rl
YnVnZ2VyU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzRnVuY3Rpb25Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
dmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtMjI0LDEzICsyMjUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBi
b29sIGlzTW9kdWxlRGVjbGFyYXRpb25Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIGlzRm9yT2ZOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgICAgICBib29sIG5lZWRzRGVidWdIb29rKCkgeyByZXR1cm4gbV9uZWVkc0RlYnVnSG9v
azsgfQotICAgICAgICB2b2lkIHNldE5lZWRzRGVidWdIb29rKCkgeyBtX25lZWRzRGVidWdIb29r
ID0gdHJ1ZTsgfQotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX25l
eHQ7CiAgICAgICAgIGludCBtX2xhc3RMaW5lOwotICAgICAgICBib29sIG1fbmVlZHNEZWJ1Z0hv
b2sgeyBmYWxzZSB9OwogICAgIH07CiAKICAgICBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Tm9k
ZSA6IHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CkBAIC0xMzY2LDYgKzEzNjMsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisKKyAgICAgICAgYm9vbCBpc0RlYnVnZ2VyU3Rh
dGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC0xNDczLDYgKzE0NzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBFbnVtZXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBWYXJpYWJs
ZUVudmlyb25tZW50Jik7CiAKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGxleHByKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhwcjsgfQogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcjsgfQogCiAgICAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGJlM2RjYTkuLmUxM2I3ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTExODYsNiArMTE4Niw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGb3JTdGF0ZW1lbnQoCiAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChPUEVOUEFSRU4sICIo
IiwgInN0YXJ0IiwgImZvci1sb29wIGhlYWRlciIpOwogICAgIGludCBub25MSFNDb3VudCA9IG1f
cGFyc2VyU3RhdGUubm9uTEhTQ291bnQ7CiAgICAgaW50IGRlY2xhcmF0aW9ucyA9IDA7CisgICAg
SlNUb2tlbkxvY2F0aW9uIGRlY2xMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4
dFBvc2l0aW9uIGRlY2xzU3RhcnQ7CiAgICAgSlNUZXh0UG9zaXRpb24gZGVjbHNFbmQ7CiAgICAg
VHJlZUV4cHJlc3Npb24gZGVjbHMgPSAwOwpAQCAtMTI4MCwxMiArMTI4MSwxMiBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRm9yU3RhdGVtZW50KAogICAgICAgICBnYXRoZXJMZXhpY2FsVmFyaWFibGVzSWZOZWNlc3Nh
cnkoKTsKICAgICAgICAgVHJlZVN0YXRlbWVudCByZXN1bHQ7CiAgICAgICAgIGlmIChpc09mRW51
bWVyYXRpb24pCi0gICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvck9mTG9vcChs
b2NhdGlvbiwgZm9ySW5UYXJnZXQsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2Nh
dGlvbiwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCAqbGV4aWNhbFZhcmlhYmxlcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvck9mTG9vcChsb2NhdGlvbiwgZm9y
SW5UYXJnZXQsIGV4cHIsIHN0YXRlbWVudCwgZGVjbExvY2F0aW9uLCBkZWNsc1N0YXJ0LCBpbkxv
Y2F0aW9uLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFyaWFibGVzKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNWYXJEZWNsYXJhdG9uICYmIGZvcklu
SW5pdGlhbGl6ZXIpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVGb3JJ
bkxvb3AobG9jYXRpb24sIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9j
YXRpb24sIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSwgKmxleGljYWxWYXJpYWJsZXMpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9u
LCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRlY2xzU3RhcnQsIGluTG9j
YXRpb24sIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSwgKmxleGljYWxWYXJpYWJsZXMpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRl
Rm9ySW5Mb29wKGxvY2F0aW9uLCBmb3JJblRhcmdldCwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0
YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFy
aWFibGVzKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvckluTG9v
cChsb2NhdGlvbiwgZm9ySW5UYXJnZXQsIGV4cHIsIHN0YXRlbWVudCwgZGVjbExvY2F0aW9uLCBk
ZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhp
Y2FsVmFyaWFibGVzKTsKICAgICAgICAgfQogICAgICAgICBwb3BMZXhpY2FsU2NvcGVJZk5lY2Vz
c2FyeSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM3MiwxNyArMTM3MywxNyBAQCBl
bnVtZXJhdGlvbkxvb3A6CiAgICAgaWYgKHBhdHRlcm4pIHsKICAgICAgICAgQVNTRVJUKCFkZWNs
cyk7CiAgICAgICAgIGlmIChpc09mRW51bWVyYXRpb24pCi0gICAgICAgICAgICByZXN1bHQgPSBj
b250ZXh0LmNyZWF0ZUZvck9mTG9vcChsb2NhdGlvbiwgcGF0dGVybiwgZXhwciwgc3RhdGVtZW50
LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCAqbGV4
aWNhbFZhcmlhYmxlcyk7CisgICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvck9m
TG9vcChsb2NhdGlvbiwgcGF0dGVybiwgZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRl
Y2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2Fs
VmFyaWFibGVzKTsKICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQu
Y3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBwYXR0ZXJuLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xz
U3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFy
aWFibGVzKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxv
Y2F0aW9uLCBwYXR0ZXJuLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xMb2NhdGlvbiwgZGVjbHNTdGFy
dCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSwgKmxleGljYWxWYXJpYWJs
ZXMpOwogCiAgICAgICAgIHBvcExleGljYWxTY29wZUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChpc09mRW51bWVyYXRpb24pCi0gICAgICAgIHJl
c3VsdCA9IGNvbnRleHQuY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9uLCBkZWNscywgZXhwciwgc3Rh
dGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
LCAqbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9y
T2ZMb29wKGxvY2F0aW9uLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRl
Y2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2Fs
VmFyaWFibGVzKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9y
SW5Mb29wKGxvY2F0aW9uLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNs
c0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCAqbGV4aWNhbFZhcmlhYmxlcyk7Cisg
ICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBkZWNscywg
ZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHBy
RW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFyaWFibGVzKTsKICAgICBwb3BMZXhp
Y2FsU2NvcGVJZk5lY2Vzc2FyeSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDQ2ZmE2ZjEuLjcxMDI0
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBA
IC0yMzgsOCArMjM4LDggQEAgcHVibGljOgogICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVu
dFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9
CiAgICAgaW50IGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgVmFyaWFibGVFbnZpcm9ubWVudCYpIHsgcmV0dXJuIFN0YXRl
bWVudFJlc3VsdDsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIFZhcmlhYmxlRW52
aXJvbm1lbnQmKSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9y
T2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBWYXJpYWJsZUVudmlyb25tZW50JikgeyByZXR1cm4gU3RhdGVtZW50UmVz
dWx0OyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCwgaW50LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgVmFyaWFibGVFbnZpcm9ubWVudCYpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQor
ICAgIGludCBjcmVhdGVGb3JPZkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIFZh
cmlhYmxlRW52aXJvbm1lbnQmKSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBpbnQg
Y3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gU3Rh
dGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZURlY2xhcmF0aW9uU3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3Vs
dDsgfQogICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwppbmRleCBiN2IyMmQ1Li5lZDAyOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwxOCBAQAogMjAxNi0xMC0xMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCisgICAgICAgIEVtaXQgRGVidWdIb29rcyB1bmlmb3JtbHkgd2l0aCBw
YXVzZSBsb2NhdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgc2VwYXJhdGUgcGF1c2UgbG9jYXRpb25z
IGFuZCBvcF9kZWJ1ZyBlbWl0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50
ZXh0RWRpdG9yRXhlY3V0aW9uSGlnaGxpZ2h0UmFuZ2UpOgorICAgICAgICBXaGVuIHBhdXNpbmcg
b24gdGhlIHZhcmlhYmxlIGFzc2lnbm1lbnQgaW5zaWRlIGZvci4ub2YgYW5kIGZvci4uaW4gZG9u
J3QganVzdAorICAgICAgICBoaWdobGlnaHQgInZhciBmb28iIGJ1dCBpbmNsdWRlIHRoZSByaWdo
dCBoYW5kIHNpZGUgInZhciBmb28gaW4gLi4uIiBvcgorICAgICAgICAidmFyIGZvbyBvZiAuLi4i
LgorCisyMDE2LTEwLTExICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogV2hvbGUgcHJvZ3JhbSBzb21ldGltZXMgaGlnaGxpZ2h0
ZWQgaW5zdGVhZCBvZiBqdXN0IGZpcnN0IHN0YXRlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzAwCiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yODcyMzE2Mj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggNGE5ZmE5
ZC4uYTc4MjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTEyMzYs
MTIgKzEyMzYsMTkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3Mg
U291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgICAgICAgICAgLy8g
RmluZCBhIG5vZGUgc3RhcnRpbmcgYXQgdGhpcyBvZmZzZXQuCiAgICAgICAgICAgICAvLyBBdm9p
ZCBoaWdobGlnaHRpbmcgdGhlIGVudGlyZSBwcm9ncmFtIGlmIHRoaXMgaXMgdGhlIHN0YXJ0IG9m
IHRoZSBmaXJzdCBzdGF0ZW1lbnQuCisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIGFz
c2lnbm1lbnQgZXhwcmVzc2lvbiBpbnNpZGUgb2YgYSBmb3IuLm9mIGFuZCBmb3IuLmluIHRvIGhp
Z2hsaWdodCBhIGxhcmdlciByYW5nZS4KICAgICAgICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9k
ZXMpIHsKICAgICAgICAgICAgICAgICBsZXQgc3RhcnRPZmZzZXQgPSBub2RlLnJhbmdlWzBdOwog
ICAgICAgICAgICAgICAgIGlmIChzdGFydE9mZnNldCA9PT0gb2Zmc2V0ICYmIG5vZGUudHlwZSAh
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuUHJvZ3JhbSkgewogICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2Rl
T2Zmc2V0cyhub2RlLnJhbmdlKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRm9ySW5TdGF0ZW1lbnQgfHwgbm9kZS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Gb3JPZlN0YXRlbWVu
dCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5sZWZ0LnJhbmdlWzBdID09PSBvZmZz
ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnZlcnRSYW5nZU9mZnNl
dHNUb1NvdXJjZUNvZGVPZmZzZXRzKFtub2RlLmxlZnQucmFuZ2VbMF0sIG5vZGUucmlnaHQucmFu
Z2VbMV1dKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0T2Zm
c2V0ID4gb2Zmc2V0KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291319</attachid>
            <date>2016-10-11 16:57:19 -0700</date>
            <delta_ts>2016-10-12 11:33:19 -0700</delta_ts>
            <desc>[PATCH] For Bots - All Necessary Parts</desc>
            <filename>for-bots-1.patch</filename>
            <type>text/plain</type>
            <size>73162</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MGI4NTY2Li5kNTE5MzEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAt
MTEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBFbWl0
IERlYnVnSG9va3MgdW5pZm9ybWx5IHdpdGggcGF1c2UgbG9jYXRpb25zIGluc3RlYWQgb2YgaGF2
aW5nIHNlcGFyYXRlIHBhdXNlIGxvY2F0aW9ucyBhbmQgb3BfZGVidWcgZW1pdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjgwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy5odG1s
OgorICAgICAgICBBZGQgbmV3IHRlc3RzIGZvciBzdGVwcGluZyB0aHJvdWdoIGNvbmRpdGlvbmFs
IGV4cHJlc3Npb25zIHdpdGggY29uc3RhbnRzLAorICAgICAgICBsb2dpY2FsIG9wZXJhdGlvbnMs
IGJpbmFyeSBvcGVyYXRpb25zLCBhbmQgdW5hcnkgbmVnYXRpb25zLgorCisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMuaHRtbDoK
KyAgICAgICAgVXBkYXRlIHRlc3RzIGZvciBjaGFuZ2VzIGluIHN0ZXBwaW5nIGJlaGF2aW9yIGlu
IGZvciBsb29wcy4KKwogMjAxNi0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVzZSBJRExUeXBlcyBpbiBtb3JlIHBsYWNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWNvbnRyb2wtZmxvdy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctY29udHJvbC1mbG93LWV4cGVjdGVkLnR4dAppbmRleCA5YjU5NWEwLi4yMjdhZjA0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBp
bmctY29udHJvbC1mbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93LWV4cGVjdGVkLnR4dApAQCAt
Nyw0MCArNyw0MCBAQCBFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SWZTaW5nbGVTdGF0ZW1l
bnQpCiBTVEVQUzogb3Zlciwgb3Zlciwgb3Zlciwgb3ZlciwgcmVzdW1lCiBQQVVTRUQgKGRlYnVn
Z2VyLXN0YXRlbWVudCkKIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MTY6NQotICAg
ICAxMiAgICB9CisgICAgIDEyICAgIAogICAgICAxMyAgICAKICAgICAgMTQgICAgZnVuY3Rpb24g
ZW50cnlJZlNpbmdsZVN0YXRlbWVudCgpIHsKICAtPiAgMTUgICAgICAgIHxkZWJ1Z2dlcjsKLSAg
ICAgMTYgICAgICAgIGlmICh0cnVlKQorICAgICAxNiAgICAgICAgaWYgKHRydXRoeSkKICAgICAg
MTcgICAgICAgICAgICBhKCk7Ci0gICAgIDE4ICAgICAgICBpZiAoZmFsc2UpCisgICAgIDE4ICAg
ICAgICBpZiAoZmFsc2V5KQogCiBBQ1RJT046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlJZlNp
bmdsZVN0YXRlbWVudDoxNzo5CiAgICAgIDEzICAgIAogICAgICAxNCAgICBmdW5jdGlvbiBlbnRy
eUlmU2luZ2xlU3RhdGVtZW50KCkgewogICAgICAxNSAgICAgICAgZGVidWdnZXI7Ci0gLT4gIDE2
ICAgICAgICBpZiAofHRydWUpCisgLT4gIDE2ICAgICAgICBpZiAofHRydXRoeSkKICAgICAgMTcg
ICAgICAgICAgICBhKCk7Ci0gICAgIDE4ICAgICAgICBpZiAoZmFsc2UpCisgICAgIDE4ICAgICAg
ICBpZiAoZmFsc2V5KQogICAgICAxOSAgICAgICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVwLW92
ZXIKIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MTg6OQogICAgICAxNCAgICBmdW5j
dGlvbiBlbnRyeUlmU2luZ2xlU3RhdGVtZW50KCkgewogICAgICAxNSAgICAgICAgZGVidWdnZXI7
Ci0gICAgIDE2ICAgICAgICBpZiAodHJ1ZSkKKyAgICAgMTYgICAgICAgIGlmICh0cnV0aHkpCiAg
LT4gIDE3ICAgICAgICAgICAgfGEoKTsKLSAgICAgMTggICAgICAgIGlmIChmYWxzZSkKKyAgICAg
MTggICAgICAgIGlmIChmYWxzZXkpCiAgICAgIDE5ICAgICAgICAgICAgYSgpOwogICAgICAyMCAg
ICB9CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmU2luZ2xlU3RhdGVtZW50
OjE5OjkKICAgICAgMTUgICAgICAgIGRlYnVnZ2VyOwotICAgICAxNiAgICAgICAgaWYgKHRydWUp
CisgICAgIDE2ICAgICAgICBpZiAodHJ1dGh5KQogICAgICAxNyAgICAgICAgICAgIGEoKTsKLSAt
PiAgMTggICAgICAgIGlmICh8ZmFsc2UpCisgLT4gIDE4ICAgICAgICBpZiAofGZhbHNleSkKICAg
ICAgMTkgICAgICAgICAgICBhKCk7CiAgICAgIDIwICAgIH0KICAgICAgMjEgICAgCkBAIC00OCw3
ICs0OCw3IEBAIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MTk6OQogQUNUSU9OOiBz
dGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5SWZTaW5nbGVTdGF0ZW1lbnQ6MjE6MgogICAgICAxNyAg
ICAgICAgICAgIGEoKTsKLSAgICAgMTggICAgICAgIGlmIChmYWxzZSkKKyAgICAgMTggICAgICAg
IGlmIChmYWxzZXkpCiAgICAgIDE5ICAgICAgICAgICAgYSgpOwogIC0+ICAyMCAgICB9fAogICAg
ICAyMSAgICAKQEAgLTY4LDcgKzY4LDcgQEAgUEFVU0UgQVQgZW50cnlJZk11bHRpU3RhdGVtZW50
OjI0OjUKICAgICAgMjEgICAgCiAgICAgIDIyICAgIGZ1bmN0aW9uIGVudHJ5SWZNdWx0aVN0YXRl
bWVudCgpIHsKICAtPiAgMjMgICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAgMjQgICAgICAgIGlmICh0
cnVlKSB7CisgICAgIDI0ICAgICAgICBpZiAodHJ1dGh5KSB7CiAgICAgIDI1ICAgICAgICAgICAg
YSgpOwogICAgICAyNiAgICAgICAgICAgIGEoKTsKIApAQCAtNzcsNyArNzcsNyBAQCBQQVVTRSBB
VCBlbnRyeUlmTXVsdGlTdGF0ZW1lbnQ6MjU6OQogICAgICAyMSAgICAKICAgICAgMjIgICAgZnVu
Y3Rpb24gZW50cnlJZk11bHRpU3RhdGVtZW50KCkgewogICAgICAyMyAgICAgICAgZGVidWdnZXI7
Ci0gLT4gIDI0ICAgICAgICBpZiAofHRydWUpIHsKKyAtPiAgMjQgICAgICAgIGlmICh8dHJ1dGh5
KSB7CiAgICAgIDI1ICAgICAgICAgICAgYSgpOwogICAgICAyNiAgICAgICAgICAgIGEoKTsKICAg
ICAgMjcgICAgICAgIH0KQEAgLTg2LDIwICs4NiwyMCBAQCBBQ1RJT046IHN0ZXAtb3ZlcgogUEFV
U0UgQVQgZW50cnlJZk11bHRpU3RhdGVtZW50OjI2OjkKICAgICAgMjIgICAgZnVuY3Rpb24gZW50
cnlJZk11bHRpU3RhdGVtZW50KCkgewogICAgICAyMyAgICAgICAgZGVidWdnZXI7Ci0gICAgIDI0
ICAgICAgICBpZiAodHJ1ZSkgeworICAgICAyNCAgICAgICAgaWYgKHRydXRoeSkgewogIC0+ICAy
NSAgICAgICAgICAgIHxhKCk7CiAgICAgIDI2ICAgICAgICAgICAgYSgpOwogICAgICAyNyAgICAg
ICAgfQotICAgICAyOCAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgIDI4ICAgICAgICBpZiAoZmFs
c2V5KSB7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmTXVsdGlTdGF0ZW1l
bnQ6Mjc6OQogICAgICAyMyAgICAgICAgZGVidWdnZXI7Ci0gICAgIDI0ICAgICAgICBpZiAodHJ1
ZSkgeworICAgICAyNCAgICAgICAgaWYgKHRydXRoeSkgewogICAgICAyNSAgICAgICAgICAgIGEo
KTsKICAtPiAgMjYgICAgICAgICAgICB8YSgpOwogICAgICAyNyAgICAgICAgfQotICAgICAyOCAg
ICAgICAgaWYgKGZhbHNlKSB7CisgICAgIDI4ICAgICAgICBpZiAoZmFsc2V5KSB7CiAgICAgIDI5
ICAgICAgICAgICAgYSgpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgpAQCAtMTA3LDcgKzEwNyw3IEBA
IFBBVVNFIEFUIGVudHJ5SWZNdWx0aVN0YXRlbWVudDoyOTo5CiAgICAgIDI1ICAgICAgICAgICAg
YSgpOwogICAgICAyNiAgICAgICAgICAgIGEoKTsKICAgICAgMjcgICAgICAgIH0KLSAtPiAgMjgg
ICAgICAgIGlmICh8ZmFsc2UpIHsKKyAtPiAgMjggICAgICAgIGlmICh8ZmFsc2V5KSB7CiAgICAg
IDI5ICAgICAgICAgICAgYSgpOwogICAgICAzMCAgICAgICAgICAgIGEoKTsKICAgICAgMzEgICAg
ICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBQQVVTRSBBVCBlbnRyeUlmRWxzZTozNjo1CiAgICAg
IDMzICAgIAogICAgICAzNCAgICBmdW5jdGlvbiBlbnRyeUlmRWxzZSgpIHsKICAtPiAgMzUgICAg
ICAgIHxkZWJ1Z2dlcjsKLSAgICAgMzYgICAgICAgIGlmICh0cnVlKQorICAgICAzNiAgICAgICAg
aWYgKHRydXRoeSkKICAgICAgMzcgICAgICAgICAgICBhKCk7CiAgICAgIDM4ICAgICAgICBlbHNl
CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBQQVVTRSBBVCBlbnRyeUlmRWxzZTozNzo5CiAgICAgIDMz
ICAgIAogICAgICAzNCAgICBmdW5jdGlvbiBlbnRyeUlmRWxzZSgpIHsKICAgICAgMzUgICAgICAg
IGRlYnVnZ2VyOwotIC0+ICAzNiAgICAgICAgaWYgKHx0cnVlKQorIC0+ICAzNiAgICAgICAgaWYg
KHx0cnV0aHkpCiAgICAgIDM3ICAgICAgICAgICAgYSgpOwogICAgICAzOCAgICAgICAgZWxzZQog
ICAgICAzOSAgICAgICAgICAgIGEoKTsKQEAgLTE1MywyNSArMTUzLDI1IEBAIEFDVElPTjogc3Rl
cC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmRWxzZTozODo5CiAgICAgIDM0ICAgIGZ1bmN0aW9uIGVu
dHJ5SWZFbHNlKCkgewogICAgICAzNSAgICAgICAgZGVidWdnZXI7Ci0gICAgIDM2ICAgICAgICBp
ZiAodHJ1ZSkKKyAgICAgMzYgICAgICAgIGlmICh0cnV0aHkpCiAgLT4gIDM3ICAgICAgICAgICAg
fGEoKTsKICAgICAgMzggICAgICAgIGVsc2UKICAgICAgMzkgICAgICAgICAgICBhKCk7Ci0gICAg
IDQwICAgICAgICBpZiAoZmFsc2UpCisgICAgIDQwICAgICAgICBpZiAoZmFsc2V5KQogCiBBQ1RJ
T046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlJZkVsc2U6NDE6OQogICAgICAzNyAgICAgICAg
ICAgIGEoKTsKICAgICAgMzggICAgICAgIGVsc2UKICAgICAgMzkgICAgICAgICAgICBhKCk7Ci0g
LT4gIDQwICAgICAgICBpZiAofGZhbHNlKQorIC0+ICA0MCAgICAgICAgaWYgKHxmYWxzZXkpCiAg
ICAgIDQxICAgICAgICAgICAgYSgpOwogICAgICA0MiAgICAgICAgZWxzZQogICAgICA0MyAgICAg
ICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5SWZFbHNlOjQ0
OjkKLSAgICAgNDAgICAgICAgIGlmIChmYWxzZSkKKyAgICAgNDAgICAgICAgIGlmIChmYWxzZXkp
CiAgICAgIDQxICAgICAgICAgICAgYSgpOwogICAgICA0MiAgICAgICAgZWxzZQogIC0+ICA0MyAg
ICAgICAgICAgIHxhKCk7CkBAIC0yMDIsMzUgKzIwMiwzNSBAQCBQQVVTRSBBVCBlbnRyeUlmRWxz
ZUNoYWluOjQ4OjUKICAgICAgNDUgICAgCiAgICAgIDQ2ICAgIGZ1bmN0aW9uIGVudHJ5SWZFbHNl
Q2hhaW4oKSB7CiAgLT4gIDQ3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgIDQ4ICAgICAgICBpZiAo
ZmFsc2UpCisgICAgIDQ4ICAgICAgICBpZiAoZmFsc2V5KQogICAgICA0OSAgICAgICAgICAgIGEo
KTsKLSAgICAgNTAgICAgICAgIGVsc2UgaWYgKHRydWUpCisgICAgIDUwICAgICAgICBlbHNlIGlm
ICh0cnV0aHkpCiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeUlmRWxzZUNoYWlu
OjQ5OjkKICAgICAgNDUgICAgCiAgICAgIDQ2ICAgIGZ1bmN0aW9uIGVudHJ5SWZFbHNlQ2hhaW4o
KSB7CiAgICAgIDQ3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgNDggICAgICAgIGlmICh8ZmFsc2Up
CisgLT4gIDQ4ICAgICAgICBpZiAofGZhbHNleSkKICAgICAgNDkgICAgICAgICAgICBhKCk7Ci0g
ICAgIDUwICAgICAgICBlbHNlIGlmICh0cnVlKQorICAgICA1MCAgICAgICAgZWxzZSBpZiAodHJ1
dGh5KQogICAgICA1MSAgICAgICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNF
IEFUIGVudHJ5SWZFbHNlQ2hhaW46NTE6MTQKICAgICAgNDcgICAgICAgIGRlYnVnZ2VyOwotICAg
ICA0OCAgICAgICAgaWYgKGZhbHNlKQorICAgICA0OCAgICAgICAgaWYgKGZhbHNleSkKICAgICAg
NDkgICAgICAgICAgICBhKCk7Ci0gLT4gIDUwICAgICAgICBlbHNlIGlmICh8dHJ1ZSkKKyAtPiAg
NTAgICAgICAgIGVsc2UgaWYgKHx0cnV0aHkpCiAgICAgIDUxICAgICAgICAgICAgYSgpOwogICAg
ICA1MiAgICAgICAgZWxzZQogICAgICA1MyAgICAgICAgICAgIGEoKTsKIAogQUNUSU9OOiBzdGVw
LW92ZXIKIFBBVVNFIEFUIGVudHJ5SWZFbHNlQ2hhaW46NTI6OQotICAgICA0OCAgICAgICAgaWYg
KGZhbHNlKQorICAgICA0OCAgICAgICAgaWYgKGZhbHNleSkKICAgICAgNDkgICAgICAgICAgICBh
KCk7Ci0gICAgIDUwICAgICAgICBlbHNlIGlmICh0cnVlKQorICAgICA1MCAgICAgICAgZWxzZSBp
ZiAodHJ1dGh5KQogIC0+ICA1MSAgICAgICAgICAgIHxhKCk7CiAgICAgIDUyICAgICAgICBlbHNl
CiAgICAgIDUzICAgICAgICAgICAgYSgpOwpAQCAtMjQxLDI0ICsyNDEsMjQgQEAgUEFVU0UgQVQg
ZW50cnlJZkVsc2VDaGFpbjo1Njo5CiAgICAgIDUyICAgICAgICBlbHNlCiAgICAgIDUzICAgICAg
ICAgICAgYSgpOwogICAgICA1NCAgICAKLSAtPiAgNTUgICAgICAgIGlmICh8ZmFsc2UpCisgLT4g
IDU1ICAgICAgICBpZiAofGZhbHNleSkKICAgICAgNTYgICAgICAgICAgICBhKCk7Ci0gICAgIDU3
ICAgICAgICBlbHNlIGlmIChmYWxzZSkKKyAgICAgNTcgICAgICAgIGVsc2UgaWYgKGZhbHNleSkK
ICAgICAgNTggICAgICAgICAgICBhKCk7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBl
bnRyeUlmRWxzZUNoYWluOjU4OjE0CiAgICAgIDU0ICAgIAotICAgICA1NSAgICAgICAgaWYgKGZh
bHNlKQorICAgICA1NSAgICAgICAgaWYgKGZhbHNleSkKICAgICAgNTYgICAgICAgICAgICBhKCk7
Ci0gLT4gIDU3ICAgICAgICBlbHNlIGlmICh8ZmFsc2UpCisgLT4gIDU3ICAgICAgICBlbHNlIGlm
ICh8ZmFsc2V5KQogICAgICA1OCAgICAgICAgICAgIGEoKTsKICAgICAgNTkgICAgICAgIGVsc2UK
ICAgICAgNjAgICAgICAgICAgICBhKCk7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBl
bnRyeUlmRWxzZUNoYWluOjYxOjkKLSAgICAgNTcgICAgICAgIGVsc2UgaWYgKGZhbHNlKQorICAg
ICA1NyAgICAgICAgZWxzZSBpZiAoZmFsc2V5KQogICAgICA1OCAgICAgICAgICAgIGEoKTsKICAg
ICAgNTkgICAgICAgIGVsc2UKICAtPiAgNjAgICAgICAgICAgICB8YSgpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIFBBVVNFIEFUIGVudHJ5SWZXaXRoQ2FsbDo2ODoyCiAgLT4gIDY3ICAgIH18CiAgICAg
IDY4ICAgIAogICAgICA2OSAgICBmdW5jdGlvbiBlbnRyeVRlcm5hcnkoKSB7Ci0gICAgIDcwICAg
ICAgICBsZXQgdCA9ICgpID0+IHRydWU7CisgICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRy
dXRoeTsKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTM1MSwxNCArMzUxLDE0IEBAIFBB
VVNFIEFUIGVudHJ5SWZXaXRoQ2FsbDo2Njo5CiAgICAgIDY4ICAgIAogCiBBQ1RJT046IHN0ZXAt
aW4KLVBBVVNFIEFUIGE6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAg
ICAgIDYgICAgZnVuY3Rpb24gYSgpIHsKLSAtPiAgIDcgICAgICAgIHxyZXR1cm4gMTsKLSAgICAg
IDggICAgfQotICAgICAgOSAgICAKLSAgICAgMTAgICAgZnVuY3Rpb24gYigpIHsKK1BBVVNFIEFU
IGE6MTE6MTYKKyAgICAgIDcgICAgdmFyIHZhbHVlID0gMTsKKyAgICAgIDggICAgdmFyIHRydXRo
eSA9IHRydWU7CisgICAgICA5ICAgIHZhciBmYWxzZXkgPSBmYWxzZTsKKyAtPiAgMTAgICAgZnVu
Y3Rpb24gYSgpIHsgfHJldHVybiB2YWx1ZTsgfQorICAgICAxMSAgICBmdW5jdGlvbiBiKCkgeyBy
ZXR1cm4gdmFsdWU7IH0KKyAgICAgMTIgICAgCisgICAgIDEzICAgIAogCiBBQ1RJT046IHN0ZXAt
b3V0CiBQQVVTRSBBVCBlbnRyeUlmV2l0aENhbGw6NjY6MTYKQEAgLTM3MSwxNCArMzcxLDE0IEBA
IFBBVVNFIEFUIGVudHJ5SWZXaXRoQ2FsbDo2NjoxNgogICAgICA2OCAgICAKIAogQUNUSU9OOiBz
dGVwLWluCi1QQVVTRSBBVCBhOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+
Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGEoKSB7Ci0gLT4gICA3ICAgICAgICB8cmV0dXJuIDE7Ci0g
ICAgICA4ICAgIH0KLSAgICAgIDkgICAgCi0gICAgIDEwICAgIGZ1bmN0aW9uIGIoKSB7CitQQVVT
RSBBVCBhOjExOjE2CisgICAgICA3ICAgIHZhciB2YWx1ZSA9IDE7CisgICAgICA4ICAgIHZhciB0
cnV0aHkgPSB0cnVlOworICAgICAgOSAgICB2YXIgZmFsc2V5ID0gZmFsc2U7CisgLT4gIDEwICAg
IGZ1bmN0aW9uIGEoKSB7IHxyZXR1cm4gdmFsdWU7IH0KKyAgICAgMTEgICAgZnVuY3Rpb24gYigp
IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgIDEyICAgIAorICAgICAxMyAgICAKIAogQUNUSU9OOiBz
dGVwLW91dAogUEFVU0UgQVQgZW50cnlJZldpdGhDYWxsOjY3OjkKQEAgLTM5OCw3ICszOTgsNyBA
QCBQQVVTRSBBVCBlbnRyeUlmV2l0aENhbGw6Njg6MgogIC0+ICA2NyAgICB9fAogICAgICA2OCAg
ICAKICAgICAgNjkgICAgZnVuY3Rpb24gZW50cnlUZXJuYXJ5KCkgewotICAgICA3MCAgICAgICAg
bGV0IHQgPSAoKSA9PiB0cnVlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7
CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECkBAIC00MTAsOCArNDEwLDggQEAgU1RFUFM6IG92
ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVT
RSBBVCBlbnRyeVRlcm5hcnk6NzM6NQogICAgICA2OSAgICBmdW5jdGlvbiBlbnRyeVRlcm5hcnko
KSB7Ci0gICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAgIDcxICAgICAgICBs
ZXQgZiA9ICgpID0+IGZhbHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7
CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAtPiAgNzIgICAgICAgIHxk
ZWJ1Z2dlcjsKICAgICAgNzMgICAgICAgIGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogICAgICA3
NCAgICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00MTksOCArNDE5LDggQEAgUEFV
U0UgQVQgZW50cnlUZXJuYXJ5OjczOjUKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVu
dHJ5VGVybmFyeTo3NDo1Ci0gICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAg
IDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAo
KSA9PiB0cnV0aHk7CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAg
NzIgICAgICAgIGRlYnVnZ2VyOwogIC0+ICA3MyAgICAgICAgfGxldCB4ID0gdCgpID8gYSgpIDog
YigpOwogICAgICA3NCAgICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00MjksMTMg
KzQyOSwxMyBAQCBQQVVTRSBBVCBlbnRyeVRlcm5hcnk6NzQ6NQogCiBBQ1RJT046IHN0ZXAtb3Zl
cgogUEFVU0UgQVQgZW50cnlUZXJuYXJ5Ojc1OjUKLSAgICAgNzEgICAgICAgIGxldCBmID0gKCkg
PT4gZmFsc2U7CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAgNzIg
ICAgICAgIGRlYnVnZ2VyOwogICAgICA3MyAgICAgICAgbGV0IHggPSB0KCkgPyBhKCkgOiBiKCk7
CiAgLT4gIDc0ICAgICAgICB8bGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CiAgICAgIDc1ICAgIH0K
ICAgICAgNzYgICAgCi0gICAgIDc3ICAgIC8vIC0tLS0tLS0tLQorICAgICA3NyAgICBmdW5jdGlv
biBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBB
VCBlbnRyeVRlcm5hcnk6NzY6MgpAQCAtNDQ0LDggKzQ0NCw4IEBAIFBBVVNFIEFUIGVudHJ5VGVy
bmFyeTo3NjoyCiAgICAgIDc0ICAgICAgICBsZXQgeSA9IGYoKSA/IGEoKSA6IGIoKTsKICAtPiAg
NzUgICAgfXwKICAgICAgNzYgICAgCi0gICAgIDc3ICAgIC8vIC0tLS0tLS0tLQotICAgICA3OCAg
ICAKKyAgICAgNzcgICAgZnVuY3Rpb24gZW50cnlJZkNvbnN0YW50QnJhbmNoKCkgeworICAgICA3
OCAgICAgICAgZGVidWdnZXI7CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECkBAIC00NTcsOCAr
NDU3LDggQEAgU1RFUFM6IG92ZXIsIGluLCBvdXQsIGluLCBvdXQsIGluLCBvdXQsIGluLCBvdXQs
IHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCBlbnRyeVRlcm5h
cnk6NzM6NQogICAgICA2OSAgICBmdW5jdGlvbiBlbnRyeVRlcm5hcnkoKSB7Ci0gICAgIDcwICAg
ICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZh
bHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7CisgICAgIDcxICAgICAg
ICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAtPiAgNzIgICAgICAgIHxkZWJ1Z2dlcjsKICAgICAg
NzMgICAgICAgIGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogICAgICA3NCAgICAgICAgbGV0IHkg
PSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00NjYsOCArNDY2LDggQEAgUEFVU0UgQVQgZW50cnlUZXJu
YXJ5OjczOjUKIAogQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5VGVybmFyeTo3NDo1
Ci0gICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydWU7Ci0gICAgIDcxICAgICAgICBsZXQg
ZiA9ICgpID0+IGZhbHNlOworICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnV0aHk7Cisg
ICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAgNzIgICAgICAgIGRlYnVn
Z2VyOwogIC0+ICA3MyAgICAgICAgfGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogICAgICA3NCAg
ICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CkBAIC00NzksMTUgKzQ3OSwxNSBAQCBQQVVT
RSBBVCB0OjcxOjE5CiAgICAgIDY3ICAgIH0KICAgICAgNjggICAgCiAgICAgIDY5ICAgIGZ1bmN0
aW9uIGVudHJ5VGVybmFyeSgpIHsKLSAtPiAgNzAgICAgICAgIGxldCB0ID0gKCkgPT4gfHRydWU7
Ci0gICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNlOworIC0+ICA3MCAgICAgICAgbGV0
IHQgPSAoKSA9PiB8dHJ1dGh5OworICAgICA3MSAgICAgICAgbGV0IGYgPSAoKSA9PiBmYWxzZXk7
CiAgICAgIDcyICAgICAgICBkZWJ1Z2dlcjsKICAgICAgNzMgICAgICAgIGxldCB4ID0gdCgpID8g
YSgpIDogYigpOwogCiBBQ1RJT046IHN0ZXAtb3V0CiBQQVVTRSBBVCBlbnRyeVRlcm5hcnk6NzQ6
MTkKLSAgICAgNzAgICAgICAgIGxldCB0ID0gKCkgPT4gdHJ1ZTsKLSAgICAgNzEgICAgICAgIGxl
dCBmID0gKCkgPT4gZmFsc2U7CisgICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydXRoeTsK
KyAgICAgNzEgICAgICAgIGxldCBmID0gKCkgPT4gZmFsc2V5OwogICAgICA3MiAgICAgICAgZGVi
dWdnZXI7CiAgLT4gIDczICAgICAgICBsZXQgeCA9IHQoKSA/IHxhKCkgOiBiKCk7CiAgICAgIDc0
ICAgICAgICBsZXQgeSA9IGYoKSA/IGEoKSA6IGIoKTsKQEAgLTQ5NSw1MiArNDk1LDUyIEBAIFBB
VVNFIEFUIGVudHJ5VGVybmFyeTo3NDoxOQogICAgICA3NiAgICAKIAogQUNUSU9OOiBzdGVwLWlu
Ci1QQVVTRSBBVCBhOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2xv
Zy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAg
ICA2ICAgIGZ1bmN0aW9uIGEoKSB7Ci0gLT4gICA3ICAgICAgICB8cmV0dXJuIDE7Ci0gICAgICA4
ICAgIH0KLSAgICAgIDkgICAgCi0gICAgIDEwICAgIGZ1bmN0aW9uIGIoKSB7CitQQVVTRSBBVCBh
OjExOjE2CisgICAgICA3ICAgIHZhciB2YWx1ZSA9IDE7CisgICAgICA4ICAgIHZhciB0cnV0aHkg
PSB0cnVlOworICAgICAgOSAgICB2YXIgZmFsc2V5ID0gZmFsc2U7CisgLT4gIDEwICAgIGZ1bmN0
aW9uIGEoKSB7IHxyZXR1cm4gdmFsdWU7IH0KKyAgICAgMTEgICAgZnVuY3Rpb24gYigpIHsgcmV0
dXJuIHZhbHVlOyB9CisgICAgIDEyICAgIAorICAgICAxMyAgICAKIAogQUNUSU9OOiBzdGVwLW91
dAogUEFVU0UgQVQgZW50cnlUZXJuYXJ5Ojc1OjUKLSAgICAgNzEgICAgICAgIGxldCBmID0gKCkg
PT4gZmFsc2U7CisgICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZhbHNleTsKICAgICAgNzIg
ICAgICAgIGRlYnVnZ2VyOwogICAgICA3MyAgICAgICAgbGV0IHggPSB0KCkgPyBhKCkgOiBiKCk7
CiAgLT4gIDc0ICAgICAgICB8bGV0IHkgPSBmKCkgPyBhKCkgOiBiKCk7CiAgICAgIDc1ICAgIH0K
ICAgICAgNzYgICAgCi0gICAgIDc3ICAgIC8vIC0tLS0tLS0tLQorICAgICA3NyAgICBmdW5jdGlv
biBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CiAKIEFDVElPTjogc3RlcC1pbgogUEFVU0UgQVQg
Zjo3MjoxOQogICAgICA2OCAgICAKICAgICAgNjkgICAgZnVuY3Rpb24gZW50cnlUZXJuYXJ5KCkg
ewotICAgICA3MCAgICAgICAgbGV0IHQgPSAoKSA9PiB0cnVlOwotIC0+ICA3MSAgICAgICAgbGV0
IGYgPSAoKSA9PiB8ZmFsc2U7CisgICAgIDcwICAgICAgICBsZXQgdCA9ICgpID0+IHRydXRoeTsK
KyAtPiAgNzEgICAgICAgIGxldCBmID0gKCkgPT4gfGZhbHNleTsKICAgICAgNzIgICAgICAgIGRl
YnVnZ2VyOwogICAgICA3MyAgICAgICAgbGV0IHggPSB0KCkgPyBhKCkgOiBiKCk7CiAgICAgIDc0
ICAgICAgICBsZXQgeSA9IGYoKSA/IGEoKSA6IGIoKTsKIAogQUNUSU9OOiBzdGVwLW91dAogUEFV
U0UgQVQgZW50cnlUZXJuYXJ5Ojc1OjI1Ci0gICAgIDcxICAgICAgICBsZXQgZiA9ICgpID0+IGZh
bHNlOworICAgICA3MSAgICAgICAgbGV0IGYgPSAoKSA9PiBmYWxzZXk7CiAgICAgIDcyICAgICAg
ICBkZWJ1Z2dlcjsKICAgICAgNzMgICAgICAgIGxldCB4ID0gdCgpID8gYSgpIDogYigpOwogIC0+
ICA3NCAgICAgICAgbGV0IHkgPSBmKCkgPyBhKCkgOiB8YigpOwogICAgICA3NSAgICB9CiAgICAg
IDc2ICAgIAotICAgICA3NyAgICAvLyAtLS0tLS0tLS0KKyAgICAgNzcgICAgZnVuY3Rpb24gZW50
cnlJZkNvbnN0YW50QnJhbmNoKCkgewogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGI6MTI6
NQotICAgICAgOCAgICB9Ci0gICAgICA5ICAgIAotICAgICAxMCAgICBmdW5jdGlvbiBiKCkgewot
IC0+ICAxMSAgICAgICAgfHJldHVybiAyOwotICAgICAxMiAgICB9CitQQVVTRSBBVCBiOjEyOjE2
CisgICAgICA4ICAgIHZhciB0cnV0aHkgPSB0cnVlOworICAgICAgOSAgICB2YXIgZmFsc2V5ID0g
ZmFsc2U7CisgICAgIDEwICAgIGZ1bmN0aW9uIGEoKSB7IHJldHVybiB2YWx1ZTsgfQorIC0+ICAx
MSAgICBmdW5jdGlvbiBiKCkgeyB8cmV0dXJuIHZhbHVlOyB9CisgICAgIDEyICAgIAogICAgICAx
MyAgICAKICAgICAgMTQgICAgZnVuY3Rpb24gZW50cnlJZlNpbmdsZVN0YXRlbWVudCgpIHsKIApA
QCAtNTUxLDggKzU1MSwyNzYgQEAgUEFVU0UgQVQgZW50cnlUZXJuYXJ5Ojc2OjIKICAgICAgNzQg
ICAgICAgIGxldCB5ID0gZigpID8gYSgpIDogYigpOwogIC0+ICA3NSAgICB9fAogICAgICA3NiAg
ICAKLSAgICAgNzcgICAgLy8gLS0tLS0tLS0tCi0gICAgIDc4ICAgIAorICAgICA3NyAgICBmdW5j
dGlvbiBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CisgICAgIDc4ICAgICAgICBkZWJ1Z2dlcjsK
KworQUNUSU9OOiByZXN1bWUKK1JFU1VNRUQKK1BBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0
ZXBzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc3RlcHBpbmcuQ29uc3RhbnRC
cmFuY2gKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJZkNvbnN0YW50QnJhbmNoKQorU1RF
UFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQorUEFVU0VEIChk
ZWJ1Z2dlci1zdGF0ZW1lbnQpCitQQVVTRSBBVCBlbnRyeUlmQ29uc3RhbnRCcmFuY2g6Nzk6NQor
ICAgICA3NSAgICB9CisgICAgIDc2ICAgIAorICAgICA3NyAgICBmdW5jdGlvbiBlbnRyeUlmQ29u
c3RhbnRCcmFuY2goKSB7CisgLT4gIDc4ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDc5ICAgICAg
ICBpZiAodHJ1ZSkKKyAgICAgODAgICAgICAgICAgICBhKCk7CisgICAgIDgxICAgICAgICBpZiAo
ZmFsc2UpCisKK0FDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmQ29uc3RhbnRCcmFu
Y2g6ODA6OQorICAgICA3NiAgICAKKyAgICAgNzcgICAgZnVuY3Rpb24gZW50cnlJZkNvbnN0YW50
QnJhbmNoKCkgeworICAgICA3OCAgICAgICAgZGVidWdnZXI7CisgLT4gIDc5ICAgICAgICBpZiAo
fHRydWUpCisgICAgIDgwICAgICAgICAgICAgYSgpOworICAgICA4MSAgICAgICAgaWYgKGZhbHNl
KQorICAgICA4MiAgICAgICAgICAgIGEoKTsKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFU
IGVudHJ5SWZDb25zdGFudEJyYW5jaDo4MTo5CisgICAgIDc3ICAgIGZ1bmN0aW9uIGVudHJ5SWZD
b25zdGFudEJyYW5jaCgpIHsKKyAgICAgNzggICAgICAgIGRlYnVnZ2VyOworICAgICA3OSAgICAg
ICAgaWYgKHRydWUpCisgLT4gIDgwICAgICAgICAgICAgfGEoKTsKKyAgICAgODEgICAgICAgIGlm
IChmYWxzZSkKKyAgICAgODIgICAgICAgICAgICBhKCk7CisgICAgIDgzICAgICAgICBpZiAoMCkK
KworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZDb25zdGFudEJyYW5jaDo4Mjo5
CisgICAgIDc4ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgNzkgICAgICAgIGlmICh0cnVlKQorICAg
ICA4MCAgICAgICAgICAgIGEoKTsKKyAtPiAgODEgICAgICAgIGlmICh8ZmFsc2UpCisgICAgIDgy
ICAgICAgICAgICAgYSgpOworICAgICA4MyAgICAgICAgaWYgKDApCisgICAgIDg0ICAgICAgICAg
ICAgYSgpOworCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlJZkNvbnN0YW50QnJh
bmNoOjg0OjkKKyAgICAgODAgICAgICAgICAgICBhKCk7CisgICAgIDgxICAgICAgICBpZiAoZmFs
c2UpCisgICAgIDgyICAgICAgICAgICAgYSgpOworIC0+ICA4MyAgICAgICAgaWYgKHwwKQorICAg
ICA4NCAgICAgICAgICAgIGEoKTsKKyAgICAgODUgICAgICAgIGlmIChudWxsKQorICAgICA4NiAg
ICAgICAgICAgIGEoKTsKKworQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZDb25z
dGFudEJyYW5jaDo4Njo5CisgICAgIDgyICAgICAgICAgICAgYSgpOworICAgICA4MyAgICAgICAg
aWYgKDApCisgICAgIDg0ICAgICAgICAgICAgYSgpOworIC0+ICA4NSAgICAgICAgaWYgKHxudWxs
KQorICAgICA4NiAgICAgICAgICAgIGEoKTsKKyAgICAgODcgICAgfQorICAgICA4OCAgICAKKwor
QUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZDb25zdGFudEJyYW5jaDo4ODoyCisg
ICAgIDg0ICAgICAgICAgICAgYSgpOworICAgICA4NSAgICAgICAgaWYgKG51bGwpCisgICAgIDg2
ICAgICAgICAgICAgYSgpOworIC0+ICA4NyAgICB9fAorICAgICA4OCAgICAKKyAgICAgODkgICAg
ZnVuY3Rpb24gZW50cnlJZldpdGhMb2dpY2FsT3BlcmF0aW9uKCkgeworICAgICA5MCAgICAgICAg
ZGVidWdnZXI7CisKK0FDVElPTjogcmVzdW1lCitSRVNVTUVECitQQVNTOiBTaG91bGQgaGF2ZSB1
c2VkIGFsbCBzdGVwcy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5n
LklmV2l0aExvZ2ljYWxPcGVyYXRpb24KK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJZldp
dGhMb2dpY2FsT3BlcmF0aW9uKQorU1RFUFM6IG92ZXIsIGluLCBvdXQsIGluLCBvdXQsIG92ZXIs
IHJlc3VtZQorUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCitQQVVTRSBBVCBlbnRyeUlmV2l0
aExvZ2ljYWxPcGVyYXRpb246OTE6NQorICAgICA4NyAgICB9CisgICAgIDg4ICAgIAorICAgICA4
OSAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb24oKSB7CisgLT4gIDkwICAg
ICAgICB8ZGVidWdnZXI7CisgICAgIDkxICAgICAgICBpZiAodHJ1ZSAmJiBhKCkgJiYgYSgpKQor
ICAgICA5MiAgICAgICAgICAgIGIoKTsKKyAgICAgOTMgICAgfQorCitBQ1RJT046IHN0ZXAtb3Zl
cgorUEFVU0UgQVQgZW50cnlJZldpdGhMb2dpY2FsT3BlcmF0aW9uOjkyOjkKKyAgICAgODggICAg
CisgICAgIDg5ICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoTG9naWNhbE9wZXJhdGlvbigpIHsKKyAg
ICAgOTAgICAgICAgIGRlYnVnZ2VyOworIC0+ICA5MSAgICAgICAgaWYgKHx0cnVlICYmIGEoKSAm
JiBhKCkpCisgICAgIDkyICAgICAgICAgICAgYigpOworICAgICA5MyAgICB9CisgICAgIDk0ICAg
IAorCitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGE6MTE6MTYKKyAgICAgIDcgICAgdmFyIHZh
bHVlID0gMTsKKyAgICAgIDggICAgdmFyIHRydXRoeSA9IHRydWU7CisgICAgICA5ICAgIHZhciBm
YWxzZXkgPSBmYWxzZTsKKyAtPiAgMTAgICAgZnVuY3Rpb24gYSgpIHsgfHJldHVybiB2YWx1ZTsg
fQorICAgICAxMSAgICBmdW5jdGlvbiBiKCkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICAgMTIgICAg
CisgICAgIDEzICAgIAorCitBQ1RJT046IHN0ZXAtb3V0CitQQVVTRSBBVCBlbnRyeUlmV2l0aExv
Z2ljYWxPcGVyYXRpb246OTI6MjQKKyAgICAgODggICAgCisgICAgIDg5ICAgIGZ1bmN0aW9uIGVu
dHJ5SWZXaXRoTG9naWNhbE9wZXJhdGlvbigpIHsKKyAgICAgOTAgICAgICAgIGRlYnVnZ2VyOwor
IC0+ICA5MSAgICAgICAgaWYgKHRydWUgJiYgYSgpICYmIHxhKCkpCisgICAgIDkyICAgICAgICAg
ICAgYigpOworICAgICA5MyAgICB9CisgICAgIDk0ICAgIAorCitBQ1RJT046IHN0ZXAtaW4KK1BB
VVNFIEFUIGE6MTE6MTYKKyAgICAgIDcgICAgdmFyIHZhbHVlID0gMTsKKyAgICAgIDggICAgdmFy
IHRydXRoeSA9IHRydWU7CisgICAgICA5ICAgIHZhciBmYWxzZXkgPSBmYWxzZTsKKyAtPiAgMTAg
ICAgZnVuY3Rpb24gYSgpIHsgfHJldHVybiB2YWx1ZTsgfQorICAgICAxMSAgICBmdW5jdGlvbiBi
KCkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICAgMTIgICAgCisgICAgIDEzICAgIAorCitBQ1RJT046
IHN0ZXAtb3V0CitQQVVTRSBBVCBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb246OTM6OQorICAg
ICA4OSAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb24oKSB7CisgICAgIDkw
ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgOTEgICAgICAgIGlmICh0cnVlICYmIGEoKSAmJiBhKCkp
CisgLT4gIDkyICAgICAgICAgICAgfGIoKTsKKyAgICAgOTMgICAgfQorICAgICA5NCAgICAKKyAg
ICAgOTUgICAgZnVuY3Rpb24gZW50cnlJZldpdGhCaW5hcnlPcGVyYXRpb24oKSB7CisKK0FDVElP
Tjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aExvZ2ljYWxPcGVyYXRpb246OTQ6Mgor
ICAgICA5MCAgICAgICAgZGVidWdnZXI7CisgICAgIDkxICAgICAgICBpZiAodHJ1ZSAmJiBhKCkg
JiYgYSgpKQorICAgICA5MiAgICAgICAgICAgIGIoKTsKKyAtPiAgOTMgICAgfXwKKyAgICAgOTQg
ICAgCisgICAgIDk1ICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKCkgewor
ICAgICA5NiAgICAgICAgbGV0IGkgPSBhKCk7CisKK0FDVElPTjogcmVzdW1lCitSRVNVTUVECitQ
QVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERlYnVnZ2VyLnN0ZXBwaW5nLklmV2l0aEJpbmFyeU9wZXJhdGlvbgorRVhQUkVTU0lPTjogc2V0
VGltZW91dChlbnRyeUlmV2l0aEJpbmFyeU9wZXJhdGlvbikKK1NURVBTOiBvdmVyLCBpbiwgb3Zl
ciwgcmVzdW1lCitQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKK1BBVVNFIEFUIGVudHJ5SWZX
aXRoQmluYXJ5T3BlcmF0aW9uOjk4OjUKKyAgICAgOTQgICAgCisgICAgIDk1ICAgIGZ1bmN0aW9u
IGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKCkgeworICAgICA5NiAgICAgICAgbGV0IGkgPSBh
KCk7CisgLT4gIDk3ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDk4ICAgICAgICBpZiAoaSA8IDIp
CisgICAgIDk5ICAgICAgICAgICAgYigpOworICAgIDEwMCAgICB9CisKK0FDVElPTjogc3RlcC1v
dmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aEJpbmFyeU9wZXJhdGlvbjo5OTo5CisgICAgIDk1ICAg
IGZ1bmN0aW9uIGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKCkgeworICAgICA5NiAgICAgICAg
bGV0IGkgPSBhKCk7CisgICAgIDk3ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgOTggICAgICAgIGlm
ICh8aSA8IDIpCisgICAgIDk5ICAgICAgICAgICAgYigpOworICAgIDEwMCAgICB9CisgICAgMTAx
ICAgIAorCitBQ1RJT046IHN0ZXAtaW4KK1BBVVNFIEFUIGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0
aW9uOjEwMDo5CisgICAgIDk2ICAgICAgICBsZXQgaSA9IGEoKTsKKyAgICAgOTcgICAgICAgIGRl
YnVnZ2VyOworICAgICA5OCAgICAgICAgaWYgKGkgPCAyKQorIC0+ICA5OSAgICAgICAgICAgIHxi
KCk7CisgICAgMTAwICAgIH0KKyAgICAxMDEgICAgCisgICAgMTAyICAgIGZ1bmN0aW9uIGVudHJ5
SWZXaXRoTm90T3BlcmF0aW9uKCkgeworCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50
cnlJZldpdGhCaW5hcnlPcGVyYXRpb246MTAxOjIKKyAgICAgOTcgICAgICAgIGRlYnVnZ2VyOwor
ICAgICA5OCAgICAgICAgaWYgKGkgPCAyKQorICAgICA5OSAgICAgICAgICAgIGIoKTsKKyAtPiAx
MDAgICAgfXwKKyAgICAxMDEgICAgCisgICAgMTAyICAgIGZ1bmN0aW9uIGVudHJ5SWZXaXRoTm90
T3BlcmF0aW9uKCkgeworICAgIDEwMyAgICAgICAgZGVidWdnZXI7CisKK0FDVElPTjogcmVzdW1l
CitSRVNVTUVECitQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnN0ZXBwaW5nLklmV2l0aE5vdE9wZXJhdGlvbgorRVhQUkVT
U0lPTjogc2V0VGltZW91dChlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbikKK1NURVBTOiBvdmVyLCBp
biwgb3ZlciwgaW4sIG92ZXIsIHJlc3VtZQorUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCitQ
QVVTRSBBVCBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbjoxMDQ6NQorICAgIDEwMCAgICB9CisgICAg
MTAxICAgIAorICAgIDEwMiAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbigpIHsK
KyAtPiAxMDMgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAxMDQgICAgICAgIGlmICghZmFsc2UpCisg
ICAgMTA1ICAgICAgICAgICAgYSgpOworICAgIDEwNiAgICAgICAgaWYgKCEhdHJ1ZSkKKworQUNU
SU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5SWZXaXRoTm90T3BlcmF0aW9uOjEwNTo5Cisg
ICAgMTAxICAgIAorICAgIDEwMiAgICBmdW5jdGlvbiBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbigp
IHsKKyAgICAxMDMgICAgICAgIGRlYnVnZ2VyOworIC0+IDEwNCAgICAgICAgaWYgKHwhZmFsc2Up
CisgICAgMTA1ICAgICAgICAgICAgYSgpOworICAgIDEwNiAgICAgICAgaWYgKCEhdHJ1ZSkKKyAg
ICAxMDcgICAgICAgICAgICBhKCk7CisKK0FDVElPTjogc3RlcC1pbgorUEFVU0UgQVQgZW50cnlJ
ZldpdGhOb3RPcGVyYXRpb246MTA2OjkKKyAgICAxMDIgICAgZnVuY3Rpb24gZW50cnlJZldpdGhO
b3RPcGVyYXRpb24oKSB7CisgICAgMTAzICAgICAgICBkZWJ1Z2dlcjsKKyAgICAxMDQgICAgICAg
IGlmICghZmFsc2UpCisgLT4gMTA1ICAgICAgICAgICAgfGEoKTsKKyAgICAxMDYgICAgICAgIGlm
ICghIXRydWUpCisgICAgMTA3ICAgICAgICAgICAgYSgpOworICAgIDEwOCAgICB9CisKK0FDVElP
Tjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbjoxMDc6OQorICAg
IDEwMyAgICAgICAgZGVidWdnZXI7CisgICAgMTA0ICAgICAgICBpZiAoIWZhbHNlKQorICAgIDEw
NSAgICAgICAgICAgIGEoKTsKKyAtPiAxMDYgICAgICAgIGlmICh8ISF0cnVlKQorICAgIDEwNyAg
ICAgICAgICAgIGEoKTsKKyAgICAxMDggICAgfQorICAgIDEwOSAgICAKKworQUNUSU9OOiBzdGVw
LWluCitQQVVTRSBBVCBlbnRyeUlmV2l0aE5vdE9wZXJhdGlvbjoxMDg6OQorICAgIDEwNCAgICAg
ICAgaWYgKCFmYWxzZSkKKyAgICAxMDUgICAgICAgICAgICBhKCk7CisgICAgMTA2ICAgICAgICBp
ZiAoISF0cnVlKQorIC0+IDEwNyAgICAgICAgICAgIHxhKCk7CisgICAgMTA4ICAgIH0KKyAgICAx
MDkgICAgCisgICAgMTEwICAgIC8vIC0tLS0tLS0tLQorCitBQ1RJT046IHN0ZXAtb3ZlcgorUEFV
U0UgQVQgZW50cnlJZldpdGhOb3RPcGVyYXRpb246MTA5OjIKKyAgICAxMDUgICAgICAgICAgICBh
KCk7CisgICAgMTA2ICAgICAgICBpZiAoISF0cnVlKQorICAgIDEwNyAgICAgICAgICAgIGEoKTsK
KyAtPiAxMDggICAgfXwKKyAgICAxMDkgICAgCisgICAgMTEwICAgIC8vIC0tLS0tLS0tLQorICAg
IDExMSAgICAKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250cm9sLWZsb3cuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1jb250
cm9sLWZsb3cuaHRtbAppbmRleCAyNGRhMmJmLi5mZjA3NjJlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctY29udHJvbC1mbG93Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5n
LWNvbnRyb2wtZmxvdy5odG1sCkBAIC00LDI5ICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBhKCkgewotICAgIHJldHVybiAxOwotfQorLy8g
V2UgbWF5IHdhbnQgdG8gYWxsb3cgY29uc3RhbnRzIHRvIGVsaW1pbmF0ZSBicmFuY2hlcy4gVXNl
IHZhcnMgZm9yIGV4aXN0aW5nIHRlc3RzIGFuZCBoYXZlIGNvbnN0YW50IHNwZWNpZmljIHRlc3Rz
LgordmFyIHZhbHVlID0gMTsKK3ZhciB0cnV0aHkgPSB0cnVlOwordmFyIGZhbHNleSA9IGZhbHNl
OworZnVuY3Rpb24gYSgpIHsgcmV0dXJuIHZhbHVlOyB9CitmdW5jdGlvbiBiKCkgeyByZXR1cm4g
dmFsdWU7IH0KIAotZnVuY3Rpb24gYigpIHsKLSAgICByZXR1cm4gMjsKLX0KIAogZnVuY3Rpb24g
ZW50cnlJZlNpbmdsZVN0YXRlbWVudCgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBpZiAodHJ1ZSkK
KyAgICBpZiAodHJ1dGh5KQogICAgICAgICBhKCk7Ci0gICAgaWYgKGZhbHNlKQorICAgIGlmIChm
YWxzZXkpCiAgICAgICAgIGEoKTsKIH0KIAogZnVuY3Rpb24gZW50cnlJZk11bHRpU3RhdGVtZW50
KCkgewogICAgIGRlYnVnZ2VyOwotICAgIGlmICh0cnVlKSB7CisgICAgaWYgKHRydXRoeSkgewog
ICAgICAgICBhKCk7CiAgICAgICAgIGEoKTsKICAgICB9Ci0gICAgaWYgKGZhbHNlKSB7CisgICAg
aWYgKGZhbHNleSkgewogICAgICAgICBhKCk7CiAgICAgICAgIGEoKTsKICAgICB9CkBAIC0zNCwx
MSArMzQsMTEgQEAgZnVuY3Rpb24gZW50cnlJZk11bHRpU3RhdGVtZW50KCkgewogCiBmdW5jdGlv
biBlbnRyeUlmRWxzZSgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBpZiAodHJ1ZSkKKyAgICBpZiAo
dHJ1dGh5KQogICAgICAgICBhKCk7CiAgICAgZWxzZQogICAgICAgICBhKCk7Ci0gICAgaWYgKGZh
bHNlKQorICAgIGlmIChmYWxzZXkpCiAgICAgICAgIGEoKTsKICAgICBlbHNlCiAgICAgICAgIGEo
KTsKQEAgLTQ2LDE2ICs0NiwxNiBAQCBmdW5jdGlvbiBlbnRyeUlmRWxzZSgpIHsKIAogZnVuY3Rp
b24gZW50cnlJZkVsc2VDaGFpbigpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBpZiAoZmFsc2UpCisg
ICAgaWYgKGZhbHNleSkKICAgICAgICAgYSgpOwotICAgIGVsc2UgaWYgKHRydWUpCisgICAgZWxz
ZSBpZiAodHJ1dGh5KQogICAgICAgICBhKCk7CiAgICAgZWxzZQogICAgICAgICBhKCk7CiAKLSAg
ICBpZiAoZmFsc2UpCisgICAgaWYgKGZhbHNleSkKICAgICAgICAgYSgpOwotICAgIGVsc2UgaWYg
KGZhbHNlKQorICAgIGVsc2UgaWYgKGZhbHNleSkKICAgICAgICAgYSgpOwogICAgIGVsc2UKICAg
ICAgICAgYSgpOwpAQCAtNjgsMTMgKzY4LDQ2IEBAIGZ1bmN0aW9uIGVudHJ5SWZXaXRoQ2FsbCgp
IHsKIH0KIAogZnVuY3Rpb24gZW50cnlUZXJuYXJ5KCkgewotICAgIGxldCB0ID0gKCkgPT4gdHJ1
ZTsKLSAgICBsZXQgZiA9ICgpID0+IGZhbHNlOworICAgIGxldCB0ID0gKCkgPT4gdHJ1dGh5Owor
ICAgIGxldCBmID0gKCkgPT4gZmFsc2V5OwogICAgIGRlYnVnZ2VyOwogICAgIGxldCB4ID0gdCgp
ID8gYSgpIDogYigpOwogICAgIGxldCB5ID0gZigpID8gYSgpIDogYigpOwogfQogCitmdW5jdGlv
biBlbnRyeUlmQ29uc3RhbnRCcmFuY2goKSB7CisgICAgZGVidWdnZXI7CisgICAgaWYgKHRydWUp
CisgICAgICAgIGEoKTsKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIGEoKTsKKyAgICBpZiAoMCkK
KyAgICAgICAgYSgpOworICAgIGlmIChudWxsKQorICAgICAgICBhKCk7Cit9CisKK2Z1bmN0aW9u
IGVudHJ5SWZXaXRoTG9naWNhbE9wZXJhdGlvbigpIHsKKyAgICBkZWJ1Z2dlcjsKKyAgICBpZiAo
dHJ1ZSAmJiBhKCkgJiYgYSgpKQorICAgICAgICBiKCk7Cit9CisKK2Z1bmN0aW9uIGVudHJ5SWZX
aXRoQmluYXJ5T3BlcmF0aW9uKCkgeworICAgIGxldCBpID0gYSgpOworICAgIGRlYnVnZ2VyOwor
ICAgIGlmIChpIDwgMikKKyAgICAgICAgYigpOworfQorCitmdW5jdGlvbiBlbnRyeUlmV2l0aE5v
dE9wZXJhdGlvbigpIHsKKyAgICBkZWJ1Z2dlcjsKKyAgICBpZiAoIWZhbHNlKQorICAgICAgICBh
KCk7CisgICAgaWYgKCEhdHJ1ZSkKKyAgICAgICAgYSgpOworfQorCiAvLyAtLS0tLS0tLS0KIAog
ZnVuY3Rpb24gdGVzdCgpCkBAIC0xOTcsNiArMjMwLDYyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICBdCiAgICAgfSk7CiAKKyAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIkRlYnVnZ2VyLnN0ZXBwaW5nLkNvbnN0YW50QnJhbmNoIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgcGF1c2UgZm9yIGNvbnN0YW50IGJyYW5jaGVzLiIsCisgICAgICAgIGV4cHJl
c3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SWZDb25zdGFudEJyYW5jaCkiLAorICAgICAgICBzdGVw
czogWworICAgICAgICAgICAgIm92ZXIiLAorICAgICAgICAgICAgICAgICJvdmVyIiwgLy8gKHRy
dWUpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBhKCkKKyAgICAgICAgICAgICAgICAib3Zl
ciIsIC8vIChmYWxzZSkKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vICgwKQorICAgICAgICAg
ICAgICAgICJvdmVyIiwgLy8gKG51bGwpCisgICAgICAgICAgICAicmVzdW1lIiwKKyAgICAgICAg
XQorICAgIH0pOworCisgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJE
ZWJ1Z2dlci5zdGVwcGluZy5JZldpdGhMb2dpY2FsT3BlcmF0aW9uIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJTaG91bGQgYWx3YXlzIHBhdXNlIGZvciBhIGNvbmRpdGlvbiB3aXRoIGxvZ2ljYWwg
b3BlcmF0aW9ucy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUlmV2l0
aExvZ2ljYWxPcGVyYXRpb24pIiwKKyAgICAgICAgc3RlcHM6IFsKKyAgICAgICAgICAgICJvdmVy
IiwKKyAgICAgICAgICAgICAgICAiaW4iLCAgIC8vIGludG8gYSgpCisgICAgICAgICAgICAgICAg
Im91dCIsICAvLyBvdXQgb2YgYSgpIC0gYmVmb3JlIGEoKQorICAgICAgICAgICAgICAgICJpbiIs
ICAgLy8gaW50byBhKCkKKyAgICAgICAgICAgICAgICAib3V0IiwgIC8vIG91dCBvZiBhKCkgLSBi
ZWZvcmUgYigpCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBiKCkgLSBsZWF2aW5nIGVudHJ5
CisgICAgICAgICAgICAicmVzdW1lIiwKKyAgICAgICAgXQorICAgIH0pOworCisgICAgYWRkU3Rl
cHBpbmdUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zdGVwcGluZy5JZldpdGhC
aW5hcnlPcGVyYXRpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBhbHdheXMgcGF1
c2UgZm9yIGEgY29uZGl0aW9uIHdpdGggbG9naWNhbCBvcGVyYXRpb25zLiIsCisgICAgICAgIGV4
cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SWZXaXRoQmluYXJ5T3BlcmF0aW9uKSIsCisgICAg
ICAgIHN0ZXBzOiBbCisgICAgICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAgICAgImluIiwg
ICAgLy8gaSA8IDIgW3RydWVdCisgICAgICAgICAgICAgICAgIm92ZXIiLCAgLy8gb3ZlciBiKCkg
LSBsZWF2aW5nIGVudHJ5CisgICAgICAgICAgICAicmVzdW1lIiwKKyAgICAgICAgXQorICAgIH0p
OworCisgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5z
dGVwcGluZy5JZldpdGhOb3RPcGVyYXRpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3Vs
ZCBhbHdheXMgcGF1c2UgZm9yIGEgY29uZGl0aW9uIHRoYXQgaXMgYSBub3Qgb3BlcmF0aW9uLiIs
CisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SWZXaXRoTm90T3BlcmF0aW9u
KSIsCisgICAgICAgIHN0ZXBzOiBbCisgICAgICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAg
ICAgImluIiwgICAvLyAhZmFsc2UKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGEoKQorICAg
ICAgICAgICAgICAgICJpbiIsICAgLy8gISF0cnV0aAorICAgICAgICAgICAgICAgICJvdmVyIiwg
Ly8gYSgpIC0gbGVhdmluZyBlbnRyeQorICAgICAgICAgICAgInJlc3VtZSIsCisgICAgICAgIF0K
KyAgICB9KTsKKwogICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKICAgICAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLWxvb3BzLWV4cGVjdGVkLnR4dAppbmRleCBiMTE2Mjk1Li5hYjAyOTdlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctbG9vcHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy1sb29wcy1leHBlY3RlZC50eHQKQEAgLTE0OCw3ICsxNDgsNyBAQCBQQVNTOiBT
aG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVn
Z2VyLnN0ZXBwaW5nLlRyYWRpdGlvbmFsRm9yU3RlcE92ZXIKIEVYUFJFU1NJT046IHNldFRpbWVv
dXQoZW50cnlUcmFkaXRpb25hbEZvcikKLVNURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBv
dmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKK1NURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBv
dmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1bWUKIFBBVVNFRCAoZGVidWdn
ZXItc3RhdGVtZW50KQogUEFVU0UgQVQgZW50cnlUcmFkaXRpb25hbEZvcjoyNzo1CiAgICAgIDIz
ICAgIH0KQEAgLTE3MCw2ICsxNzAsMTYgQEAgUEFVU0UgQVQgZW50cnlUcmFkaXRpb25hbEZvcjoy
ODoxMAogICAgICAzMCAgICAKIAogQUNUSU9OOiBzdGVwLW92ZXIKK1BBVVNFIEFUIGVudHJ5VHJh
ZGl0aW9uYWxGb3I6Mjg6MjEKKyAgICAgMjQgICAgCisgICAgIDI1ICAgIGZ1bmN0aW9uIGVudHJ5
VHJhZGl0aW9uYWxGb3IoKSB7CisgICAgIDI2ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjcgICAg
ICAgIGZvciAobGV0IGkgPSAwOyB8aSA8IDI7ICsraSkKKyAgICAgMjggICAgICAgICAgICBhKCk7
CisgICAgIDI5ICAgIH0KKyAgICAgMzAgICAgCisKK0FDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBB
VCBlbnRyeVRyYWRpdGlvbmFsRm9yOjI5OjkKICAgICAgMjUgICAgZnVuY3Rpb24gZW50cnlUcmFk
aXRpb25hbEZvcigpIHsKICAgICAgMjYgICAgICAgIGRlYnVnZ2VyOwpAQCAtNDQ5LDcgKzQ1OSw3
IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRGVidWdnZXIuc3RlcHBpbmcuRm9ySW4KIEVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50
cnlGb3JJbikKLVNURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1
bWUKK1NURVBTOiBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCBvdmVyLCByZXN1
bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQogUEFVU0UgQVQgZW50cnlGb3JJbjo0MTo1
CiAgICAgIDM3ICAgIApAQCAtNDcxLDYgKzQ4MSwxNiBAQCBQQVVTRSBBVCBlbnRyeUZvckluOjQy
OjI2CiAgICAgIDQ0ICAgIAogCiBBQ1RJT046IHN0ZXAtb3ZlcgorUEFVU0UgQVQgZW50cnlGb3JJ
bjo0MjoxMAorICAgICAzOCAgICBmdW5jdGlvbiBlbnRyeUZvckluKCkgeworICAgICAzOSAgICAg
ICAgbGV0IG8gPSB7a2V5MTogMSwga2V5MjogMn07CisgICAgIDQwICAgICAgICBkZWJ1Z2dlcjsK
KyAtPiAgNDEgICAgICAgIGZvciAofGxldCBwcm9wZXJ0eSBpbiBvKQorICAgICA0MiAgICAgICAg
ICAgIGEoKTsKKyAgICAgNDMgICAgfQorICAgICA0NCAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIK
IFBBVVNFIEFUIGVudHJ5Rm9ySW46NDM6OQogICAgICAzOSAgICAgICAgbGV0IG8gPSB7a2V5MTog
MSwga2V5MjogMn07CiAgICAgIDQwICAgICAgICBkZWJ1Z2dlcjsKQEAgLTQ4MSwxMSArNTAxLDEx
IEBAIFBBVVNFIEFUIGVudHJ5Rm9ySW46NDM6OQogICAgICA0NSAgICBmdW5jdGlvbiBlbnRyeUZv
ck9mKCkgewogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlGb3JJbjo0MjoyNgor
UEFVU0UgQVQgZW50cnlGb3JJbjo0MjoxMAogICAgICAzOCAgICBmdW5jdGlvbiBlbnRyeUZvcklu
KCkgewogICAgICAzOSAgICAgICAgbGV0IG8gPSB7a2V5MTogMSwga2V5MjogMn07CiAgICAgIDQw
ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgNDEgICAgICAgIGZvciAobGV0IHByb3BlcnR5IGluIHxv
KQorIC0+ICA0MSAgICAgICAgZm9yICh8bGV0IHByb3BlcnR5IGluIG8pCiAgICAgIDQyICAgICAg
ICAgICAgYSgpOwogICAgICA0MyAgICB9CiAgICAgIDQ0ICAgIApAQCAtNTAxLDExICs1MjEsMTEg
QEAgUEFVU0UgQVQgZW50cnlGb3JJbjo0Mzo5CiAgICAgIDQ1ICAgIGZ1bmN0aW9uIGVudHJ5Rm9y
T2YoKSB7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUZvckluOjQyOjI2CitQ
QVVTRSBBVCBlbnRyeUZvckluOjQyOjEwCiAgICAgIDM4ICAgIGZ1bmN0aW9uIGVudHJ5Rm9ySW4o
KSB7CiAgICAgIDM5ICAgICAgICBsZXQgbyA9IHtrZXkxOiAxLCBrZXkyOiAyfTsKICAgICAgNDAg
ICAgICAgIGRlYnVnZ2VyOwotIC0+ICA0MSAgICAgICAgZm9yIChsZXQgcHJvcGVydHkgaW4gfG8p
CisgLT4gIDQxICAgICAgICBmb3IgKHxsZXQgcHJvcGVydHkgaW4gbykKICAgICAgNDIgICAgICAg
ICAgICBhKCk7CiAgICAgIDQzICAgIH0KICAgICAgNDQgICAgCkBAIC01MjYsNyArNTQ2LDcgQEAg
UEFTUzogU2hvdWxkIGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBEZWJ1Z2dlci5zdGVwcGluZy5Gb3JJbgogRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUZv
ck9mKQotU1RFUFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQor
U1RFUFM6IG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIG92ZXIsIHJlc3VtZQog
UEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCiBQQVVTRSBBVCBlbnRyeUZvck9mOjQ4OjUKICAg
ICAgNDQgICAgCkBAIC01NDgsNiArNTY4LDE2IEBAIFBBVVNFIEFUIGVudHJ5Rm9yT2Y6NDk6MjMK
ICAgICAgNTEgICAgCiAKIEFDVElPTjogc3RlcC1vdmVyCitQQVVTRSBBVCBlbnRyeUZvck9mOjQ5
OjEwCisgICAgIDQ1ICAgIGZ1bmN0aW9uIGVudHJ5Rm9yT2YoKSB7CisgICAgIDQ2ICAgICAgICBs
ZXQgYXJyID0gWzEsIDJdOworICAgICA0NyAgICAgICAgZGVidWdnZXI7CisgLT4gIDQ4ICAgICAg
ICBmb3IgKHxsZXQgdmFsdWUgb2YgYXJyKQorICAgICA0OSAgICAgICAgICAgIGEoKTsKKyAgICAg
NTAgICAgfQorICAgICA1MSAgICAKKworQUNUSU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5
Rm9yT2Y6NTA6OQogICAgICA0NiAgICAgICAgbGV0IGFyciA9IFsxLCAyXTsKICAgICAgNDcgICAg
ICAgIGRlYnVnZ2VyOwpAQCAtNTU4LDExICs1ODgsMTEgQEAgUEFVU0UgQVQgZW50cnlGb3JPZjo1
MDo5CiAgICAgIDUyICAgIGZ1bmN0aW9uIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlKCkgewogCiBB
Q1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlGb3JPZjo0OToyMworUEFVU0UgQVQgZW50
cnlGb3JPZjo0OToxMAogICAgICA0NSAgICBmdW5jdGlvbiBlbnRyeUZvck9mKCkgewogICAgICA0
NiAgICAgICAgbGV0IGFyciA9IFsxLCAyXTsKICAgICAgNDcgICAgICAgIGRlYnVnZ2VyOwotIC0+
ICA0OCAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgfGFycikKKyAtPiAgNDggICAgICAgIGZvciAo
fGxldCB2YWx1ZSBvZiBhcnIpCiAgICAgIDQ5ICAgICAgICAgICAgYSgpOwogICAgICA1MCAgICB9
CiAgICAgIDUxICAgIApAQCAtNTc4LDExICs2MDgsMTEgQEAgUEFVU0UgQVQgZW50cnlGb3JPZjo1
MDo5CiAgICAgIDUyICAgIGZ1bmN0aW9uIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlKCkgewogCiBB
Q1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlGb3JPZjo0OToyMworUEFVU0UgQVQgZW50
cnlGb3JPZjo0OToxMAogICAgICA0NSAgICBmdW5jdGlvbiBlbnRyeUZvck9mKCkgewogICAgICA0
NiAgICAgICAgbGV0IGFyciA9IFsxLCAyXTsKICAgICAgNDcgICAgICAgIGRlYnVnZ2VyOwotIC0+
ICA0OCAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgfGFycikKKyAtPiAgNDggICAgICAgIGZvciAo
fGxldCB2YWx1ZSBvZiBhcnIpCiAgICAgIDQ5ICAgICAgICAgICAgYSgpOwogICAgICA1MCAgICB9
CiAgICAgIDUxICAgIApAQCAtNjEwLDcgKzY0MCw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVh
a0NvbnRpbnVlOjU1OjUKICAgICAgNTIgICAgZnVuY3Rpb24gZW50cnlXaGlsZUJyZWFrQ29udGlu
dWUoKSB7CiAgICAgIDUzICAgICAgICBsZXQgaSA9IDA7CiAgLT4gIDU0ICAgICAgICB8ZGVidWdn
ZXI7Ci0gICAgIDU1ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICA1NSAgICAgICAgd2hpbGUg
KHRydXRoeSkgewogICAgICA1NiAgICAgICAgICAgICsraTsKICAgICAgNTcgICAgICAgICAgICBp
ZiAoaSA9PT0gMSkKIApAQCAtNjE5LDcgKzY0OSw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVh
a0NvbnRpbnVlOjU2OjEyCiAgICAgIDUyICAgIGZ1bmN0aW9uIGVudHJ5V2hpbGVCcmVha0NvbnRp
bnVlKCkgewogICAgICA1MyAgICAgICAgbGV0IGkgPSAwOwogICAgICA1NCAgICAgICAgZGVidWdn
ZXI7Ci0gLT4gIDU1ICAgICAgICB3aGlsZSAofHRydWUpIHsKKyAtPiAgNTUgICAgICAgIHdoaWxl
ICh8dHJ1dGh5KSB7CiAgICAgIDU2ICAgICAgICAgICAgKytpOwogICAgICA1NyAgICAgICAgICAg
IGlmIChpID09PSAxKQogICAgICA1OCAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTYyOCw3
ICs2NTgsNyBAQCBBQ1RJT046IHN0ZXAtb3ZlcgogUEFVU0UgQVQgZW50cnlXaGlsZUJyZWFrQ29u
dGludWU6NTc6OQogICAgICA1MyAgICAgICAgbGV0IGkgPSAwOwogICAgICA1NCAgICAgICAgZGVi
dWdnZXI7Ci0gICAgIDU1ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICA1NSAgICAgICAgd2hp
bGUgKHRydXRoeSkgewogIC0+ICA1NiAgICAgICAgICAgIHwrK2k7CiAgICAgIDU3ICAgICAgICAg
ICAgaWYgKGkgPT09IDEpCiAgICAgIDU4ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjM3
LDcgKzY2Nyw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlOjU3OjkKIEFDVElP
Tjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtDb250aW51ZTo1ODoxMwogICAg
ICA1NCAgICAgICAgZGVidWdnZXI7Ci0gICAgIDU1ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICA1NSAgICAgICAgd2hpbGUgKHRydXRoeSkgewogICAgICA1NiAgICAgICAgICAgICsraTsKICAt
PiAgNTcgICAgICAgICAgICBpZiAofGkgPT09IDEpCiAgICAgIDU4ICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtNjQ2LDcgKzY3Niw3IEBAIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVha0NvbnRp
bnVlOjU4OjEzCiAKIEFDVElPTjogc3RlcC1vdmVyCiBQQVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtD
b250aW51ZTo1OToxMwotICAgICA1NSAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgNTUgICAg
ICAgIHdoaWxlICh0cnV0aHkpIHsKICAgICAgNTYgICAgICAgICAgICArK2k7CiAgICAgIDU3ICAg
ICAgICAgICAgaWYgKGkgPT09IDEpCiAgLT4gIDU4ICAgICAgICAgICAgICAgIHxjb250aW51ZTsK
QEAgLTY1OSw3ICs2ODksNyBAQCBQQVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtDb250aW51ZTo1Njox
MgogICAgICA1MiAgICBmdW5jdGlvbiBlbnRyeVdoaWxlQnJlYWtDb250aW51ZSgpIHsKICAgICAg
NTMgICAgICAgIGxldCBpID0gMDsKICAgICAgNTQgICAgICAgIGRlYnVnZ2VyOwotIC0+ICA1NSAg
ICAgICAgd2hpbGUgKHx0cnVlKSB7CisgLT4gIDU1ICAgICAgICB3aGlsZSAofHRydXRoeSkgewog
ICAgICA1NiAgICAgICAgICAgICsraTsKICAgICAgNTcgICAgICAgICAgICBpZiAoaSA9PT0gMSkK
ICAgICAgNTggICAgICAgICAgICAgICAgY29udGludWU7CkBAIC02NjgsNyArNjk4LDcgQEAgQUNU
SU9OOiBzdGVwLW92ZXIKIFBBVVNFIEFUIGVudHJ5V2hpbGVCcmVha0NvbnRpbnVlOjU3OjkKICAg
ICAgNTMgICAgICAgIGxldCBpID0gMDsKICAgICAgNTQgICAgICAgIGRlYnVnZ2VyOwotICAgICA1
NSAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgNTUgICAgICAgIHdoaWxlICh0cnV0aHkpIHsK
ICAtPiAgNTYgICAgICAgICAgICB8KytpOwogICAgICA1NyAgICAgICAgICAgIGlmIChpID09PSAx
KQogICAgICA1OCAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY3Nyw3ICs3MDcsNyBAQCBQ
QVVTRSBBVCBlbnRyeVdoaWxlQnJlYWtDb250aW51ZTo1Nzo5CiBBQ1RJT046IHN0ZXAtb3Zlcgog
UEFVU0UgQVQgZW50cnlXaGlsZUJyZWFrQ29udGludWU6NTg6MTMKICAgICAgNTQgICAgICAgIGRl
YnVnZ2VyOwotICAgICA1NSAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgNTUgICAgICAgIHdo
aWxlICh0cnV0aHkpIHsKICAgICAgNTYgICAgICAgICAgICArK2k7CiAgLT4gIDU3ICAgICAgICAg
ICAgaWYgKHxpID09PSAxKQogICAgICA1OCAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy1s
b29wcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBw
aW5nLWxvb3BzLmh0bWwKaW5kZXggY2QyMTdmZC4uMzJkODQzMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3BzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLWxvb3Bz
Lmh0bWwKQEAgLTQsOSArNCw5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+Ci1mdW5jdGlvbiBhKCkgewotICAgIHJldHVybiAxOwotfQordmFyIHRydXRoeSA9IHRydWU7
CitmdW5jdGlvbiBhKCkgeyByZXR1cm4gMTsgfQorCiAKIGZ1bmN0aW9uIGVudHJ5V2hpbGUoKSB7
CiAgICAgbGV0IGkgPSAyOwpAQCAtNTMsNyArNTMsNyBAQCBmdW5jdGlvbiBlbnRyeUZvck9mKCkg
ewogZnVuY3Rpb24gZW50cnlXaGlsZUJyZWFrQ29udGludWUoKSB7CiAgICAgbGV0IGkgPSAwOwog
ICAgIGRlYnVnZ2VyOwotICAgIHdoaWxlICh0cnVlKSB7CisgICAgd2hpbGUgKHRydXRoeSkgewog
ICAgICAgICArK2k7CiAgICAgICAgIGlmIChpID09PSAxKQogICAgICAgICAgICAgY29udGludWU7
CkBAIC0xMTcsNyArMTE3LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGV4cHJlc3Npb246
ICJzZXRUaW1lb3V0KGVudHJ5VHJhZGl0aW9uYWxGb3IpIiwKICAgICAgICAgc3RlcHM6IFsKICAg
ICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBs
ZXQgaSA9IDA7IGkgPCAyCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0
IGkgPSAwCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogaSA8IDIKICAgICAg
ICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCkKICAgICAgICAgICAgICAgICAib3Zl
ciIsIC8vIGNvbXBsZXRlOiArK2kKICAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRl
OiBpIDwgMiBbaT0xXQpAQCAtMTY5LDYgKzE3MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUZvckluKSIsCiAgICAgICAgIHN0ZXBzOiBb
CiAgICAgICAgICAgICAib3ZlciIsCisgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0
ZTogKG8pCiAgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0IHByb3BlcnR5
IGluIG8gW2tleTFdCiAgICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogYSgpCiAg
ICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0IHByb3BlcnR5IGluIG8gW2tl
eTJdCkBAIC0xODQsNiArMTg2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGV4cHJlc3Np
b246ICJzZXRUaW1lb3V0KGVudHJ5Rm9yT2YpIiwKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAg
ICAgICJvdmVyIiwKKyAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlIChhcnIpCiAg
ICAgICAgICAgICAgICAgIm92ZXIiLCAvLyBjb21wbGV0ZTogbGV0IHZhbHVlIG9mIGFyciBbMV0K
ICAgICAgICAgICAgICAgICAib3ZlciIsIC8vIGNvbXBsZXRlOiBhKCkKICAgICAgICAgICAgICAg
ICAib3ZlciIsIC8vIGNvbXBsZXRlOiBsZXQgdmFsdWUgb2YgYXJyIFsyXQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggNmQwMDA5ZS4uOGU5YzlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA5IEBACisyMDE2LTEwLTExICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgRW1pdCBEZWJ1Z0hvb2tzIHVuaWZvcm1seSB3aXRoIHBh
dXNlIGxvY2F0aW9ucyBpbnN0ZWFkIG9mIGhhdmluZyBzZXBhcmF0ZSBwYXVzZSBsb2NhdGlvbnMg
YW5kIG9wX2RlYnVnIGVtaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2UgaG93IEJ5dGVjb2RlR2VuZXJhdGlvbiBlbWl0cyBkZWJ1ZyBob29r
cyB0byBiZSBtb3JlIGNvbnNpc3RlbnQuCisgICAgICAgIFByZXZpb3VzbHkgbW9zdCBub2RlcyBp
bmRpdmlkdWFsbHkgZ2VuZXJhdGVkIHRoZWlyIG93biBkZWJ1ZyBob29rCisgICAgICAgIGFuZCB3
ZSBhc3NlcnRlZCB0aGF0IGl0IG1hdGNoZWQgYSBicmVha3BvaW50IGxvY2F0aW9uIGlkZW50aWZp
ZWQKKyAgICAgICAgYnkgdGhlIHBhcnNlci4gVGhpcyBjb3VsZCBnZXQgb3V0IG9mIHN5bmMsIG9y
IG5vZGVzIGNvdWxkIGZvcmdldCB0bworICAgICAgICBlbWl0IGRlYnVnIGhvb2tzIGV4cGVjdGVk
IGJ5IHRoZSBwYXJzZXIuCisgICAgICAgIAorICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBh
bHdheXMgY2hlY2sgYW5kIGVtaXQgYSBkZWJ1ZyBob29rIGZvciBhbnkKKyAgICAgICAgbm9kZS4g
VGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgZm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZQor
ICAgICAgICB0byBlbWl0IHRoZSBkZWJ1ZyBob29rIHdoZW4gZW1pdHRpbmcgdGhlIG5vZGUgaXRz
ZWxmLiBUaGlzIGNvdmVycworICAgICAgICB0aGUgbWFqb3JpdHkgb2YgY2FzZXMgKHN0YXRlbWVu
dHMpLgorCisgICAgICAgIFRoZXJlIGFyZSBhIGZldyBleGNlcHRpb25zIHdoZXJlIHdlIGNvbnRp
bnVlIHRvIG5lZWQgdG8gY3VzdG9taXplCisgICAgICAgIGVtaXR0aW5nIGRlYnVnIGhvb2tzOgor
CisgICAgICAgICAgICAxLiBOb2RlcyB3aXRoIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4
dAorICAgICAgICAgICAgICAgIC0gbm9uLUV4cHJlc3Npb24gbm9kZXMgY3VzdG9taXplIGhvdyB0
aGV5IGVtaXQgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAtIGUuZy4gY29uc3RhbnRz
IG1heSBjaG9vc2UgdG8gZW1pdCBub3RoaW5nLCBidXQgd2UgaGFkIHJlY29yZGVkIGEgYnJlYWtw
b2ludCBsb2NhdGlvbgorICAgICAgICAgICAgMi4gU3BlY2lhbGl6ZWQgRGVidWcgSG9va3MKKyAg
ICAgICAgICAgICAgICAtIHN1Y2ggYXMgaG9va3MgZm9yIFByb2dyYW0gc3RhcnQvZW5kLCBkZWJ1
Z2dlciBzdGF0ZW1lbnRzLCBldGMuCisgICAgICAgICAgICAzLiBEZWJ1ZyBIb29rcyBpbiBmb3Iu
Lm9mIC8gZm9yLi5pbiB0aGF0IGRvbid0IGNvcnJlc3BvbmQgdG8gcmUtZW1pdHRpbmcgbm9kZXMK
KyAgICAgICAgICAgICAgICAtIHN1Y2ggYXMgcGF1c2luZyBvbiB0aGUgYXNzaWdubWVudCBleHBy
ZXNzaW9uIGluc2lkZSB0aGVzZSBsb29wcworCisgICAgICAgIFRoZSBtYWpvcml0eSBvZiBub2Rl
cyBubyBsb25nZXIgaGF2ZSBjdXN0b20gZW1pdHMuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROb2RlSW5UYWlsUG9zaXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVidWdIb29rKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJh
dGlvbik6CisgICAgICAgIEJ5IGRlZmF1bHQsIHdoZW4gZW1pdHRpbmcgYSBub2RlIGNoZWNrIGlm
IHdlIHNob3VsZCBhbHNvIGVtaXQgYW4gb3BfZGVidWcgZm9yIGl0LgorICAgICAgICBUaGlzIGRl
ZmF1bHQgRGVidWdIb29rIGlzIFdpbGxFeGVjdXRlU3RhdGVtZW50LCB3aGljaCBpcyBhIG5vcm1h
bCBwYXVzZSBwb2ludC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
OgorICAgICAgICAoSlNDOjpDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29u
dGV4dCk6CisgICAgICAgIChKU0M6OkxvZ2ljYWxOb3ROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRp
dGlvbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZUlu
Q29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OmVtaXRCeXRl
Y29kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIFRoZSBwYXJzZXIgd291bGQgaGF2ZSBn
ZW5lcmF0ZWQgYSBwYXVzZSBsb2NhdGlvbiBmb3IgdGhlc2UgY29uZGl0aW9ucworICAgICAgICBu
byBtYXR0ZXIgd2hhdCBjb25zdGFudCBmb2xkaW5nIGFuZCByZS13cml0aW5nIHRoZXNlIG5vZGVz
IG1heSBwZXJmb3JtLgorICAgICAgICBTbywgd2hlbiBlbWl0dGluZyB0aGVzZSBub2RlcyBpbiBj
b25kaXRpb24gY29udGV4dCBjaGVjayBpZiB0aGV5IG5lZWQKKyAgICAgICAgZW1pdCB0aGVpciBv
d24gZGVidWcgaG9vay4KKworICAgICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpEZWNsYXJhdGlvblN0YXRlbWVudDo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG9X
aGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldoaWxlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCcmVha05v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIE5vIGxvbmdlciBuZWVkIHRvIGN1c3RvbSBlbWl0IGRlYnVn
IGhvb2tzLiBUaGUgZGVmYXVsdCBlbWl0Tm9kZSB3aWxsIGhhbmRsZSB0aGVzZS4KKworICAgICAg
ICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIEluY2x1ZGUgZXh0cmEg
ZGVidWcgaG9va3MgdGhlIHVzZXIgZXhwZWN0cyB0byByZXR1cm4gYmFjayB0byB0aGUgYXNzaWdu
bWVudAorICAgICAgICBleHByZXNzaW9uIGluIHRoZSBsb29wIGhlYWRlciBiZWZvcmUgc3RhcnRp
bmcgdGhlIGJvZHkgYWdhaW4uIFRoZSBzYW1lIGlzIGRvbmUKKyAgICAgICAgZm9yIGZvci4ub2Yg
d2l0aCBlbWl0RW51bWVyYXRpb24uCisKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24p
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHBvcnRMb2NhbERlY2xhcmF0aW9u
KToKKyAgICAgICAgVGhlc2UgYXJlIG5vIGxvbmdlciBuZWVkZWQgdG8gZmFrZS1zYXRpc2Z5IGFz
c2VydGlvbnMuIFdlIG5ldmVyIHdhbnRlZCB0bworICAgICAgICBlbWl0IGRlYnVnIGhvb2tzIGZv
ciB0aGVzZSBpbm5lciBzdGF0ZW1lbnRzIGJlY2F1c2UgdGhlIGV4cG9ydCBzdGF0ZW1lbnQKKyAg
ICAgICAgd2lsbCBhbHJlYWR5IGhhdmUgdGhlIGRlYnVnIGhvb2tzLgorCisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZvck9mTG9vcCk6CisgICAgICAgIEluY2x1ZGUgdGhlIGNvcnJlY3QgbG9jYXRpb24g
d2hlcmUgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0cy4KKworICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpicmVha3BvaW50TG9jYXRpb24pOgorICAgICAgICBTaW1wbGlmeSB0byBhIGdlbmVyYWwgaW1w
bGVtZW50YXRpb24gZm9yIE5vZGUuCisKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5o
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JPZkxvb3ApOgorICAgICAgICBJZ25vcmUg
dGhlIG5ldyBleHRyYSBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAg
ICAgICAgKEpTQzo6Tm9kZTo6bmVlZHNEZWJ1Z0hvb2spOgorICAgICAgICAoSlNDOjpOb2RlOjpz
ZXROZWVkc0RlYnVnSG9vayk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjpuZWVkc0Rl
YnVnSG9vayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjpzZXROZWVk
c0RlYnVnSG9vayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OmlzRW1w
dHlTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpuZWVk
c0RlYnVnSG9vayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldE5l
ZWRzRGVidWdIb29rKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSBkZWJ1ZyBob29rIGxvZ2ljIGlu
dG8gdGhlIGJhc2UgTm9kZSBjbGFzcy4KKworICAgICAgICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpp
c0RlYnVnZ2VyU3RhdGVtZW50KToKKyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBkaXN0aW5ndWlz
aCBhIGRlYnVnZ2VyIHN0YXRlbWVudC4KKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAg
ICAgICBQcm92aWRlIHRoZSBsb2NhdGlvbiBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0cy4K
KwogMjAxNi0xMC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBWYWx1ZUFkZCBzaG91bGQgYmUgY29uc3RhbnQgZm9sZGVkIGlmIHRoZSBvcGVyYW5kcyBhcmUg
Y29uc3RhbnQgU3RyaW5nLFByaW1pdGl2ZSBvciBQcmltaXRpdmUsU3RyaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDg2YmE3ZTQuLmY3ZTEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNTA0LDE0
ICszNTA0LDE2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdI
b29rVHlwZSBkZWJ1Z0hvb2tUeXBlLCB1bnNpZ25lZCBsaW5lCiAKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWJ1Z0hvb2soU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQogewotICAgIFJF
TEVBU0VfQVNTRVJUKHN0YXRlbWVudC0+bmVlZHNEZWJ1Z0hvb2soKSk7CisgICAgLy8gRGVidWdn
ZXJTdGF0ZW1lbnROb2RlIHdpbGwgb3V0cHV0IGl0cyBvd24gc3BlY2lhbCBkZWJ1ZyBob29rLgor
ICAgIGlmIChzdGF0ZW1lbnQtPmlzRGVidWdnZXJTdGF0ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgc3RhdGVtZW50LT5w
b3NpdGlvbigpKTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhF
eHByZXNzaW9uTm9kZSogZXhwciwgRGVidWdIb29rVHlwZSBkZWJ1Z0hvb2tUeXBlKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhFeHByZXNzaW9uTm9kZSogZXhwcikKIHsK
LSAgICBSRUxFQVNFX0FTU0VSVChleHByLT5uZWVkc0RlYnVnSG9vaygpKTsKLSAgICBlbWl0RGVi
dWdIb29rKGRlYnVnSG9va1R5cGUsIGV4cHItPnBvc2l0aW9uKCkpOworICAgIGVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGV4cHItPnBvc2l0aW9uKCkpOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0V2lsbExlYXZlQ2FsbEZyYW1lRGVidWdIb29rKCkKQEAgLTQy
MDIsNyArNDIwNCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAgICAgICAgIGlmIChmb3JM
b29wTm9kZSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9yTG9vcE5vZGUtPmlzRm9y
T2ZOb2RlKCkpOwogICAgICAgICAgICAgcHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29w
SXRlcmF0aW9uKGZvckxvb3BOb2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOwotICAgICAgICAgICAg
ZW1pdERlYnVnSG9vayhmb3JMb29wTm9kZS0+ZXhwcigpLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7
CisgICAgICAgICAgICBlbWl0RGVidWdIb29rKGZvckxvb3BOb2RlLT5sZXhwcigpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBjZmI2ZTQ3Li5hMDliYmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC0zODYsNiArMzg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkobi0+
bmVlZHNEZWJ1Z0hvb2soKSkpCisgICAgICAgICAgICAgICAgZW1pdERlYnVnSG9vayhuKTsKICAg
ICAgICAgICAgIG4tPmVtaXRCeXRlY29kZSgqdGhpcywgZHN0KTsKICAgICAgICAgfQogCkBAIC00
MTEsNiArNDEzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8
fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5y
ZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbV92bS0+aXNTYWZlVG9SZWN1
cnNlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVl
cEV4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG4tPm5lZWRzRGVidWdIb29r
KCkpKQorICAgICAgICAgICAgICAgIGVtaXREZWJ1Z0hvb2sobik7CiAgICAgICAgICAgICByZXR1
cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOwogICAgICAgICB9CiAKQEAgLTQzMCw3ICs0
MzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBlbWl0VGhyb3dFeHByZXNz
aW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KLQogICAgICAgICAgICAgbi0+ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KCp0
aGlzLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFsbFRocm91Z2hNb2RlKTsKICAgICAgICAg
fQogCkBAIC02ODQsNyArNjg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dERlYnVnSG9vayhEZWJ1Z0hvb2tUeXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOwogICAgICAg
ICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdIb29rVHlwZSwgdW5zaWduZWQgbGluZSwgdW5zaWdu
ZWQgY2hhck9mZnNldCwgdW5zaWduZWQgbGluZVN0YXJ0KTsKICAgICAgICAgdm9pZCBlbWl0RGVi
dWdIb29rKFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKEV4cHJl
c3Npb25Ob2RlKiwgRGVidWdIb29rVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdERlYnVnSG9vayhF
eHByZXNzaW9uTm9kZSopOwogICAgICAgICB2b2lkIGVtaXRXaWxsTGVhdmVDYWxsRnJhbWVEZWJ1
Z0hvb2soKTsKIAogICAgICAgICBib29sIGlzSW5GaW5hbGx5QmxvY2soKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCA+IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0ZDI3NmQzLi5lNmNiMGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC05NCw2ICs5NCwxMiBAQCBSZWdpc3RlcklEKiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YTo6ZW1p
dFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImCiB2b2lkIENvbnN0YW50Tm9k
ZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdo
TW9kZSBmYWxsVGhyb3VnaE1vZGUpCiB7CiAgICAgVHJpU3RhdGUgdmFsdWUgPSBqc1ZhbHVlKGdl
bmVyYXRvcikucHVyZVRvQm9vbGVhbigpOworCisgICAgaWYgKHZhbHVlICE9IE1peGVkVHJpU3Rh
dGUpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKG5lZWRzRGVidWdIb29rKCkpKQorICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sodGhpcyk7CisgICAgfQorCiAgICAgaWYgKHZhbHVl
ID09IE1peGVkVHJpU3RhdGUpCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGVJ
bkNvbmRpdGlvbkNvbnRleHQoZ2VuZXJhdG9yLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFs
bFRocm91Z2hNb2RlKTsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBUcnVlVHJpU3RhdGUgJiYgZmFs
bFRocm91Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNGYWxzZSkKQEAgLTE2NjksNyArMTY3NSwx
MCBAQCBSZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogCiB2b2lkIExvZ2ljYWxOb3ROb2RlOjplbWl0
Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
TGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlIGZh
bGxUaHJvdWdoTW9kZSkKIHsKLSAgICAvLyByZXZlcnNlIHRoZSB0cnVlIGFuZCBmYWxzZSB0YXJn
ZXRzCisgICAgaWYgKFVOTElLRUxZKG5lZWRzRGVidWdIb29rKCkpKQorICAgICAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayh0aGlzKTsKKworICAgIC8vIFJldmVyc2UgdGhlIHRydWUgYW5kIGZh
bHNlIHRhcmdldHMuCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KGV4
cHIoKSwgZmFsc2VUYXJnZXQsIHRydWVUYXJnZXQsIGludmVydChmYWxsVGhyb3VnaE1vZGUpKTsK
IH0KIApAQCAtMTc5OSw2ICsxODA4LDExIEBAIHZvaWQgQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNv
ZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBF
eHByZXNzaW9uTm9kZSogYnJhbmNoRXhwcmVzc2lvbjsKICAgICB0cnlGb2xkVG9CcmFuY2goZ2Vu
ZXJhdG9yLCBicmFuY2hDb25kaXRpb24sIGJyYW5jaEV4cHJlc3Npb24pOwogCisgICAgaWYgKFVO
TElLRUxZKG5lZWRzRGVidWdIb29rKCkpKSB7CisgICAgICAgIGlmIChicmFuY2hDb25kaXRpb24g
IT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRo
aXMpOworICAgIH0KKwogICAgIGlmIChicmFuY2hDb25kaXRpb24gPT0gTWl4ZWRUcmlTdGF0ZSkK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChn
ZW5lcmF0b3IsIHRydWVUYXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1vZGUpOwogICAg
IGVsc2UgaWYgKGJyYW5jaENvbmRpdGlvbiA9PSBUcnVlVHJpU3RhdGUpCkBAIC0yMDAwLDYgKzIw
MTQsOSBAQCBSZWdpc3RlcklEKiBMb2dpY2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lkIExvZ2ljYWxPcE5vZGU6OmVt
aXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUg
ZmFsbFRocm91Z2hNb2RlKQogeworICAgIGlmIChVTkxJS0VMWShuZWVkc0RlYnVnSG9vaygpKSkK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sodGhpcyk7CisKICAgICBSZWZQdHI8TGFi
ZWw+IGFmdGVyRXhwcjEgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9vcGVyYXRv
ciA9PSBPcExvZ2ljYWxBbmQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9u
Q29udGV4dChtX2V4cHIxLCBhZnRlckV4cHIxLmdldCgpLCBmYWxzZVRhcmdldCwgRmFsbFRocm91
Z2hNZWFuc1RydWUpOwpAQCAtMjM3Niw5ICsyMzkzLDkgQEAgdm9pZCBCbG9ja05vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVN0YXRlbWVudE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lk
IEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sodGhpcyk7CisgICAgUkVM
RUFTRV9BU1NFUlQobmVlZHNEZWJ1Z0hvb2soKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC0yMzkzLDcgKzI0MTAsNiBAQCB2b2lkIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogdm9p
ZCBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayh0aGlzKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X2V4cHIpOwogfQogCkBAIC0yNDAyLDcgKzI0MTgsNiBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZAogdm9pZCBEZWNsYXJhdGlvblN0YXRlbWVudDo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewogICAgIEFTU0VSVChtX2V4cHIpOwotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZSht
X2V4cHIpOwogfQogCkBAIC0yNDkwLDggKzI1MDUsNiBAQCBib29sIElmRWxzZU5vZGU6OnRyeUZv
bGRCcmVha0FuZENvbnRpbnVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFN0YXRlbWVu
dAogCiB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
bV9jb25kaXRpb24sIFdpbGxFeGVjdXRlU3RhdGVtZW50KTsKLSAgICAKICAgICBSZWZQdHI8TGFi
ZWw+IGJlZm9yZVRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+
IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFm
dGVyRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMjUzNiw3ICsyNTQ5LDYgQEAgdm9p
ZCBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihk
c3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG1fZXhwciwgV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIEZhbGxUaHJv
dWdoTWVhbnNGYWxzZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1Rh
cmdldCgpKTsKQEAgLTI1NDksNyArMjU2MSw2IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIExh
YmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpM
b29wKTsKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0YXRl
bWVudCk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwg
dG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgRmFsbFRocm91Z2hNZWFuc1Ry
dWUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwpAQCAtMjU1
OSw3ICsyNTcwLDYgQEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
SW5UYWlsUG9zaXRpb24oZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhtX2V4cHIsIFdpbGxFeGVjdXRlU3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFr
VGFyZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNGYWxzZSk7CiAKQEAgLTI1NzcsMjEgKzI1ODcsMTIg
QEAgdm9pZCBGb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9
IG51bGxwdHI7CiAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVH
ZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0
b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQsICZmb3JMb29wU3ltYm9sVGFibGUpOwogCi0g
ICAgaWYgKG1fZXhwcjEgfHwgbV9leHByMikgewotICAgICAgICBFeHByZXNzaW9uTm9kZSogZmly
c3RFeHByID0gbV9leHByMSA/IG1fZXhwcjEgOiBtX2V4cHIyOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhmaXJzdEV4cHIsIFdpbGxFeGVjdXRlU3RhdGVtZW50KTsKLSAgICB9Ci0K
LSAgICBpZiAobV9leHByMSkgewotICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4
cHIxLCBXaWxsRXhlY3V0ZUV4cHJlc3Npb24pOworICAgIGlmIChtX2V4cHIxKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9leHByMSk7Ci0g
ICAgfQogCiAgICAgUmVmUHRyPExhYmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKLSAgICBpZiAobV9leHByMikgewotICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayht
X2V4cHIyLCBXaWxsRXhlY3V0ZUV4cHJlc3Npb24pOworICAgIGlmIChtX2V4cHIyKQogICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdG9wT2ZMb29w
LmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgRmFsbFRocm91Z2hNZWFuc1RydWUpOwotICAg
IH0KIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodG9wT2ZMb29wLmdldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdExvb3BIaW50KCk7CkBAIC0yNjAxLDE1ICsyNjAyLDEyIEBAIHZvaWQgRm9yTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkp
OwogICAgIGdlbmVyYXRvci5wcmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRp
b24odGhpcywgZm9yTG9vcFN5bWJvbFRhYmxlKTsKLSAgICBpZiAobV9leHByMykgewotICAgICAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4cHIzLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7
CisgICAgaWYgKG1fZXhwcjMpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpLCBtX2V4cHIzKTsKLSAgICB9CiAKLSAgICBpZiAobV9leHByMikgewot
ICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4cHIyLCBXaWxsRXhlY3V0ZVN0YXRl
bWVudCk7CisgICAgaWYgKG1fZXhwcjIpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29u
ZGl0aW9uQ29udGV4dChtX2V4cHIyLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1Rhcmdl
dCgpLCBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpOwotICAgIH0gZWxzZQorICAgIGVsc2UKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKHRvcE9mTG9vcC5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKQEAgLTI3MzgsOCArMjczNiw2IEBAIHZv
aWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51
bGxwdHI7CiAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVHZW5l
cmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6
Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQsICZmb3JMb29wU3ltYm9sVGFibGUpOwogCi0gICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7Ci0K
ICAgICBpZiAobV9sZXhwci0+aXNBc3NpZ25SZXNvbHZlTm9kZSgpKQogICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9sZXhwcik7CiAKQEAgLTI3
NTEsNiArMjc0Nyw5IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBsb2NhbCA9IHRoaXMtPnRyeUdldEJvdW5kTG9jYWwoZ2VuZXJhdG9yKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZW51bWVyYXRvckluZGV4OwogCisgICAgLy8gUGF1c2UgYXQgdGhlIGFzc2ln
bm1lbnQgZXhwcmVzc2lvbiBmb3IgZWFjaCBmb3IuLmluIGl0ZXJhdGlvbi4KKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhtX2xleHByKTsKKwogICAgIGludCBwcm9maWxlclN0YXJ0T2Zmc2V0
ID0gbV9zdGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCk7CiAgICAgaW50IHByb2ZpbGVyRW5kT2Zmc2V0
ID0gbV9zdGF0ZW1lbnQtPmVuZE9mZnNldCgpICsgKG1fc3RhdGVtZW50LT5pc0Jsb2NrKCkgPyAx
IDogMCk7CiAKQEAgLTI3ODgsNyArMjc4Nyw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLnByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbih0aGlz
LCBmb3JMb29wU3ltYm9sVGFibGUpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEluYyhpLmdldCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0
YXRlbWVudCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG1fbGV4cHIpOyAvLyBQ
YXVzZSBhdCB0aGUgYXNzaWdubWVudCBleHByZXNzaW9uIGZvciBlYWNoIGZvci4uaW4gaXRlcmF0
aW9uLgogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKIAogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKQEAgLTI4Mjgs
NyArMjgyNyw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBnZW5lcmF0b3IucHJlcGFy
ZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0aW9uKHRoaXMsIGZvckxvb3BTeW1ib2xU
YWJsZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5jKGVudW1lcmF0b3JJbmRleC5nZXQoKSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RW51bWVyYXRvclN0cnVjdHVyZVByb3BlcnR5TmFtZShw
cm9wZXJ0eU5hbWUuZ2V0KCksIGVudW1lcmF0b3IuZ2V0KCksIGVudW1lcmF0b3JJbmRleC5nZXQo
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKG1fZXhwciwgV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2xleHByKTsgLy8g
UGF1c2UgYXQgdGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBmb3IgZWFjaCBmb3IuLmluIGl0ZXJh
dGlvbi4KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CiAgICAg
ICAgIAogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsK
QEAgLTI4NjUsNyArMjg2NCw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBnZW5lcmF0
b3IucHJlcGFyZUxleGljYWxTY29wZUZvck5leHRGb3JMb29wSXRlcmF0aW9uKHRoaXMsIGZvckxv
b3BTeW1ib2xUYWJsZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5jKGVudW1lcmF0b3JJbmRl
eC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RW51bWVyYXRvckdlbmVyaWNQcm9wZXJ0
eU5hbWUocHJvcGVydHlOYW1lLmdldCgpLCBlbnVtZXJhdG9yLmdldCgpLCBlbnVtZXJhdG9ySW5k
ZXguZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhtX2V4cHIsIFdpbGxF
eGVjdXRlU3RhdGVtZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9sZXhw
cik7IC8vIFBhdXNlIGF0IHRoZSBhc3NpZ25tZW50IGV4cHJlc3Npb24gZm9yIGVhY2ggZm9yLi5p
biBpdGVyYXRpb24uCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkp
OwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwpA
QCAtMjk2Miw4ICsyOTYxLDYgQEAgTGFiZWwqIENvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdldChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogCiB2b2lkIENvbnRpbnVlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwotICAgIAogICAgIExhYmVsU2NvcGVQdHIg
c2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNj
b3BlKTsKIApAQCAtMjk5MSw4ICsyOTg4LDYgQEAgTGFiZWwqIEJyZWFrTm9kZTo6dHJpdmlhbFRh
cmdldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogCiB2b2lkIEJyZWFrTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwotICAgIAogICAgIExhYmVsU2NvcGVQ
dHIgc2NvcGUgPSBnZW5lcmF0b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNj
b3BlKTsKIApAQCAtMzAwNiw4ICszMDAxLDYgQEAgdm9pZCBCcmVha05vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogdm9pZCBSZXR1
cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwotCiAgICAg
QVNTRVJUKGdlbmVyYXRvci5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCkBAIC0zMDM0LDggKzMwMjcsNiBAQCB2
b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAKIHZvaWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2sobV9leHByLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7Ci0KICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1fZGl2b3QgLSBtX2V4cHJlc3Np
b25MZW5ndGgsIG1fZGl2b3QpOwogICAgIGdlbmVyYXRvci5lbWl0UHVzaFdpdGhTY29wZShzY29w
ZS5nZXQoKSk7CkBAIC0zMjA5LDggKzMyMDAsNiBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVtaXRC
eXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQog
CiB2b2lkIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2sobV9l
eHByLCBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7Ci0gICAgCiAgICAgTGFiZWxTY29wZVB0ciBzY29w
ZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlN3aXRjaCk7CiAKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKQEAgLTMy
MzksOCArMzIyOCw2IEBAIHZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiB2b2lkIFRocm93Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayh0aGlzKTsKLQogICAgIGlmIChkc3QgPT0g
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgZHN0ID0gMDsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZXhwciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA0YTJkNzFlLi42OGQ1MzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtNTU5LDcgKzU1
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQs
IGludCBlbmQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKQogICAgIHsKICAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZvckluTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRz
LCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CkBAIC01Njcs
MTMgKzU2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Np
b25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBh
dHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGRlY2xMb2NhdGlvbiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCwgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcykKICAgICB7Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybiwgMCk7Ci0g
ICAgICAgIHJldHVybiBjcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGxleHByLCBpdGVyLCBzdGF0
ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCwgbGV4aWNhbFZhcmlhYmxl
cyk7CisgICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJp
bmdBc3NpZ25tZW50Tm9kZShkZWNsTG9jYXRpb24sIHBhdHRlcm4sIG51bGxwdHIpOworICAgICAg
ICByZXR1cm4gY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBsZXhwciwgaXRlciwgc3RhdGVtZW50
cywgZGVjbExvY2F0aW9uLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCwgbGV4aWNh
bFZhcmlhYmxlcyk7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvck9m
TG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhz
LCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCwgVmFyaWFibGVFbnZp
cm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JP
Zkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxo
cywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3Rh
cnQsIGludCBlbmQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAg
ewogICAgICAgICBGb3JPZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRm9yT2ZO
b2RlKGxvY2F0aW9uLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMsIGxleGljYWxWYXJpYWJsZXMpOwog
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5zdGFydE9mZnNldCwg
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKQEAgLTU4MSwxMCArNTgxLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3Rh
cnQsIGludCBlbmQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUq
IGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZGVjbExvY2F0aW9uLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBp
bnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAgIHsKLSAg
ICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2ln
bm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCAwKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUZv
ck9mTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90
LCBlRW5kLCBzdGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICAgICAgYXV0byBsZXhw
ciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGRlY2xM
b2NhdGlvbiwgcGF0dGVybiwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiBjcmVhdGVGb3JPZkxv
b3AobG9jYXRpb24sIGxleHByLCBpdGVyLCBzdGF0ZW1lbnRzLCBkZWNsTG9jYXRpb24sIGVTdGFy
dCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICB9CiAK
ICAgICBib29sIGlzQmluZGluZ05vZGUoY29uc3QgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIHBhdHRl
cm4pCkBAIC03NTIsMjEgKzc1MiwxMSBAQCBwdWJsaWM6CiAKICAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgU3RhdGVtZW50Tm9kZSogZGVjbGFyYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGxvY2Fs
TmFtZSkKICAgICB7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFyayB0aGUgaW5uZXIgc3RhdGVt
ZW50IGFzIG5lZWRpbmcgYSBkZWJ1ZyBob29rIChzbyB0aGF0IHdoZW4gdGhlIHN0YXRlbWVudCBp
cyBnZW5lcmF0ZWQgd2UgZG9uJ3QKLSAgICAgICAgLy8gYXNzZXJ0IHdoZW4gZ2VuZXJhdGluZyBh
biBvcF9kZWJ1ZyBmb3IgaXQpIHdpdGhvdXQgcmVjb3JkaW5nIGEgYnJlYWtwb2ludCBsb2NhdGlv
biBiZWNhdXNlIHRoZSBleHBvcnQgc3RhdGVtZW50Ci0gICAgICAgIC8vIGl0c2VsZiB3aWxsIGdl
dCB0aGUgYnJlYWtwb2ludCBsb2NhdGlvbi4gVGhpcyB3aWxsIGJlIGVsaW1pbmF0ZWQgYnk6Ci0g
ICAgICAgIC8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI4MDk+IEVtaXQgRGVidWdIb29rcyB1
bmlmb3JtbHkgd2l0aCBwYXVzZSBsb2NhdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgc2VwYXJhdGUg
cGF1c2UgbG9jYXRpb25zIGFuZCBvcF9kZWJ1ZyBlbWl0cwotICAgICAgICBkZWNsYXJhdGlvbi0+
c2V0TmVlZHNEZWJ1Z0hvb2soKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgZGVjbGFyYXRpb24sIGxvY2Fs
TmFtZSk7CiAgICAgfQogCiAgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0TG9jYWxEZWNs
YXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBk
ZWNsYXJhdGlvbikKICAgICB7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFyayB0aGUgaW5uZXIg
c3RhdGVtZW50IGFzIG5lZWRpbmcgYSBkZWJ1ZyBob29rIChzbyB0aGF0IHdoZW4gdGhlIHN0YXRl
bWVudCBpcyBnZW5lcmF0ZWQgd2UgZG9uJ3QKLSAgICAgICAgLy8gYXNzZXJ0IHdoZW4gZ2VuZXJh
dGluZyBhbiBvcF9kZWJ1ZyBmb3IgaXQpIHdpdGhvdXQgcmVjb3JkaW5nIGEgYnJlYWtwb2ludCBs
b2NhdGlvbiBiZWNhdXNlIHRoZSBleHBvcnQgc3RhdGVtZW50Ci0gICAgICAgIC8vIGl0c2VsZiB3
aWxsIGdldCB0aGUgYnJlYWtwb2ludCBsb2NhdGlvbi4gVGhpcyB3aWxsIGJlIGVsaW1pbmF0ZWQg
Ynk6Ci0gICAgICAgIC8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI4MDk+IEVtaXQgRGVidWdI
b29rcyB1bmlmb3JtbHkgd2l0aCBwYXVzZSBsb2NhdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgc2Vw
YXJhdGUgcGF1c2UgbG9jYXRpb25zIGFuZCBvcF9kZWJ1ZyBlbWl0cwotICAgICAgICBkZWNsYXJh
dGlvbi0+c2V0TmVlZHNEZWJ1Z0hvb2soKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUobG9jYXRpb24sIGRlY2xhcmF0aW9uKTsK
ICAgICB9CiAKQEAgLTk4MywxNiArOTczLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbm9kZS0+c2V0
U3RhcnRPZmZzZXQob2Zmc2V0KTsKICAgICB9CiAKLSAgICBKU1RleHRQb3NpdGlvbiBicmVha3Bv
aW50TG9jYXRpb24oU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgIEpTVGV4dFBvc2l0aW9u
IGJyZWFrcG9pbnRMb2NhdGlvbihOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgc3RhdGVtZW50
LT5zZXROZWVkc0RlYnVnSG9vaygpOwotICAgICAgICByZXR1cm4gc3RhdGVtZW50LT5wb3NpdGlv
bigpOwotICAgIH0KLQotICAgIEpTVGV4dFBvc2l0aW9uIGJyZWFrcG9pbnRMb2NhdGlvbihFeHBy
ZXNzaW9uTm9kZSogZXhwcikKLSAgICB7Ci0gICAgICAgIGV4cHItPnNldE5lZWRzRGVidWdIb29r
KCk7Ci0gICAgICAgIHJldHVybiBleHByLT5wb3NpdGlvbigpOworICAgICAgICBub2RlLT5zZXRO
ZWVkc0RlYnVnSG9vaygpOworICAgICAgICByZXR1cm4gbm9kZS0+cG9zaXRpb24oKTsKICAgICB9
CiAKICAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0FyZ3VtZW50cygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggN2I5Zjg4Yy4uZmI0NTNlOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQ1LDkgKzE0NSwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRFbmRPZmZzZXQoaW50IG9mZnNldCkgeyBt
X2VuZE9mZnNldCA9IG9mZnNldDsgfQogICAgICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCBv
ZmZzZXQpIHsgbV9wb3NpdGlvbi5vZmZzZXQgPSBvZmZzZXQ7IH0KIAorICAgICAgICBib29sIG5l
ZWRzRGVidWdIb29rKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0RlYnVnSG9vazsgfQorICAgICAg
ICB2b2lkIHNldE5lZWRzRGVidWdIb29rKCkgeyBtX25lZWRzRGVidWdIb29rID0gdHJ1ZTsgfQor
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBKU1RleHRQb3NpdGlvbiBtX3Bvc2l0aW9uOwogICAg
ICAgICBpbnQgbV9lbmRPZmZzZXQ7CisgICAgICAgIGJvb2wgbV9uZWVkc0RlYnVnSG9vayB7IGZh
bHNlIH07CiAgICAgfTsKIAogICAgIGNsYXNzIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5vZGUg
ewpAQCAtMTkxLDEyICsxOTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZXN1bHRU
eXBlIHJlc3VsdERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdFR5cGU7IH0KIAot
ICAgICAgICBib29sIG5lZWRzRGVidWdIb29rKCkgeyByZXR1cm4gbV9uZWVkc0RlYnVnSG9vazsg
fQotICAgICAgICB2b2lkIHNldE5lZWRzRGVidWdIb29rKCkgeyBtX25lZWRzRGVidWdIb29rID0g
dHJ1ZTsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzdWx0VHlwZSBtX3Jlc3VsdFR5cGU7
Ci0gICAgICAgIGJvb2wgbV9uZWVkc0RlYnVnSG9vayB7IGZhbHNlIH07CiAgICAgfTsKIAogICAg
IGNsYXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC0yMTMsNiArMjEzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0TmV4dChTdGF0ZW1lbnROb2RlKiBuZXh0
KSB7IG1fbmV4dCA9IG5leHQ7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rl
YnVnZ2VyU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzRnVuY3Rpb25Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
dmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtMjI0LDEzICsyMjUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBi
b29sIGlzTW9kdWxlRGVjbGFyYXRpb25Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIGlzRm9yT2ZOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgICAgICBib29sIG5lZWRzRGVidWdIb29rKCkgeyByZXR1cm4gbV9uZWVkc0RlYnVnSG9v
azsgfQotICAgICAgICB2b2lkIHNldE5lZWRzRGVidWdIb29rKCkgeyBtX25lZWRzRGVidWdIb29r
ID0gdHJ1ZTsgfQotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX25l
eHQ7CiAgICAgICAgIGludCBtX2xhc3RMaW5lOwotICAgICAgICBib29sIG1fbmVlZHNEZWJ1Z0hv
b2sgeyBmYWxzZSB9OwogICAgIH07CiAKICAgICBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Tm9k
ZSA6IHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CkBAIC0xMzY2LDYgKzEzNjMsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisKKyAgICAgICAgYm9vbCBpc0RlYnVnZ2VyU3Rh
dGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC0xNDczLDYgKzE0NzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBFbnVtZXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBWYXJpYWJs
ZUVudmlyb25tZW50Jik7CiAKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGxleHByKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhwcjsgfQogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcjsgfQogCiAgICAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGJlM2RjYTkuLmUxM2I3ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTExODYsNiArMTE4Niw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGb3JTdGF0ZW1lbnQoCiAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChPUEVOUEFSRU4sICIo
IiwgInN0YXJ0IiwgImZvci1sb29wIGhlYWRlciIpOwogICAgIGludCBub25MSFNDb3VudCA9IG1f
cGFyc2VyU3RhdGUubm9uTEhTQ291bnQ7CiAgICAgaW50IGRlY2xhcmF0aW9ucyA9IDA7CisgICAg
SlNUb2tlbkxvY2F0aW9uIGRlY2xMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4
dFBvc2l0aW9uIGRlY2xzU3RhcnQ7CiAgICAgSlNUZXh0UG9zaXRpb24gZGVjbHNFbmQ7CiAgICAg
VHJlZUV4cHJlc3Npb24gZGVjbHMgPSAwOwpAQCAtMTI4MCwxMiArMTI4MSwxMiBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRm9yU3RhdGVtZW50KAogICAgICAgICBnYXRoZXJMZXhpY2FsVmFyaWFibGVzSWZOZWNlc3Nh
cnkoKTsKICAgICAgICAgVHJlZVN0YXRlbWVudCByZXN1bHQ7CiAgICAgICAgIGlmIChpc09mRW51
bWVyYXRpb24pCi0gICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvck9mTG9vcChs
b2NhdGlvbiwgZm9ySW5UYXJnZXQsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2Nh
dGlvbiwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCAqbGV4aWNhbFZhcmlhYmxlcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvck9mTG9vcChsb2NhdGlvbiwgZm9y
SW5UYXJnZXQsIGV4cHIsIHN0YXRlbWVudCwgZGVjbExvY2F0aW9uLCBkZWNsc1N0YXJ0LCBpbkxv
Y2F0aW9uLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFyaWFibGVzKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNWYXJEZWNsYXJhdG9uICYmIGZvcklu
SW5pdGlhbGl6ZXIpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVGb3JJ
bkxvb3AobG9jYXRpb24sIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9j
YXRpb24sIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSwgKmxleGljYWxWYXJpYWJsZXMpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9u
LCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRlY2xzU3RhcnQsIGluTG9j
YXRpb24sIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSwgKmxleGljYWxWYXJpYWJsZXMpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRl
Rm9ySW5Mb29wKGxvY2F0aW9uLCBmb3JJblRhcmdldCwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0
YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFy
aWFibGVzKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvckluTG9v
cChsb2NhdGlvbiwgZm9ySW5UYXJnZXQsIGV4cHIsIHN0YXRlbWVudCwgZGVjbExvY2F0aW9uLCBk
ZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhp
Y2FsVmFyaWFibGVzKTsKICAgICAgICAgfQogICAgICAgICBwb3BMZXhpY2FsU2NvcGVJZk5lY2Vz
c2FyeSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM3MiwxNyArMTM3MywxNyBAQCBl
bnVtZXJhdGlvbkxvb3A6CiAgICAgaWYgKHBhdHRlcm4pIHsKICAgICAgICAgQVNTRVJUKCFkZWNs
cyk7CiAgICAgICAgIGlmIChpc09mRW51bWVyYXRpb24pCi0gICAgICAgICAgICByZXN1bHQgPSBj
b250ZXh0LmNyZWF0ZUZvck9mTG9vcChsb2NhdGlvbiwgcGF0dGVybiwgZXhwciwgc3RhdGVtZW50
LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCAqbGV4
aWNhbFZhcmlhYmxlcyk7CisgICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZvck9m
TG9vcChsb2NhdGlvbiwgcGF0dGVybiwgZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRl
Y2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2Fs
VmFyaWFibGVzKTsKICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQu
Y3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBwYXR0ZXJuLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xz
U3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFy
aWFibGVzKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxv
Y2F0aW9uLCBwYXR0ZXJuLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xMb2NhdGlvbiwgZGVjbHNTdGFy
dCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSwgKmxleGljYWxWYXJpYWJs
ZXMpOwogCiAgICAgICAgIHBvcExleGljYWxTY29wZUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChpc09mRW51bWVyYXRpb24pCi0gICAgICAgIHJl
c3VsdCA9IGNvbnRleHQuY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9uLCBkZWNscywgZXhwciwgc3Rh
dGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
LCAqbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9y
T2ZMb29wKGxvY2F0aW9uLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRl
Y2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2Fs
VmFyaWFibGVzKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9y
SW5Mb29wKGxvY2F0aW9uLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNs
c0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lLCAqbGV4aWNhbFZhcmlhYmxlcyk7Cisg
ICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBkZWNscywg
ZXhwciwgc3RhdGVtZW50LCBkZWNsTG9jYXRpb24sIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHBy
RW5kLCBzdGFydExpbmUsIGVuZExpbmUsICpsZXhpY2FsVmFyaWFibGVzKTsKICAgICBwb3BMZXhp
Y2FsU2NvcGVJZk5lY2Vzc2FyeSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDQ2ZmE2ZjEuLjcxMDI0
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBA
IC0yMzgsOCArMjM4LDggQEAgcHVibGljOgogICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVu
dFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9
CiAgICAgaW50IGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgVmFyaWFibGVFbnZpcm9ubWVudCYpIHsgcmV0dXJuIFN0YXRl
bWVudFJlc3VsdDsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIFZhcmlhYmxlRW52
aXJvbm1lbnQmKSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9y
T2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBWYXJpYWJsZUVudmlyb25tZW50JikgeyByZXR1cm4gU3RhdGVtZW50UmVz
dWx0OyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCwgaW50LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgVmFyaWFibGVFbnZpcm9ubWVudCYpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQor
ICAgIGludCBjcmVhdGVGb3JPZkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIFZh
cmlhYmxlRW52aXJvbm1lbnQmKSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBpbnQg
Y3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gU3Rh
dGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZURlY2xhcmF0aW9uU3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3Vs
dDsgfQogICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwppbmRleCAzODRhM2M1Li5lZDAyOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwzNyBAQAogMjAxNi0xMC0xMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCisgICAgICAgIEVtaXQgRGVidWdIb29rcyB1bmlmb3JtbHkgd2l0aCBw
YXVzZSBsb2NhdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgc2VwYXJhdGUgcGF1c2UgbG9jYXRpb25z
IGFuZCBvcF9kZWJ1ZyBlbWl0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50
ZXh0RWRpdG9yRXhlY3V0aW9uSGlnaGxpZ2h0UmFuZ2UpOgorICAgICAgICBXaGVuIHBhdXNpbmcg
b24gdGhlIHZhcmlhYmxlIGFzc2lnbm1lbnQgaW5zaWRlIGZvci4ub2YgYW5kIGZvci4uaW4gZG9u
J3QganVzdAorICAgICAgICBoaWdobGlnaHQgInZhciBmb28iIGJ1dCBpbmNsdWRlIHRoZSByaWdo
dCBoYW5kIHNpZGUgInZhciBmb28gaW4gLi4uIiBvcgorICAgICAgICAidmFyIGZvbyBvZiAuLi4i
LgorCisyMDE2LTEwLTExICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogV2hvbGUgcHJvZ3JhbSBzb21ldGltZXMgaGlnaGxpZ2h0
ZWQgaW5zdGVhZCBvZiBqdXN0IGZpcnN0IHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yODcyMzE2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRleHRFZGl0
b3JFeGVjdXRpb25IaWdobGlnaHRSYW5nZSk6CisgICAgICAgIEF2b2lkIGhpZ2hsaWdodGluZyB0
aGUgZW50aXJlIHByb2dyYW0gYnkgc2tpcHBpbmcgYSBQcm9ncmFtIHR5cGUgTm9kZS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZS5zZXRFeGVjdXRpb25MaW5lQW5kQ29sdW1uKToK
KyAgICAgICAgQXZvaWQgdW5uZWNlc3Nhcnkgd29yayBiZWZvcmUgY29udGVudCBoYXMgbG9hZGVk
LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUuY3VycmVudFBv
c2l0aW9uVG9PcmlnaW5hbE9mZnNldCk6CisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IGluZGly
ZWN0aW9uIHRvIGdldCB0aGUgQ29kZU1pcnJvciBlZGl0b3IuCisKKzIwMTYtMTAtMTEgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZW1vdmUgbGluZSBoaWdobGlnaHQgb24gcHJpbWFyeSBleGVjdXRpb24gbGluZSB3aGlsZSBz
dGVwcGluZyBiZWNhdXNlIGl0IGlzIGRpc3RyYWN0aW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyOTQKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI4NzIxMTc2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwppbmRleCA2MjkwYzRm
Li5hNzgyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpAQCAtMTIzNSwx
MiArMTIzNSwyMCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBT
b3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAvLyBGaW5kIGEgbm9kZSBzdGFydGluZyBhdCB0aGlzIG9mZnNldC4KKyAgICAg
ICAgICAgIC8vIEF2b2lkIGhpZ2hsaWdodGluZyB0aGUgZW50aXJlIHByb2dyYW0gaWYgdGhpcyBp
cyB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IHN0YXRlbWVudC4KKyAgICAgICAgICAgIC8vIFNwZWNp
YWwgY2FzZSB0aGUgYXNzaWdubWVudCBleHByZXNzaW9uIGluc2lkZSBvZiBhIGZvci4ub2YgYW5k
IGZvci4uaW4gdG8gaGlnaGxpZ2h0IGEgbGFyZ2VyIHJhbmdlLgogICAgICAgICAgICAgZm9yIChs
ZXQgbm9kZSBvZiBub2RlcykgewogICAgICAgICAgICAgICAgIGxldCBzdGFydE9mZnNldCA9IG5v
ZGUucmFuZ2VbMF07Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID09PSBvZmZzZXQp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPT09IG9mZnNldCAmJiBub2RlLnR5
cGUgIT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlByb2dyYW0pIHsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soY29udmVydFJhbmdlT2Zmc2V0c1RvU291cmNl
Q29kZU9mZnNldHMobm9kZS5yYW5nZSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZvckluU3RhdGVtZW50IHx8IG5vZGUu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRm9yT2ZTdGF0
ZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubGVmdC5yYW5nZVswXSA9PT0g
b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0UmFuZ2VP
ZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhbbm9kZS5sZWZ0LnJhbmdlWzBdLCBub2RlLnJpZ2h0
LnJhbmdlWzFdXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChzdGFy
dE9mZnNldCA+IG9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dEVkaXRvci5qcwppbmRleCAwZDAzM2Y2Li5iYTY0Y2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMK
QEAgLTMzNiw4ICszMzYsMTAgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAgdGhpcy5fZXhlY3V0aW9u
TGluZU51bWJlciA9IGxpbmVOdW1iZXI7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbHVtbk51
bWJlciA9IGNvbHVtbk51bWJlcjsKIAotICAgICAgICB0aGlzLl91cGRhdGVFeGVjdXRpb25MaW5l
KCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUV4ZWN1dGlvblJhbmdlSGlnaGxpZ2h0KCk7CisgICAg
ICAgIGlmICghdGhpcy5faW5pdGlhbFN0cmluZ05vdFNldCkgeworICAgICAgICAgICAgdGhpcy5f
dXBkYXRlRXhlY3V0aW9uTGluZSgpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXhlY3V0aW9u
UmFuZ2VIaWdobGlnaHQoKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFN0aWxsIGRpc3BhdGNo
IHRoZSBldmVudCBldmVuIGlmIHRoZSBudW1iZXIgZGlkbid0IGNoYW5nZS4gVGhlIGV4ZWN1dGlv
biBzdGF0ZSBzdGlsbAogICAgICAgICAvLyBjb3VsZCBoYXZlIGNoYW5nZWQgKGUuZy4gY29udGlu
dWluZyBpbiBhIGxvb3Agd2l0aCBhIGJyZWFrcG9pbnQgaW5zaWRlKS4KQEAgLTcwMyw3ICs3MDUs
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuVmlldwogICAgICAgICBpZiAodGhpcy5fZm9ybWF0dGVyU291cmNlTWFwKQog
ICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5fZm9ybWF0dGVyU291cmNlTWFwLmZvcm1hdHRlZFRv
T3JpZ2luYWxPZmZzZXQocG9zaXRpb24ubGluZSwgcG9zaXRpb24uY2gpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLl9jb2Rl
TWlycm9yLmdldERvYygpLmluZGV4RnJvbVBvcyhwb3NpdGlvbik7CisgICAgICAgICAgICBvZmZz
ZXQgPSB0aGlzLl9jb2RlTWlycm9yLmdldERvYygpLmluZGV4RnJvbVBvcyhwb3NpdGlvbik7CiAK
ICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9Cg==
</data>
<flag name="review"
          id="314513"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="314514"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>