<?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>220221</bug_id>
          
          <creation_ts>2021-01-01 11:50:42 -0800</creation_ts>
          <short_desc>Improve error message for uninitialized |this| in derived constructor</short_desc>
          <delta_ts>2021-01-02 11:29:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716956</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-01-01 11:50:42 -0800</bug_when>
    <thetext>Improve error message for uninitialized |this| in derived constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716957</commentid>
    <comment_count>1</comment_count>
      <attachid>416882</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-01-01 11:53:51 -0800</bug_when>
    <thetext>Created attachment 416882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716962</commentid>
    <comment_count>2</comment_count>
      <attachid>416882</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-01 13:27:48 -0800</bug_when>
    <thetext>Comment on attachment 416882
Patch

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

We found that our bytecode generation is too generic, and emitting many bytecodes. This prevents us from performing inlining in https://bugs.webkit.org/show_bug.cgi?id=220204.
So, can you change this without increasing bytecode size?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2852
&gt; +void BytecodeGenerator::emitTDZCheckForThisRegisterInDerivedConstructor()
&gt; +{
&gt; +    Ref&lt;Label&gt; thisIsNotInTDZ = newLabel();
&gt; +    emitJumpIfFalse(emitIsEmpty(newTemporary(), thisRegister()), thisIsNotInTDZ.get());
&gt; +    emitThrowReferenceError(&quot;&apos;super()&apos; must be called in derived constructor before accessing |this| or returning non-object.&quot;_s);
&gt; +    emitLabel(thisIsNotInTDZ.get());

The problem is that,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716963</commentid>
    <comment_count>3</comment_count>
      <attachid>416882</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-01 13:30:13 -0800</bug_when>
    <thetext>Comment on attachment 416882
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2852
&gt;&gt; +    emitLabel(thisIsNotInTDZ.get());
&gt; 
&gt; The problem is that,

The problem is that, previously, it was check_tdz. But now, it is more bytecodes. This will cause performance/memory-usage problem because it increases bytecode size.
I think that,

1. Since this is super rare case in practice, we should not emit bytecodes much for that pattern.
2. I think we should switch to the different solution: we should throw appropriate error message ad-hocly when we throw an error. Like, when we failed with check_tdz, we should investigate what causes it by checking bytecode stream / source code etc. and throws appropriate error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716964</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-01-01 13:33:19 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; The problem is that, previously, it was check_tdz. But now, it is more
&gt; bytecodes. This will cause performance/memory-usage problem because it
&gt; increases bytecode size.

Yes, there is an increase in bytecode size, but only for derived constructors, which are super rare.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716965</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-01-01 13:36:34 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #4)
&gt; (In reply to Yusuke Suzuki from comment #3)
&gt; &gt; The problem is that, previously, it was check_tdz. But now, it is more
&gt; &gt; bytecodes. This will cause performance/memory-usage problem because it
&gt; &gt; increases bytecode size.
&gt; 
&gt; Yes, there is an increase in bytecode size, but only for derived
&gt; constructors, which are super rare.

Please see BytecodeGenerator::ensureThis(): emitTDZCheckForThisRegisterInDerivedConstructor(), that emits additional bytecodes, is guarded by `if (constructorKind() == ConstructorKind::Extends || isDerivedConstructorContext())`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716970</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-01-01 20:04:54 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #5)
&gt; Please see BytecodeGenerator::ensureThis():
&gt; emitTDZCheckForThisRegisterInDerivedConstructor(), that emits additional
&gt; bytecodes, is guarded by `if (constructorKind() == ConstructorKind::Extends
&gt; || isDerivedConstructorContext())`.

Discussed this on Slack: we should avoid having super rare things, like TDZ errors, in bytecode, and use slow paths instead. Emitting many bytecodes for error checking can penalize CodeBlock heuristics, telling DFG / FTL that the function is too large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716971</commentid>
    <comment_count>7</comment_count>
      <attachid>416887</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-01-01 20:05:05 -0800</bug_when>
    <thetext>Created attachment 416887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717002</commentid>
    <comment_count>8</comment_count>
      <attachid>416887</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-02 11:23:12 -0800</bug_when>
    <thetext>Comment on attachment 416887
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717003</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-02 11:28:08 -0800</bug_when>
    <thetext>Committed r271120: &lt;https://trac.webkit.org/changeset/271120&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416887.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717004</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-02 11:29:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/72771016&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416882</attachid>
            <date>2021-01-01 11:53:51 -0800</date>
            <delta_ts>2021-01-01 20:05:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220221-20210101215349.patch</filename>
            <type>text/plain</type>
            <size>33274</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzExMTcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTAxLTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9yIHVuaW5pdGlh
bGl6ZWQgfHRoaXN8IGluIGRlcml2ZWQgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDIyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9u
cy1sZXhpY2FsLWJpbmRpbmctaW4tY2xhc3MuanM6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWFy
cm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanM6CisgICAgICAgICogc3RyZXNz
L2NsYXNzLWRlcml2ZWQtZnJvbS1udWxsLmpzOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
ZXZhbC10aGlzLmpzOgorICAgICAgICAqIHN0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MtdGR6
LmpzOgorCiAyMDIwLTEyLTMxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eSgpIGZhaWxzIHRvIGRlbGV0
ZSBhIG5vbi1leGlzdGVudCAicHJvdG90eXBlIiBwcm9wZXJ0eQpJbmRleDogSlNUZXN0cy9zdHJl
c3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYmluZGluZy1pbi1jbGFzcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1i
aW5kaW5nLWluLWNsYXNzLmpzCShyZXZpc2lvbiAyNzExMTYpCisrKyBKU1Rlc3RzL3N0cmVzcy9h
c3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1iaW5kaW5nLWluLWNsYXNzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTQsNyArMjU0LDcgQEAgZnVuY3Rpb24gY2hlY2tURFpEdXJpbmdDcmVhdGUo
a2xhc3MpIHsKICAgICAgICAgLy8gV2UgZG8gbm90IGNhcmUgYWJvdXQgdGhpcyBlcnJvcgogICAg
IH0KICAgICBkcmFpbk1pY3JvdGFza3MoKTsKLSAgICBjb25zdCBlcnJvciA9IGFzeW5jRXJyb3Iu
ZXJyb3IgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvciAmJiBhc3luY0Vycm9yLmVycm9yLnRvU3Ry
aW5nKCkgPT09ICdSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZh
cmlhYmxlLic7CisgICAgY29uc3QgZXJyb3IgPSBhc3luY0Vycm9yLmVycm9yLnRvU3RyaW5nKCkg
PT09IGBSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQg
Y29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmpl
Y3QuYDsKICAgICBpZiAoIWVycm9yKSB0aHJvdyBuZXcgRXJyb3IoJ1REWiBlcnJvciBpcyBleHBl
Y3RlZCwgYnV0IGFwcGVhcmVkOicgKyBhc3luY0Vycm9yLmVycm9yKTsKIH0KIApJbmRleDogSlNU
ZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4
aWNhbC1zdXBlci1iaW5kaW5nLmpzCShyZXZpc2lvbiAyNzExMTYpCisrKyBKU1Rlc3RzL3N0cmVz
cy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgZHJhaW5NaWNyb3Rhc2tzKCk7CiBzaG91bGRCZShj
aGlsZEE0LCB1bmRlZmluZWQpOwogc2hvdWxkQmUodmFsdWUsICdhYmMnKTsKIHNob3VsZEJlKGVy
cm9yLCB1bmRlZmluZWQpOwotc2hvdWxkQmUoY2F0Y2hFcnJvci50b1N0cmluZygpLCAnUmVmZXJl
bmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4nKTsKK3Nob3Vs
ZEJlKGNhdGNoRXJyb3IudG9TdHJpbmcoKSwgYFJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVz
dCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlz
fCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC5gKTsKIAogY2F0Y2hFcnJvciA9IHVuZGVmaW5lZDsK
IGVycm9yID0gdW5kZWZpbmVkOyAKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NsYXNzLWRlcml2ZWQt
ZnJvbS1udWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NsYXNzLWRlcml2ZWQt
ZnJvbS1udWxsLmpzCShyZXZpc2lvbiAyNzExMTYpCisrKyBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1k
ZXJpdmVkLWZyb20tbnVsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBmdW5j
dGlvbiB0ZXN0MSgpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9CiAgICAg
fQotICAgIGFzc2VydFRocm93KCgpPT4obmV3IEUpLCAnUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBh
Y2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4nKTsKKyAgICBhc3NlcnRUaHJvdygoKT0+KG5l
dyBFKSwgYFJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZl
ZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9i
amVjdC5gKTsKICAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihFLnByb3RvdHlwZSkg
PT09IG51bGwpOwogfQogdGVzdCh0ZXN0MSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgZnVuY3Rpb24g
dGVzdDYoKSB7CiAgICAgY2xhc3MgRSBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3RydWN0b3IoKSB7
IGxldCByZXQgPSB0aGlzOyByZXR1cm4gcmV0OyB9IH0KICAgICBjbGFzcyBGIGV4dGVuZHMganNO
dWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIDI1OyB9IH0KICAgICBjbGFzcyBHIGV4dGVu
ZHMganNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfSB9Ci0gICAgYXNzZXJ0VGhy
b3coKCkgPT4gUmVmbGVjdC5jb25zdHJ1Y3QoRSwgW10sIEQpLCAnUmVmZXJlbmNlRXJyb3I6IENh
bm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4nKTsKKyAgICBhc3NlcnRUaHJvdygo
KSA9PiBSZWZsZWN0LmNvbnN0cnVjdChFLCBbXSwgRCksIGBSZWZlcmVuY2VFcnJvcjogJ3N1cGVy
KCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2lu
ZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuYCk7CiAgICAgYXNzZXJ0VGhyb3coKCkg
PT4gUmVmbGVjdC5jb25zdHJ1Y3QoRiwgW10sIEQpLCAnVHlwZUVycm9yOiBDYW5ub3QgcmV0dXJu
IGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3Mu
Jyk7CiAKICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1ldmFsLXRoaXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWV2YWwtdGhpcy5qcwkocmV2aXNpb24gMjcxMTE2KQorKysgSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWV2YWwtdGhpcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBB
IGV4dGVuZHMgQiB7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBuZXcgQSgpOwotfSwgYFJl
ZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7Cit9
LCBgUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNv
bnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0
LmApOwogCiBjbGFzcyBDIHsKICAgICAqZ2VuZXJhdG9yKCkKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L3N1cGVyLXByb3BlcnR5LWFjY2Vzcy10ZHouanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJl
c3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLXRkei5qcwkocmV2aXNpb24gMjcxMTE2KQorKysgSlNU
ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLXRkei5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvd1REWihmKSB7CiAgICAgICAgIGYo
KTsKICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBSZWZlcmVu
Y2VFcnJvcik7Ci0gICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIpOworICAgICAgICBhc3Nl
cnQoZS50b1N0cmluZygpID09PSBgUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNh
bGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJl
dHVybmluZyBub24tb2JqZWN0LmApOwogICAgICAgICB0aHJldyA9IHRydWU7CiAgICAgfQogICAg
IGFzc2VydCh0aHJldyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3
MTExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyOCBAQAorMjAyMS0wMS0wMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciB1bmluaXRp
YWxpemVkIHx0aGlzfCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAyMjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBjbGFzcyBjb25zdHJ1Y3RvcnMgcGVy
Zm9ybSBgcmV0dXJuIHRoaXM7YCBieSBkZWZhdWx0LCBhbmQgZGVyaXZlZAorICAgICAgICBjb25z
dHJ1Y3RvcnMgcmVxdWlyZSBgc3VwZXIoKWAgdG8gYmUgY2FsbGVkIGJlZm9yZSB8dGhpc3wgYWNj
ZXNzLCByZWd1bGFyCisgICAgICAgIFREWiBlcnJvciBtZXNzYWdlIGlzIHF1aXRlIGNvbmZ1c2lu
ZywgZ2l2ZW4gdGhlIGZvbGxvd2luZyBjb2RlOgorCisgICAgICAgICAgICBgbmV3IChjbGFzcyBl
eHRlbmRzIE9iamVjdCB7IGNvbnN0cnVjdG9yKCkgeyB9IH0pO2AKKworICAgICAgICBUaGlzIHBh
dGNoIGludHJvZHVjZXMgYSBoZWxwZXIsIHdoaWNoIGJlaGF2ZXMgaWRlbnRpY2FsIHRvIG9wX2No
ZWNrX3RkeiwKKyAgICAgICAgcHJvdmlkaW5nIGEgaGVscGZ1bCBlcnJvciBtZXNzYWdlIG9uIHx0
aGlzfCBhY2Nlc3MgYW5kIHJldHVybiBzdGF0ZW1lbnQKKyAgICAgICAgaW4gZGVyaXZlZCBjb25z
dHJ1Y3RvcnMgb25seS4KKworICAgICAgICBCb3RoIFY4IGFuZCBTcGlkZXJNb25rZXkgaGF2ZSBz
aW1pbGFyIGVycm9yIG1lc3NhZ2VzLCBtZW50aW9uaW5nIGBzdXBlcigpYC4KKworICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0VERaQ2hlY2tGb3JUaGlzUmVnaXN0ZXJJbkRlcml2ZWRDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuc3VyZVRoaXMpOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorCiAyMDIwLTEyLTMxICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBKU0Z1bmN0aW9uOjpkZWxl
dGVQcm9wZXJ0eSgpIGZhaWxzIHRvIGRlbGV0ZSBhIG5vbi1leGlzdGVudCAicHJvdG90eXBlIiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3MTExNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODQ0LDYgKzI4NDQsMTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFREWkNoZWNrKFJlZwogICAgIE9wQ2hlY2tUZHo6OmVtaXQodGhpcywgdGFyZ2V0KTsKIH0K
IAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNrRm9yVGhpc1JlZ2lzdGVySW5E
ZXJpdmVkQ29uc3RydWN0b3IoKQoreworICAgIFJlZjxMYWJlbD4gdGhpc0lzTm90SW5URFogPSBu
ZXdMYWJlbCgpOworICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0SXNFbXB0eShuZXdUZW1wb3Jhcnko
KSwgdGhpc1JlZ2lzdGVyKCkpLCB0aGlzSXNOb3RJblREWi5nZXQoKSk7CisgICAgZW1pdFRocm93
UmVmZXJlbmNlRXJyb3IoIidzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0
cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJf
cyk7CisgICAgZW1pdExhYmVsKHRoaXNJc05vdEluVERaLmdldCgpKTsKK30KKwogYm9vbCBCeXRl
Y29kZUdlbmVyYXRvcjo6bmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9URFpTdGFjay5zaXplKCk7IGktLTspIHsKQEAgLTM0
NjEsOCArMzQ2OSwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVy
CiAgICAgICAgIGJvb2wgaXNEZXJpdmVkID0gY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpFeHRlbmRzOwogICAgICAgICBib29sIHNyY0lzVGhpcyA9IHNyYy0+aW5kZXgoKSA9
PSBtX3RoaXNSZWdpc3Rlci5pbmRleCgpOwogCi0gICAgICAgIGlmIChpc0Rlcml2ZWQgJiYgKHNy
Y0lzVGhpcyB8fCBmcm9tID09IFJldHVybkZyb206OkZpbmFsbHkpKQotICAgICAgICAgICAgZW1p
dFREWkNoZWNrKHNyYyk7CisgICAgICAgIGlmIChpc0Rlcml2ZWQpIHsKKyAgICAgICAgICAgIGlm
IChzcmNJc1RoaXMpCisgICAgICAgICAgICAgICAgZW1pdFREWkNoZWNrRm9yVGhpc1JlZ2lzdGVy
SW5EZXJpdmVkQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGZyb20gPT0gUmV0
dXJuRnJvbTo6RmluYWxseSkKKyAgICAgICAgICAgICAgICBlbWl0VERaQ2hlY2soc3JjKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIGlmICghc3JjSXNUaGlzIHx8IGZyb20gPT0gUmV0dXJuRnJvbTo6
RmluYWxseSkgewogICAgICAgICAgICAgUmVmPExhYmVsPiBpc09iamVjdExhYmVsID0gbmV3TGFi
ZWwoKTsKQEAgLTM0NzMsNyArMzQ4NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmV0dXIKICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmlu
ZWQobmV3VGVtcG9yYXJ5KCksIHNyYyksIGlzVW5kZWZpbmVkTGFiZWwuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3Qg
dHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLiIpOwogICAgICAgICAg
ICAgICAgIGVtaXRMYWJlbChpc1VuZGVmaW5lZExhYmVsLmdldCgpKTsKLSAgICAgICAgICAgICAg
ICBlbWl0VERaQ2hlY2soJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBlbWl0VERa
Q2hlY2tGb3JUaGlzUmVnaXN0ZXJJbkRlcml2ZWRDb25zdHJ1Y3RvcigpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgT3BSZXQ6OmVtaXQodGhpcywgJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAg
ICAgICAgIGVtaXRMYWJlbChpc09iamVjdExhYmVsLmdldCgpKTsKQEAgLTQ1MTIsNyArNDUyNCw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbnN1cmVUaGkKICAgICAgICAgaWYg
KChuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBpc1N1cGVyQ2FsbFVzZWRJ
bklubmVyQXJyb3dGdW5jdGlvbigpKSB8fCBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkKICAgICAgICAgICAgIGVt
aXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAKLSAgICAg
ICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKKyAgICAgICAgZW1pdFREWkNoZWNrRm9y
VGhpc1JlZ2lzdGVySW5EZXJpdmVkQ29uc3RydWN0b3IoKTsKICAgICB9CiAKICAgICByZXR1cm4g
dGhpc1JlZ2lzdGVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNzExMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc2MCw2ICs3NjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3Qp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZO
ZWVkZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2so
UmVnaXN0ZXJJRCogdGFyZ2V0KTsKKyAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2tGb3JUaGlzUmVn
aXN0ZXJJbkRlcml2ZWRDb25zdHJ1Y3RvcigpOwogICAgICAgICBib29sIG5lZWRzVERaQ2hlY2so
Y29uc3QgVmFyaWFibGUmKTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeShj
b25zdCBWYXJpYWJsZSYsIFJlZ2lzdGVySUQqIHRhcmdldCwgUmVnaXN0ZXJJRCogc2NvcGUpOwog
ICAgICAgICB2b2lkIGxpZnRURFpDaGVja0lmUG9zc2libGUoY29uc3QgVmFyaWFibGUmKTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI3MTExNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAxLTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9y
IHVuaW5pdGlhbGl6ZWQgfHRoaXN8IGluIGRlcml2ZWQgY29uc3RydWN0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDIyMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1z
dXBlcmNhbGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3VwZXJw
cm9wZXJ0eS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LWV4dGVuZHMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLmpz
OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHku
anM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qczoKKwog
MjAyMC0xMi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
ZWdhY3kgTGluZSBMYXlvdXRdIFJlbW92ZSB1bm5lY2Vzc2FyeSAndmVydGljYWwtYWxpZ246IG1p
ZGRsZScgaW50ZWdyYWwgcm91bmRpbmcKSW5kZXg6IExheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tc3VwZXJjYWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3MTExNikKKysr
IExheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQCBQQVNTIGluZGV4T2ZuZXN0ZWRBcnJvd0luU3Rh
Y2tFcnJvciA+IC0xCiBQQVNTIGluZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3RhY2tF
cnJvciA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignYXJyb3dJbkNoaWxkQ29uc3RydWN0b3In
LCBpbmRleE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEg
aXMgdHJ1ZQogUEFTUyBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciA+IC0xICYmIGVycm9y
U3RhY2suaW5kZXhPZignQ2hpbGRDbGFzcycsIGluZGV4T2ZDaGlsZENsYXNzSW5TdGFja0Vycm9y
ICsgMSkgPT09IC0xIGlzIHRydWUKIFBBU1MgKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgKChhID0gc3VwZXIoKSk9Pnt9KSgpIH0gfSkuaWQgaXMgdmFsdWUKLVBBU1MgKG5l
dyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gdGhpcyk9PnsgcmV0dXJu
IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nl
c3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCi1QQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsg
Y29uc3RydWN0b3IoKSB7ICgoYSA9IHRoaXMsIGI9c3VwZXIoKSk9PnsgcmV0dXJuIGE7IH0pKCkg
fSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0
aWFsaXplZCB2YXJpYWJsZS4uCitQQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0
b3IoKSB7ICgoYSA9IHRoaXMpPT57IHJldHVybiBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9u
IFJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25z
dHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4u
CitQQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHRoaXMs
IGI9c3VwZXIoKSk9PnsgcmV0dXJuIGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJl
bmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9y
IGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0Li4KIFBBU1Mg
KG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gbmV3LnRhcmdldCk9
PnsgcmV0dXJuIGE7IH0pKCk7IHN1cGVyKCk7IH0gfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CiBQQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IG5ldy50
YXJnZXQsIGI9c3VwZXIoKSk9PnsgcmV0dXJuIGE7IH0pKCkgfSB9KSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjcxMTE2KQorKysgTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAg
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNTIChuZXcgQigp
KS5nZXRWYWx1ZVBhcmVudEZ1bmN0aW9uKCkgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyAobmV3IEMo
ZmFsc2UpKS52YWx1ZSBpcyBleHBlY3RlZFZhbHVlCi1QQVNTIChuZXcgQyh0cnVlKSkgdGhyZXcg
ZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGUuLgorUEFTUyAobmV3IEModHJ1ZSkpIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJv
cjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3Jl
IGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuLgogUEFTUyBFLmdldFBh
cmVudFN0YXRpY1ZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyBmLnByb3AgaXMgZXhwZWN0
ZWRWYWx1ZSArICItIiArIGV4cGVjdGVkVmFsdWUKIFBBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFs
dWUgKyAiLSIgKyAibmV3LXZhbHVlIgpAQCAtMTQsMTQgKzE0LDE0IEBAIFBBU1MgKG5ldyBGKCkp
LmdlbkdldFBhcmVudFZhbHVlKCkubmV4dCgKIFBBU1MgKG5ldyBGKCkpLmdlbkdldFBhcmVudFZh
bHVlRGVlcEFycm93KCkubmV4dCgpLnZhbHVlIGlzIGV4cGVjdGVkVmFsdWUKIFBBU1MgKG5ldyBj
bGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIoKSwgYiA9IHN1cGVy
LmdldFZhbHVlKCkpPT57IHRoaXMuaWQgPSBiOyB9KSgpIH0gfSkuaWQgaXMgZXhwZWN0ZWRWYWx1
ZQogUEFTUyAobmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBl
cigpLCBiID0gbmV3LnRhcmdldCk9PnsgdGhpcy5uZXdUYXJnZXQgPSBiOyB9KSgpOyBleHBlY3Rl
ZE5ld1RhcmdldCA9IG5ldy50YXJnZXQ7fSB9KS5uZXdUYXJnZXQgaXMgZXhwZWN0ZWROZXdUYXJn
ZXQKLVBBU1MgKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3Vw
ZXIuZ2V0VmFsdWUoKSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24g
UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCi1Q
QVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdl
dFZhbHVlKCksIGI9c3VwZXIoKSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNl
cHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJs
ZS4uCi1QQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1
cGVyLnByb3ApPT57IHJldHVybiBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5j
ZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuLgotUEFTUyAobmV3
IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5wcm9wLCBiPXN1
cGVyKCkpPT57IHJldHVybiBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVy
cm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuLgotUEFTUyAobmV3IGNs
YXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSAoc3VwZXIucHJvcCA9ICJ2YWx1
ZSIpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KLVBBU1MgKG5ldyBj
bGFzcyBleHRlbmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gKHN1cGVyLnByb3AgPSAidmFs
dWUiKSwgYj1zdXBlcigpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlv
biBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4K
LVBBU1MgKG5ldyBjbGFzcyBleHRlbmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIu
Z2VuR2V0UGFyZW50VmFsdWUoKS5uZXh0KCkudmFsdWUpPT57IHRoaXMuaWQgPSBhOyB9KSgpIH0g
fSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlh
bGl6ZWQgdmFyaWFibGUuLgotUEFTUyAobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9y
KCkgeyAoKGEgPSBzdXBlci5nZW5HZXRQYXJlbnRWYWx1ZSgpLm5leHQoKS52YWx1ZSwgYj1zdXBl
cigpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KK1BBU1MgKG5ldyBj
bGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIuZ2V0VmFsdWUoKSk9
PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6
ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBh
Y2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0Li4KK1BBU1MgKG5ldyBjbGFz
cyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIuZ2V0VmFsdWUoKSwgYj1z
dXBlcigpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVu
Y2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3Ig
YmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuLgorUEFTUyAo
bmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5wcm9wKT0+
eyByZXR1cm4gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogJ3N1
cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vz
c2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuLgorUEFTUyAobmV3IGNsYXNzIGV4
dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5wcm9wLCBiPXN1cGVyKCkpPT57
IHJldHVybiBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiAnc3Vw
ZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNz
aW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4uCitQQVNTIChuZXcgY2xhc3MgZXh0
ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IChzdXBlci5wcm9wID0gInZhbHVlIikpPT57
IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiAn
c3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNj
ZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4uCitQQVNTIChuZXcgY2xhc3Mg
ZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IChzdXBlci5wcm9wID0gInZhbHVlIiks
IGI9c3VwZXIoKSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVm
ZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVj
dG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0Li4KK1BB
U1MgKG5ldyBjbGFzcyBleHRlbmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIuZ2Vu
R2V0UGFyZW50VmFsdWUoKS5uZXh0KCkudmFsdWUpPT57IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSkg
dGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQg
aW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5p
bmcgbm9uLW9iamVjdC4uCitQQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3Io
KSB7ICgoYSA9IHN1cGVyLmdlbkdldFBhcmVudFZhbHVlKCkubmV4dCgpLnZhbHVlLCBiPXN1cGVy
KCkpPT57IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVy
cm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZv
cmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4uCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3Rz
L2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
MTExNikKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBQQVNTIE9iamVjdC5nZXRQcm90b3R5
cGVPZigoY2xhc3MgZXh0ZW5kCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyB1bmRlZmluZWQgeyBj
b25zdHJ1Y3RvciAoKSB7IHRoaXMgfSB9KTo6OlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMg
bm90IGEgY29uc3RydWN0b3IuCiBQQVNTIHggPSB1bmRlZmluZWQ7IG5ldyAoY2xhc3MgZXh0ZW5k
cyB4IHsgY29uc3RydWN0b3IgKCkgeyBzdXBlcigpOyB9IH0pOjo6VHlwZUVycm9yOiBUaGUgc3Vw
ZXJjbGFzcyBpcyBub3QgYSBjb25zdHJ1Y3Rvci4KIFBBU1MgY2xhc3MgeCB7fTsgbmV3IChjbGFz
cyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiBuZXcgeDsgfSB9KSBpbnN0
YW5jZW9mIHgKLVBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7
IHRoaXM7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVk
IHZhcmlhYmxlLgorUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgp
IHsgdGhpczsgfSB9KTo6OlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQg
aW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5p
bmcgbm9uLW9iamVjdC4KIFBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3Rv
ciAoKSB7IHN1cGVyKCk7IH0gfSk6OjpUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0
cnVjdG9yIChldmFsdWF0aW5nICdzdXBlcigpJykKIFBBU1MgeCA9IHt9OyBuZXcgKGNsYXNzIGV4
dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgpIHsgcmV0dXJuIHggfSB9KTo6OngKIFBBU1MgeSA9
IDEyOyBjbGFzcyBDIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgpIHsgcmV0dXJuIHk7IH0g
fTsgbmV3IEM7Ojo6VHlwZUVycm9yOiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGlu
IHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3MTExNikK
KysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEEKIFBBU1MgKG5ldyBCYXNlKSBpbnN0YW5jZW9mIEJhc2UKIFBBU1MgKG5ldyBEZXJp
dmVkKSBpbnN0YW5jZW9mIERlcml2ZWQKIFBBU1MgKG5ldyBEZXJpdmVkV2l0aEV2YWwpIGluc3Rh
bmNlb2YgRGVyaXZlZFdpdGhFdmFsCi1QQVNTIChuZXcgRGVyaXZlZFdpdGhFdmFsKHRydWUpKTo6
OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCitQ
QVNTIChuZXcgRGVyaXZlZFdpdGhFdmFsKHRydWUpKTo6OlJlZmVyZW5jZUVycm9yOiAnc3VwZXIo
KScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5n
IHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4KIFBBU1MgKG5ldyBEZXJpdmVkKS5jYWxs
QmFzZU1ldGhvZCgpOjo6YmFzZU1ldGhvZFZhbHVlCiBQQVNTIHggPSAobmV3IERlcml2ZWQpLmNh
bGxCYXNlTWV0aG9kOyB4KCk6OjpiYXNlTWV0aG9kVmFsdWUKIFBBU1MgKG5ldyBEZXJpdmVkKS5j
YWxsQmFzZU1ldGhvZEluR2V0dGVyOjo6YmFzZU1ldGhvZFZhbHVlCkBAIC0zMCwxNyArMzAsMTcg
QEAgUEFTUyAobmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyBldmFsKAogUEFTUyAobmV3IChj
bGFzcyB7IGNvbnN0cnVjdG9yKCkgeyB2YXIgYXJyID0gKCkgPT4gZXZhbCgnc3VwZXIucHJvcGVy
dHkgPSAiQUJDIicpOyBhcnIoKTsgfSB9KSkucHJvcGVydHkgPT09ICJBQkMiCiBQQVNTIG5ldyAo
Y2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSB9KSBpbnN0YW5jZW9m
IE9iamVjdAogUEFTUyBuZXcgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9IH0p
IGluc3RhbmNlb2YgT2JqZWN0Ci1QQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3Ry
dWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KTo6OlJlZmVyZW5jZUVycm9yOiBDYW5ub3Qg
YWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCitQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBC
YXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KTo6OlJlZmVyZW5jZUVy
cm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZv
cmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4KIFBBU1MgbmV3IChj
bGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVm
aW5lZCB9IH0pIGluc3RhbmNlb2YgT2JqZWN0CiBQQVNTIHggPSB7IH07IG5ldyAoY2xhc3MgZXh0
ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB4IH0gfSk7Ojo6eAogUEFTUyB4IGlu
c3RhbmNlb2YgQmFzZQotUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9y
KCkgeyB9IH0pOjo6UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2
YXJpYWJsZS4KK1BBU1MgbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsg
fSB9KTo6OlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZl
ZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9i
amVjdC4KIFBBU1MgbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIDE7IH0gfSk6OjpUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUg
aW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4KLVBBU1MgbmV3IChjbGFzcyBl
eHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pOjo6UmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4KK1BBU1Mg
bmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5l
ZCB9IH0pOjo6UmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJp
dmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24t
b2JqZWN0LgogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBz
dXBlcigpOyByZXR1cm4gdW5kZWZpbmVkIH0gfSk6OjpUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5v
dCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdzdXBlcigpJykKIFBBU1MgeCA9IHsgfTsgbmV3
IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHggfSB9KTs6Ojp4
CiBQQVNTIHggaW5zdGFuY2VvZiBPYmplY3QKLVBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwg
eyBjb25zdHJ1Y3RvcigpIHsgfSB9KTo6OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVu
aW5pdGlhbGl6ZWQgdmFyaWFibGUuCitQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29u
c3RydWN0b3IoKSB7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2Fs
bGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0
dXJuaW5nIG5vbi1vYmplY3QuCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3Ry
dWN0b3IoKSB7IHJldHVybiAxOyB9IH0pOjo6VHlwZUVycm9yOiBDYW5ub3QgcmV0dXJuIGEgbm9u
LW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuCiBQQVNT
IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkgfSB9KTo6
OlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ3N1
cGVyKCknKQogUEFTUyBuZXcgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkgfSB9KTo6
OlN5bnRheEVycm9yOiBzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0LgpAQCAtNTYs
OSArNTYsOSBAQCBQQVNTIChmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyKCkiKTt9KSgpCiBQQVNT
IG5ldyAoY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgKGZ1bmN0aW9uICgpIHsgZXZhbCgic3VwZXIo
KSIpO30pKCk7IH0gfSk6OjpTeW50YXhFcnJvcjogc3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMg
Y29udGV4dC4KIFBBU1MgKG5ldyAoY2xhc3MgeyBtZXRob2QoKSB7IChmdW5jdGlvbiAoKSB7IGV2
YWwoInN1cGVyLm1ldGhvZCgpIik7fSkoKTsgfX0pKS5tZXRob2QoKTo6OlN5bnRheEVycm9yOiBz
dXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0LgogUEFTUyBuZXcgKGNsYXNzIGV4dGVu
ZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyBzdXBlcigpO319KTo6OlJlZmVyZW5j
ZUVycm9yOiAnc3VwZXIoKScgY2FuJ3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGluIGEgY29u
c3RydWN0b3IuCi1QQVNTIChuZXcgY2xhc3MgRCBleHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNv
bnN0cnVjdG9yKCkgeyBldmFsKCdzdXBlclsibSJdKCknKSB9IH0pOjo6UmVmZXJlbmNlRXJyb3I6
IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4KLVBBU1MgbmV3IGNsYXNzIGV4
dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3RydWN0b3IoKSB7IHN1cGVyWyJtIl0oc3VwZXIo
KSkgfSB9Ojo6UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJp
YWJsZS4KLVBBU1MgKG5ldyBjbGFzcyBEIGV4dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3Ry
dWN0b3IoZikgeyBzdXBlcltmKCldKCkgfSB9KCgpPT4ibSIpKTo6OlJlZmVyZW5jZUVycm9yOiBD
YW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCitQQVNTIChuZXcgY2xhc3MgRCBl
eHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKCkgeyBldmFsKCdzdXBlclsibSJd
KCknKSB9IH0pOjo6UmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBk
ZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBu
b24tb2JqZWN0LgorUEFTUyBuZXcgY2xhc3MgZXh0ZW5kcyBjbGFzcyB7IG0oKSB7fX0geyBjb25z
dHJ1Y3RvcigpIHsgc3VwZXJbIm0iXShzdXBlcigpKSB9IH06OjpSZWZlcmVuY2VFcnJvcjogJ3N1
cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vz
c2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuCitQQVNTIChuZXcgY2xhc3MgRCBl
eHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKGYpIHsgc3VwZXJbZigpXSgpIH0g
fSgoKT0+Im0iKSk6OjpSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGlu
IGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5n
IG5vbi1vYmplY3QuCiBQQVNTIChuZXcgY2xhc3MgRCBleHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7
IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyBldmFsKCdzdXBlclsibSJdKCknKSB9IH0pCiBQQVNT
IG5ldyBjbGFzcyBleHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBl
cigpOyBzdXBlclsibSJdKHN1cGVyKCkpIH0gfTo6OlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScg
Y2FuJ3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGluIGEgY29uc3RydWN0b3IuCiBQQVNTIChu
ZXcgY2xhc3MgRCBleHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKGYpIHsgc3Vw
ZXIoKTsgc3VwZXJbZigpXSgpIH0gfSgoKT0+Im0iKSkKSW5kZXg6IExheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuanMJKHJldmlz
aW9uIDI3MTExNikKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LXN1cGVyY2FsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDggKzE0OSw4IEBAIHNob3VsZEJl
VHJ1ZSgiaW5kZXhPZmFycm93SW5DaGlsZENvbnN0cnUKIHNob3VsZEJlVHJ1ZSgiaW5kZXhPZkNo
aWxkQ2xhc3NJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4T2YoJ0NoaWxkQ2xh
c3MnLCBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciArIDEpID09PSAtMSIpOwogCiBzaG91
bGRCZSgiKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIo
KSk9Pnt9KSgpIH0gfSkuaWQiLCAidmFsdWUiKTsKLXNob3VsZFRocm93KCcobmV3IGNsYXNzIGV4
dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSB0aGlzKT0+eyByZXR1cm4gYTsgfSkoKSB9
IH0pJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLiInKTsKLXNob3VsZFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9y
KCkgeyAoKGEgPSB0aGlzLCBiPXN1cGVyKCkpPT57IHJldHVybiBhOyB9KSgpIH0gfSknLCAnIlJl
ZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwor
c2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9
IHRoaXMpPT57IHJldHVybiBhOyB9KSgpIH0gfSknLCBgIlJlZmVyZW5jZUVycm9yOiAnc3VwZXIo
KScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5n
IHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4iYCk7CitzaG91bGRUaHJvdygnKG5ldyBj
bGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gdGhpcywgYj1zdXBlcigpKT0+
eyByZXR1cm4gYTsgfSkoKSB9IH0pJywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3Qg
YmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wg
b3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOwogc2hvdWxkTm90VGhyb3coJyhuZXcgY2xhc3Mg
ZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IG5ldy50YXJnZXQpPT57IHJldHVybiBh
OyB9KSgpOyBzdXBlcigpOyB9IH0pJyk7CiBzaG91bGROb3RUaHJvdygnKG5ldyBjbGFzcyBleHRl
bmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gbmV3LnRhcmdldCwgYj1zdXBlcigpKT0+eyBy
ZXR1cm4gYTsgfSkoKSB9IH0pJyk7CiAKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwkocmV2aXNp
b24gMjcxMTE2KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
c3VwZXJwcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBzaG91bGRC
ZSgnKG5ldyBCKCkpLmdldFZhbHVlUGFyZW50RnVuY3RpCiAKIHNob3VsZEJlKCcobmV3IEMoZmFs
c2UpKS52YWx1ZScsICdleHBlY3RlZFZhbHVlJyk7CiAKLXNob3VsZFRocm93KCcobmV3IEModHJ1
ZSkpJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLiInKTsKK3Nob3VsZFRocm93KCcobmV3IEModHJ1ZSkpJywgYCJSZWZlcmVuY2VFcnJvcjog
J3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFj
Y2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOwogCiBzaG91bGRCZSgn
RS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKIApAQCAtOTUsMTMg
Kzk1LDEzIEBAIHNob3VsZEJlKCcobmV3IEYoKSkuZ2VuR2V0UGFyZW50VmFsdWVEZWUKIHNob3Vs
ZEJlKCcobmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlcigp
LCBiID0gc3VwZXIuZ2V0VmFsdWUoKSk9PnsgdGhpcy5pZCA9IGI7IH0pKCkgfSB9KS5pZCcsICdl
eHBlY3RlZFZhbHVlJyk7CiB2YXIgZXhwZWN0ZWROZXdUYXJnZXQ7CiBzaG91bGRCZSgnKG5ldyBj
bGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIoKSwgYiA9IG5ldy50
YXJnZXQpPT57IHRoaXMubmV3VGFyZ2V0ID0gYjsgfSkoKTsgZXhwZWN0ZWROZXdUYXJnZXQgPSBu
ZXcudGFyZ2V0O30gfSkubmV3VGFyZ2V0JywgJ2V4cGVjdGVkTmV3VGFyZ2V0Jyk7Ci1zaG91bGRU
aHJvdygnKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIu
Z2V0VmFsdWUoKSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KScsICciUmVmZXJlbmNlRXJyb3I6
IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iJyk7Ci1zaG91bGRUaHJvdygn
KG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIuZ2V0VmFs
dWUoKSwgYj1zdXBlcigpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pJywgJyJSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRo
cm93KCcobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5w
cm9wKT0+eyByZXR1cm4gYTsgfSkoKSB9IH0pJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRocm93KCcobmV3IGNsYXNz
IGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5wcm9wLCBiPXN1cGVyKCkp
PT57IHJldHVybiBhOyB9KSgpIH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwotc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0
ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IChzdXBlci5wcm9wID0gInZhbHVlIikpPT57
IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwotc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0
ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IChzdXBlci5wcm9wID0gInZhbHVlIiksIGI9
c3VwZXIoKSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KScsICciUmVmZXJlbmNlRXJyb3I6IENh
bm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iJyk7Ci1zaG91bGRUaHJvdygnKG5l
dyBjbGFzcyBleHRlbmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIuZ2VuR2V0UGFy
ZW50VmFsdWUoKS5uZXh0KCkudmFsdWUpPT57IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSknLCAnIlJl
ZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwot
c2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9
IHN1cGVyLmdlbkdldFBhcmVudFZhbHVlKCkubmV4dCgpLnZhbHVlLCBiPXN1cGVyKCkpPT57IHRo
aXMuaWQgPSBhOyB9KSgpIH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVu
aW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5k
cyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdldFZhbHVlKCkpPT57IHRoaXMuaWQg
PSBhOyB9KSgpIH0gfSknLCBgIlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxs
ZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1
cm5pbmcgbm9uLW9iamVjdC4iYCk7CitzaG91bGRUaHJvdygnKG5ldyBjbGFzcyBleHRlbmRzIEEg
eyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIuZ2V0VmFsdWUoKSwgYj1zdXBlcigpKT0+eyB0
aGlzLmlkID0gYTsgfSkoKSB9IH0pJywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3Qg
YmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wg
b3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0
ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLnByb3ApPT57IHJldHVybiBhOyB9
KSgpIH0gfSknLCBgIlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4g
ZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcg
bm9uLW9iamVjdC4iYCk7CitzaG91bGRUaHJvdygnKG5ldyBjbGFzcyBleHRlbmRzIEYgeyBjb25z
dHJ1Y3RvcigpIHsgKChhID0gc3VwZXIucHJvcCwgYj1zdXBlcigpKT0+eyByZXR1cm4gYTsgfSko
KSB9IH0pJywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRl
cml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5v
bi1vYmplY3QuImApOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBGIHsgY29uc3Ry
dWN0b3IoKSB7ICgoYSA9IChzdXBlci5wcm9wID0gInZhbHVlIikpPT57IHRoaXMuaWQgPSBhOyB9
KSgpIH0gfSknLCBgIlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4g
ZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcg
bm9uLW9iamVjdC4iYCk7CitzaG91bGRUaHJvdygnKG5ldyBjbGFzcyBleHRlbmRzIEYgeyBjb25z
dHJ1Y3RvcigpIHsgKChhID0gKHN1cGVyLnByb3AgPSAidmFsdWUiKSwgYj1zdXBlcigpKT0+eyB0
aGlzLmlkID0gYTsgfSkoKSB9IH0pJywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3Qg
YmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wg
b3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0
ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdlbkdldFBhcmVudFZhbHVlKCku
bmV4dCgpLnZhbHVlKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pJywgYCJSZWZlcmVuY2VFcnJv
cjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3Jl
IGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOworc2hvdWxkVGhy
b3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdl
bkdldFBhcmVudFZhbHVlKCkubmV4dCgpLnZhbHVlLCBiPXN1cGVyKCkpPT57IHRoaXMuaWQgPSBh
OyB9KSgpIH0gfSknLCBgIlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQg
aW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5p
bmcgbm9uLW9iamVjdC4iYCk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVy
LmpzCShyZXZpc2lvbiAyNzExMTYpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xh
c3Mtc3ludGF4LXN1cGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNz
IERlcml2ZWRXaXRoRXZhbCBleHRlbmRzIEJhc2Ugewogc2hvdWxkQmVUcnVlKCcobmV3IEJhc2Up
IGluc3RhbmNlb2YgQmFzZScpOwogc2hvdWxkQmVUcnVlKCcobmV3IERlcml2ZWQpIGluc3RhbmNl
b2YgRGVyaXZlZCcpOwogc2hvdWxkQmVUcnVlKCcobmV3IERlcml2ZWRXaXRoRXZhbCkgaW5zdGFu
Y2VvZiBEZXJpdmVkV2l0aEV2YWwnKTsKLXNob3VsZFRocm93KCcobmV3IERlcml2ZWRXaXRoRXZh
bCh0cnVlKSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGUuIicpOworc2hvdWxkVGhyb3coJyhuZXcgRGVyaXZlZFdpdGhFdmFsKHRydWUpKScs
IGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNv
bnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0
LiJgKTsKIHNob3VsZEJlKCcobmV3IERlcml2ZWQpLmNhbGxCYXNlTWV0aG9kKCknLCAnYmFzZU1l
dGhvZFZhbHVlJyk7CiBzaG91bGRCZSgneCA9IChuZXcgRGVyaXZlZCkuY2FsbEJhc2VNZXRob2Q7
IHgoKScsICdiYXNlTWV0aG9kVmFsdWUnKTsKIHNob3VsZEJlKCcobmV3IERlcml2ZWQpLmNhbGxC
YXNlTWV0aG9kSW5HZXR0ZXInLCAnYmFzZU1ldGhvZFZhbHVlJyk7CkBAIC0xMTcsNyArMTE3LDcg
QEAgc2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgYwogc2hvdWxkQmVUcnVl
KCduZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyByZXR1
cm4gdW5kZWZpbmVkIH0gfSkgaW5zdGFuY2VvZiBPYmplY3QnKTsKIHNob3VsZEJlKCd4ID0geyB9
OyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4geCB9IH0p
OycsICd4Jyk7CiBzaG91bGRCZUZhbHNlKCd4IGluc3RhbmNlb2YgQmFzZScpOwotc2hvdWxkVGhy
b3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IH0gfSknLCAnIlJl
ZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwor
c2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IH0g
fSknLCBgIlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZl
ZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9i
amVjdC4iYCk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1
Y3RvcigpIHsgcmV0dXJuIDE7IH0gfSknLCAnIlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5v
bi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLiInKTsK
IHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBy
ZXR1cm4gdW5kZWZpbmVkIH0gfSknKTsKIHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMg
bnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyByZXR1cm4gdW5kZWZpbmVkIH0gfSknLCAn
IlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgXCdz
dXBlcigpXCcpIicpOwpAQCAtMTQyLDkgKzE0Miw5IEBAIHNob3VsZFRocm93KCduZXcgKGNsYXNz
IHsgY29uc3RydWN0b3IoKSAKIHNob3VsZFRocm93KCcobmV3IChjbGFzcyB7IG1ldGhvZCgpIHsg
KGZ1bmN0aW9uICgpIHsgZXZhbCgic3VwZXIubWV0aG9kKCkiKTt9KSgpOyB9fSkpLm1ldGhvZCgp
JywgJyJTeW50YXhFcnJvcjogc3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dC4iJyk7
CiAKIHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkg
eyBzdXBlcigpOyBzdXBlcigpO319KScsICciUmVmZXJlbmNlRXJyb3I6IFwnc3VwZXIoKVwnIGNh
blwndCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgaW4gYSBjb25zdHJ1Y3Rvci4iJyk7Ci1zaG91
bGRUaHJvdygnKG5ldyBjbGFzcyBEIGV4dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3RydWN0
b3IoKSB7IGV2YWwoXCdzdXBlclsibSJdKClcJykgfSB9KScsICciUmVmZXJlbmNlRXJyb3I6IENh
bm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iJyk7Ci1zaG91bGRUaHJvdygnbmV3
IGNsYXNzIGV4dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3RydWN0b3IoKSB7IHN1cGVyWyJt
Il0oc3VwZXIoKSkgfSB9JywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRp
YWxpemVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRocm93KCcobmV3IGNsYXNzIEQgZXh0ZW5kcyBj
bGFzcyB7IG0oKSB7fX0geyBjb25zdHJ1Y3RvcihmKSB7IHN1cGVyW2YoKV0oKSB9IH0oKCk9PiJt
IikpJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLiInKTsKK3Nob3VsZFRocm93KCcobmV3IGNsYXNzIEQgZXh0ZW5kcyBjbGFzcyB7IG0oKSB7
fX0geyBjb25zdHJ1Y3RvcigpIHsgZXZhbChcJ3N1cGVyWyJtIl0oKVwnKSB9IH0pJywgYCJSZWZl
cmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0
b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOwor
c2hvdWxkVGhyb3coJ25ldyBjbGFzcyBleHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVj
dG9yKCkgeyBzdXBlclsibSJdKHN1cGVyKCkpIH0gfScsIGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBl
cigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3Np
bmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJgKTsKK3Nob3VsZFRocm93KCcobmV3
IGNsYXNzIEQgZXh0ZW5kcyBjbGFzcyB7IG0oKSB7fX0geyBjb25zdHJ1Y3RvcihmKSB7IHN1cGVy
W2YoKV0oKSB9IH0oKCk9PiJtIikpJywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3Qg
YmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wg
b3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOwogCiBzaG91bGROb3RUaHJvdygnKG5ldyBjbGFz
cyBEIGV4dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IGV2
YWwoXCdzdXBlclsibSJdKClcJykgfSB9KScpOwogc2hvdWxkVGhyb3coJ25ldyBjbGFzcyBleHRl
bmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyBzdXBlclsibSJd
KHN1cGVyKCkpIH0gfScsICciUmVmZXJlbmNlRXJyb3I6IFwnc3VwZXIoKVwnIGNhblwndCBiZSBj
YWxsZWQgbW9yZSB0aGFuIG9uY2UgaW4gYSBjb25zdHJ1Y3Rvci4iJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416887</attachid>
            <date>2021-01-01 20:05:05 -0800</date>
            <delta_ts>2021-01-02 11:28:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220221-20210102060503.patch</filename>
            <type>text/plain</type>
            <size>34688</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzExMTcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTAxLTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9yIHVuaW5pdGlh
bGl6ZWQgfHRoaXN8IGluIGRlcml2ZWQgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDIyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9u
cy1sZXhpY2FsLWJpbmRpbmctaW4tY2xhc3MuanM6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWFy
cm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanM6CisgICAgICAgICogc3RyZXNz
L2NsYXNzLWRlcml2ZWQtZnJvbS1udWxsLmpzOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
ZXZhbC10aGlzLmpzOgorICAgICAgICAqIHN0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MtdGR6
LmpzOgorCiAyMDIwLTEyLTMxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eSgpIGZhaWxzIHRvIGRlbGV0
ZSBhIG5vbi1leGlzdGVudCAicHJvdG90eXBlIiBwcm9wZXJ0eQpJbmRleDogSlNUZXN0cy9zdHJl
c3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYmluZGluZy1pbi1jbGFzcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1i
aW5kaW5nLWluLWNsYXNzLmpzCShyZXZpc2lvbiAyNzExMTYpCisrKyBKU1Rlc3RzL3N0cmVzcy9h
c3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1iaW5kaW5nLWluLWNsYXNzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTQsNyArMjU0LDcgQEAgZnVuY3Rpb24gY2hlY2tURFpEdXJpbmdDcmVhdGUo
a2xhc3MpIHsKICAgICAgICAgLy8gV2UgZG8gbm90IGNhcmUgYWJvdXQgdGhpcyBlcnJvcgogICAg
IH0KICAgICBkcmFpbk1pY3JvdGFza3MoKTsKLSAgICBjb25zdCBlcnJvciA9IGFzeW5jRXJyb3Iu
ZXJyb3IgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvciAmJiBhc3luY0Vycm9yLmVycm9yLnRvU3Ry
aW5nKCkgPT09ICdSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZh
cmlhYmxlLic7CisgICAgY29uc3QgZXJyb3IgPSBhc3luY0Vycm9yLmVycm9yLnRvU3RyaW5nKCkg
PT09IGBSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQg
Y29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmpl
Y3QuYDsKICAgICBpZiAoIWVycm9yKSB0aHJvdyBuZXcgRXJyb3IoJ1REWiBlcnJvciBpcyBleHBl
Y3RlZCwgYnV0IGFwcGVhcmVkOicgKyBhc3luY0Vycm9yLmVycm9yKTsKIH0KIApJbmRleDogSlNU
ZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4
aWNhbC1zdXBlci1iaW5kaW5nLmpzCShyZXZpc2lvbiAyNzExMTYpCisrKyBKU1Rlc3RzL3N0cmVz
cy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgZHJhaW5NaWNyb3Rhc2tzKCk7CiBzaG91bGRCZShj
aGlsZEE0LCB1bmRlZmluZWQpOwogc2hvdWxkQmUodmFsdWUsICdhYmMnKTsKIHNob3VsZEJlKGVy
cm9yLCB1bmRlZmluZWQpOwotc2hvdWxkQmUoY2F0Y2hFcnJvci50b1N0cmluZygpLCAnUmVmZXJl
bmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4nKTsKK3Nob3Vs
ZEJlKGNhdGNoRXJyb3IudG9TdHJpbmcoKSwgYFJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVz
dCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlz
fCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC5gKTsKIAogY2F0Y2hFcnJvciA9IHVuZGVmaW5lZDsK
IGVycm9yID0gdW5kZWZpbmVkOyAKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NsYXNzLWRlcml2ZWQt
ZnJvbS1udWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NsYXNzLWRlcml2ZWQt
ZnJvbS1udWxsLmpzCShyZXZpc2lvbiAyNzExMTYpCisrKyBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1k
ZXJpdmVkLWZyb20tbnVsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBmdW5j
dGlvbiB0ZXN0MSgpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9CiAgICAg
fQotICAgIGFzc2VydFRocm93KCgpPT4obmV3IEUpLCAnUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBh
Y2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4nKTsKKyAgICBhc3NlcnRUaHJvdygoKT0+KG5l
dyBFKSwgYFJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZl
ZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9i
amVjdC5gKTsKICAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihFLnByb3RvdHlwZSkg
PT09IG51bGwpOwogfQogdGVzdCh0ZXN0MSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgZnVuY3Rpb24g
dGVzdDYoKSB7CiAgICAgY2xhc3MgRSBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3RydWN0b3IoKSB7
IGxldCByZXQgPSB0aGlzOyByZXR1cm4gcmV0OyB9IH0KICAgICBjbGFzcyBGIGV4dGVuZHMganNO
dWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIDI1OyB9IH0KICAgICBjbGFzcyBHIGV4dGVu
ZHMganNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfSB9Ci0gICAgYXNzZXJ0VGhy
b3coKCkgPT4gUmVmbGVjdC5jb25zdHJ1Y3QoRSwgW10sIEQpLCAnUmVmZXJlbmNlRXJyb3I6IENh
bm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4nKTsKKyAgICBhc3NlcnRUaHJvdygo
KSA9PiBSZWZsZWN0LmNvbnN0cnVjdChFLCBbXSwgRCksIGBSZWZlcmVuY2VFcnJvcjogJ3N1cGVy
KCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2lu
ZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuYCk7CiAgICAgYXNzZXJ0VGhyb3coKCkg
PT4gUmVmbGVjdC5jb25zdHJ1Y3QoRiwgW10sIEQpLCAnVHlwZUVycm9yOiBDYW5ub3QgcmV0dXJu
IGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3Mu
Jyk7CiAKICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1ldmFsLXRoaXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWV2YWwtdGhpcy5qcwkocmV2aXNpb24gMjcxMTE2KQorKysgSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWV2YWwtdGhpcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBB
IGV4dGVuZHMgQiB7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBuZXcgQSgpOwotfSwgYFJl
ZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7Cit9
LCBgUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNv
bnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0
LmApOwogCiBjbGFzcyBDIHsKICAgICAqZ2VuZXJhdG9yKCkKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L3N1cGVyLXByb3BlcnR5LWFjY2Vzcy10ZHouanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJl
c3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLXRkei5qcwkocmV2aXNpb24gMjcxMTE2KQorKysgSlNU
ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLXRkei5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvd1REWihmKSB7CiAgICAgICAgIGYo
KTsKICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBSZWZlcmVu
Y2VFcnJvcik7Ci0gICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIpOworICAgICAgICBhc3Nl
cnQoZS50b1N0cmluZygpID09PSBgUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNh
bGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJl
dHVybmluZyBub24tb2JqZWN0LmApOwogICAgICAgICB0aHJldyA9IHRydWU7CiAgICAgfQogICAg
IGFzc2VydCh0aHJldyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3
MTExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMiBAQAorMjAyMS0wMS0wMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciB1bmluaXRp
YWxpemVkIHx0aGlzfCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAyMjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBjbGFzcyBjb25zdHJ1Y3RvcnMgcGVy
Zm9ybSBgcmV0dXJuIHRoaXM7YCBieSBkZWZhdWx0LCBhbmQgZGVyaXZlZAorICAgICAgICBjb25z
dHJ1Y3RvcnMgcmVxdWlyZSBgc3VwZXIoKWAgdG8gYmUgY2FsbGVkIGJlZm9yZSB8dGhpc3wgYWNj
ZXNzLCByZWd1bGFyCisgICAgICAgIFREWiBlcnJvciBtZXNzYWdlIGlzIHF1aXRlIGNvbmZ1c2lu
ZywgZ2l2ZW4gdGhlIGZvbGxvd2luZyBjb2RlOgorCisgICAgICAgICAgICBgbmV3IChjbGFzcyBl
eHRlbmRzIE9iamVjdCB7IGNvbnN0cnVjdG9yKCkgeyB9IH0pO2AKKworICAgICAgICBDb25zaWRl
cmluZyB0aGF0IGN1cnJlbnRseSBvcF9jaGVja190ZHogaXMgY2FsbGVkIG9uIHRoaXNSZWdpc3Rl
cigpIG9ubHkKKyAgICAgICAgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvcnMsIHRoaXMgcGF0Y2ggbW9k
aWZpZXMgaXRzIHNsb3cgcGF0aCB0byB0aHJvdyBhCisgICAgICAgIGhlbHBmdWwgZXJyb3IgbWVz
c2FnZSB0aGF0IGNvdmVycyB8dGhpc3wgYWNjZXNzIGFuZCBub24tb2JqZWN0IHJldHVybnMuCisK
KyAgICAgICAgVjggYW5kIFNwaWRlck1vbmtleSBoYXZlIHNpbWlsYXIgZXJyb3IgbWVzc2FnZXMs
IG1lbnRpb25pbmcgYHN1cGVyKClgLgorCisgICAgICAgIHNsb3dfcGF0aF90aHJvd190ZHpfZXJy
b3IgaXMgbWVyZ2VkIGludG8gc2xvd19wYXRoX2NoZWNrX3Rkeiwgd2hpY2ggaXMKKyAgICAgICAg
aW52b2tlZCBmcm9tIGJhc2VsaW5lIEpJVCwgc28gd2UgY2FuIHJlbGlhYmx5IGFjcXVpcmUgdGhl
IGJ5dGVjb2RlIGFuZAorICAgICAgICBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKToKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorCiAyMDIwLTEyLTMxICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBKU0Z1bmN0aW9uOjpk
ZWxldGVQcm9wZXJ0eSgpIGZhaWxzIHRvIGRlbGV0ZSBhIG5vbi1leGlzdGVudCAicHJvdG90eXBl
IiBwcm9wZXJ0eQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI3MTExNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC04MzgsNyArODM4LDcgQEAgbGxpbnRPcChvcF9jaGVja190ZHosIE9w
Q2hlY2tUZHosIG1hY3JvIAogICAgIGdldChtX3RhcmdldFZpcnR1YWxSZWdpc3RlciwgdDApCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzaXplLCB0MCwgdDEpCiAgICAgYmluZXEgdDEs
IEVtcHR5VmFsdWVUYWcsIC5vcE5vdFREWgotICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Ro
cm93X3Rkel9lcnJvcikKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jaGVja190ZHopCiAK
IC5vcE5vdFREWjoKICAgICBkaXNwYXRjaCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjcx
MTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTgyNCw3ICs4MjQsNyBAQCBsbGludE9wKG9wX2NoZWNr
X3RkeiwgT3BDaGVja1RkeiwgbWFjcm8gCiAgICAgZ2V0KG1fdGFyZ2V0VmlydHVhbFJlZ2lzdGVy
LCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAgICBicW5l
cSB0MSwgVmFsdWVFbXB0eSwgLm9wTm90VERaCi0gICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
dGhyb3dfdGR6X2Vycm9yKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NoZWNrX3RkeikK
IAogLm9wTm90VERaOgogICAgIGRpc3BhdGNoKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjcxMTE2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcxLDE2ICszNzEsMTQgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19Q
QVRIKHNsb3dfcGF0aF90bwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNv
ZGUubV9zcmNEc3QsIHZhbHVlLCBQUk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKQotewotICAgIEJF
R0lOKCk7Ci0gICAgVEhST1coY3JlYXRlVERaRXJyb3IoZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KIEpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY2hlY2tfdGR6KQogewogICAgIEJF
R0lOKCk7Ci0gICAgVEhST1coY3JlYXRlVERaRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcENoZWNrVGR6PigpOworICAgIGlmIChieXRlY29kZS5tX3Rh
cmdldFZpcnR1YWxSZWdpc3RlciA9PSBjb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKQorICAgICAg
ICBUSFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9iYWxPYmplY3QsICInc3VwZXIoKScgbXVz
dCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlz
fCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4iX3MpKTsKKyAgICBlbHNlCisgICAgICAgIFRIUk9X
KGNyZWF0ZVREWkVycm9yKGdsb2JhbE9iamVjdCkpOwogfQogCiBKU0NfREVGSU5FX0NPTU1PTl9T
TE9XX1BBVEgoc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dy
aXRlX2Vycm9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDI3MTExNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0
LDYgQEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfYwogSlNDX0RFQ0xB
UkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX3RoaXMpOwogSlNDX0RFQ0xBUkVf
Q09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW50ZXIpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfdG9fdGhpcyk7Ci1KU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFU
SChzbG93X3BhdGhfY2hlY2tfdGR6KTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX25vdCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzExMTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMS0wMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciB1bmluaXRp
YWxpemVkIHx0aGlzfCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAyMjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxs
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC5qczoKKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzOgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanM6CisKIDIwMjAtMTIt
MzAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTGVnYWN5IExp
bmUgTGF5b3V0XSBSZW1vdmUgdW5uZWNlc3NhcnkgJ3ZlcnRpY2FsLWFsaWduOiBtaWRkbGUnIGlu
dGVncmFsIHJvdW5kaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI3MTExNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMS0wMSAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZv
ciB1bmluaXRpYWxpemVkIHx0aGlzfCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAyMjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVt
ZW50LWV4cGVjdGVkLnR4dDoKKwogMjAyMC0xMi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFdlYkFzc2VtYmx5IFRhYmxlL01lbW9yeS9HbG9i
YWwgc2hvdWxkIGFsbG93IGluaGVyaXRhbmNlCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxz
YmFjay10by11bmtub3duLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Bh
cnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24tZWxlbWVudC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI3MTExNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24t
ZWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBDT05T
T0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogVGhlIHJlc3VsdCBvZiBjb25zdHJ1Y3RpbmcgYSBjdXN0
b20gZWxlbWVudCBtdXN0IGJlIGEgSFRNTEVsZW1lbnQKIENPTlNPTEUgTUVTU0FHRTogVHlwZUVy
cm9yOiBUaGUgcmVzdWx0IG9mIGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IG11c3QgYmUg
YSBIVE1MRWxlbWVudAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgorQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VF
cnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVm
b3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuCiBDT05TT0xFIE1F
U1NBR0U6IEJhZAogCiBQQVNTIEhUTUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZmFsbGJhY2sgSFRN
TFVua25vd25FbGVtZW50IHdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciByZXR1cm5z
IGEgVGV4dCBub2RlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2Fs
bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1zdXBlcmNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzExMTYpCisrKyBMYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDggKzIyLDggQEAgUEFTUyBpbmRleE9mbmVzdGVkQXJyb3dJblN0YWNrRXJyb3IgPiAt
MQogUEFTUyBpbmRleE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgPiAtMSAm
JiBlcnJvclN0YWNrLmluZGV4T2YoJ2Fycm93SW5DaGlsZENvbnN0cnVjdG9yJywgaW5kZXhPZmFy
cm93SW5DaGlsZENvbnN0cnVjdG9ySW5TdGFja0Vycm9yICsgMSkgPT09IC0xIGlzIHRydWUKIFBB
U1MgaW5kZXhPZkNoaWxkQ2xhc3NJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4
T2YoJ0NoaWxkQ2xhc3MnLCBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciArIDEpID09PSAt
MSBpcyB0cnVlCiBQQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgo
YSA9IHN1cGVyKCkpPT57fSkoKSB9IH0pLmlkIGlzIHZhbHVlCi1QQVNTIChuZXcgY2xhc3MgZXh0
ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHRoaXMpPT57IHJldHVybiBhOyB9KSgpIH0g
fSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlh
bGl6ZWQgdmFyaWFibGUuLgotUEFTUyAobmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9y
KCkgeyAoKGEgPSB0aGlzLCBiPXN1cGVyKCkpPT57IHJldHVybiBhOyB9KSgpIH0gfSkgdGhyZXcg
ZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGUuLgorUEFTUyAobmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEg
PSB0aGlzKT0+eyByZXR1cm4gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VF
cnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVm
b3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuLgorUEFTUyAobmV3
IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSB0aGlzLCBiPXN1cGVyKCkp
PT57IHJldHVybiBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiAn
c3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNj
ZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4uCiBQQVNTIChuZXcgY2xhc3Mg
ZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IG5ldy50YXJnZXQpPT57IHJldHVybiBh
OyB9KSgpOyBzdXBlcigpOyB9IH0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyAobmV3
IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBuZXcudGFyZ2V0LCBiPXN1
cGVyKCkpPT57IHJldHVybiBhOyB9KSgpIH0gfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI3MTExNikKKysrIExheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0
eS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogUEFTUyAobmV3IEIoKSkuZ2V0VmFsdWVQ
YXJlbnRGdW5jdGlvbigpIGlzIGV4cGVjdGVkVmFsdWUKIFBBU1MgKG5ldyBDKGZhbHNlKSkudmFs
dWUgaXMgZXhwZWN0ZWRWYWx1ZQotUEFTUyAobmV3IEModHJ1ZSkpIHRocmV3IGV4Y2VwdGlvbiBS
ZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KK1BB
U1MgKG5ldyBDKHRydWUpKSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigp
JyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3Npbmcg
fHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0Li4KIFBBU1MgRS5nZXRQYXJlbnRTdGF0aWNW
YWx1ZSgpIGlzIGV4cGVjdGVkVmFsdWUKIFBBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAi
LSIgKyBleHBlY3RlZFZhbHVlCiBQQVNTIGYucHJvcCBpcyBleHBlY3RlZFZhbHVlICsgIi0iICsg
Im5ldy12YWx1ZSIKQEAgLTE0LDE0ICsxNCwxNCBAQCBQQVNTIChuZXcgRigpKS5nZW5HZXRQYXJl
bnRWYWx1ZSgpLm5leHQoCiBQQVNTIChuZXcgRigpKS5nZW5HZXRQYXJlbnRWYWx1ZURlZXBBcnJv
dygpLm5leHQoKS52YWx1ZSBpcyBleHBlY3RlZFZhbHVlCiBQQVNTIChuZXcgY2xhc3MgZXh0ZW5k
cyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCksIGIgPSBzdXBlci5nZXRWYWx1ZSgp
KT0+eyB0aGlzLmlkID0gYjsgfSkoKSB9IH0pLmlkIGlzIGV4cGVjdGVkVmFsdWUKIFBBU1MgKG5l
dyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIoKSwgYiA9IG5l
dy50YXJnZXQpPT57IHRoaXMubmV3VGFyZ2V0ID0gYjsgfSkoKTsgZXhwZWN0ZWROZXdUYXJnZXQg
PSBuZXcudGFyZ2V0O30gfSkubmV3VGFyZ2V0IGlzIGV4cGVjdGVkTmV3VGFyZ2V0Ci1QQVNTIChu
ZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdldFZhbHVl
KCkpPT57IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVy
cm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuLgotUEFTUyAobmV3IGNs
YXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5nZXRWYWx1ZSgpLCBi
PXN1cGVyKCkpPT57IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVy
ZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuLgotUEFTUyAo
bmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5wcm9wKT0+
eyByZXR1cm4gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2Fu
bm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KLVBBU1MgKG5ldyBjbGFzcyBleHRl
bmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIucHJvcCwgYj1zdXBlcigpKT0+eyBy
ZXR1cm4gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2Fubm90
IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KLVBBU1MgKG5ldyBjbGFzcyBleHRlbmRz
IEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gKHN1cGVyLnByb3AgPSAidmFsdWUiKSk9PnsgdGhp
cy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbm5v
dCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCi1QQVNTIChuZXcgY2xhc3MgZXh0ZW5k
cyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IChzdXBlci5wcm9wID0gInZhbHVlIiksIGI9c3Vw
ZXIoKSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNl
RXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCi1QQVNTIChuZXcg
Y2xhc3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdlbkdldFBhcmVu
dFZhbHVlKCkubmV4dCgpLnZhbHVlKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pIHRocmV3IGV4
Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLi4KLVBBU1MgKG5ldyBjbGFzcyBleHRlbmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0g
c3VwZXIuZ2VuR2V0UGFyZW50VmFsdWUoKS5uZXh0KCkudmFsdWUsIGI9c3VwZXIoKSk9PnsgdGhp
cy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbm5v
dCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCitQQVNTIChuZXcgY2xhc3MgZXh0ZW5k
cyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdldFZhbHVlKCkpPT57IHRoaXMuaWQg
PSBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScg
bXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0
aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4uCitQQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBB
IHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdldFZhbHVlKCksIGI9c3VwZXIoKSk9Pnsg
dGhpcy5pZCA9IGE7IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6ICdz
dXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nl
c3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0Li4KK1BBU1MgKG5ldyBjbGFzcyBl
eHRlbmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIucHJvcCk9PnsgcmV0dXJuIGE7
IH0pKCkgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0
IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8
IG9yIHJldHVybmluZyBub24tb2JqZWN0Li4KK1BBU1MgKG5ldyBjbGFzcyBleHRlbmRzIEYgeyBj
b25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIucHJvcCwgYj1zdXBlcigpKT0+eyByZXR1cm4gYTsg
fSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3Qg
YmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wg
b3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuLgorUEFTUyAobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNv
bnN0cnVjdG9yKCkgeyAoKGEgPSAoc3VwZXIucHJvcCA9ICJ2YWx1ZSIpKT0+eyB0aGlzLmlkID0g
YTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11
c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhp
c3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuLgorUEFTUyAobmV3IGNsYXNzIGV4dGVuZHMgRiB7
IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSAoc3VwZXIucHJvcCA9ICJ2YWx1ZSIpLCBiPXN1cGVyKCkp
PT57IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9y
OiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUg
YWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4uCitQQVNTIChuZXcgY2xh
c3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdlbkdldFBhcmVudFZh
bHVlKCkubmV4dCgpLnZhbHVlKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2Vw
dGlvbiBSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQg
Y29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmpl
Y3QuLgorUEFTUyAobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBz
dXBlci5nZW5HZXRQYXJlbnRWYWx1ZSgpLm5leHQoKS52YWx1ZSwgYj1zdXBlcigpKT0+eyB0aGlz
LmlkID0gYTsgfSkoKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogJ3N1cGVy
KCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2lu
ZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1z
eW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
Y2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzExMTYpCisrKyBM
YXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDcgKzU3LDcgQEAgUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoKGNsYXNz
IGV4dGVuZAogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgdW5kZWZpbmVkIHsgY29uc3RydWN0b3Ig
KCkgeyB0aGlzIH0gfSk6OjpUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzIGlzIG5vdCBhIGNvbnN0
cnVjdG9yLgogUEFTUyB4ID0gdW5kZWZpbmVkOyBuZXcgKGNsYXNzIGV4dGVuZHMgeCB7IGNvbnN0
cnVjdG9yICgpIHsgc3VwZXIoKTsgfSB9KTo6OlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMg
bm90IGEgY29uc3RydWN0b3IuCiBQQVNTIGNsYXNzIHgge307IG5ldyAoY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4gbmV3IHg7IH0gfSkgaW5zdGFuY2VvZiB4Ci1Q
QVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyB0aGlzOyB9IH0p
Ojo6UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4K
K1BBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHRoaXM7IH0g
fSk6OjpSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQg
Y29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmpl
Y3QuCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyBzdXBl
cigpOyB9IH0pOjo6VHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZh
bHVhdGluZyAnc3VwZXIoKScpCiBQQVNTIHggPSB7fTsgbmV3IChjbGFzcyBleHRlbmRzIG51bGwg
eyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiB4IH0gfSk6Ojp4CiBQQVNTIHkgPSAxMjsgY2xhc3Mg
QyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiB5OyB9IH07IG5ldyBDOzo6
OlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLgpJbmRleDogTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3lu
dGF4LXN1cGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9jbGFz
cy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzExMTYpCisrKyBMYXlvdXRU
ZXN0cy9qcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC02LDcgKzYsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQ
QVNTIChuZXcgQmFzZSkgaW5zdGFuY2VvZiBCYXNlCiBQQVNTIChuZXcgRGVyaXZlZCkgaW5zdGFu
Y2VvZiBEZXJpdmVkCiBQQVNTIChuZXcgRGVyaXZlZFdpdGhFdmFsKSBpbnN0YW5jZW9mIERlcml2
ZWRXaXRoRXZhbAotUEFTUyAobmV3IERlcml2ZWRXaXRoRXZhbCh0cnVlKSk6OjpSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgorUEFTUyAobmV3IERl
cml2ZWRXaXRoRXZhbCh0cnVlKSk6OjpSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUg
Y2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3Ig
cmV0dXJuaW5nIG5vbi1vYmplY3QuCiBQQVNTIChuZXcgRGVyaXZlZCkuY2FsbEJhc2VNZXRob2Qo
KTo6OmJhc2VNZXRob2RWYWx1ZQogUEFTUyB4ID0gKG5ldyBEZXJpdmVkKS5jYWxsQmFzZU1ldGhv
ZDsgeCgpOjo6YmFzZU1ldGhvZFZhbHVlCiBQQVNTIChuZXcgRGVyaXZlZCkuY2FsbEJhc2VNZXRo
b2RJbkdldHRlcjo6OmJhc2VNZXRob2RWYWx1ZQpAQCAtMzAsMTcgKzMwLDE3IEBAIFBBU1MgKG5l
dyAoY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgZXZhbCgKIFBBU1MgKG5ldyAoY2xhc3MgeyBjb25z
dHJ1Y3RvcigpIHsgdmFyIGFyciA9ICgpID0+IGV2YWwoJ3N1cGVyLnByb3BlcnR5ID0gIkFCQyIn
KTsgYXJyKCk7IH0gfSkpLnByb3BlcnR5ID09PSAiQUJDIgogUEFTUyBuZXcgKGNsYXNzIHsgY29u
c3RydWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gfSkgaW5zdGFuY2VvZiBPYmplY3QKIFBB
U1MgbmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gMTsgfSB9KSBpbnN0YW5jZW9m
IE9iamVjdAotUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyBy
ZXR1cm4gdW5kZWZpbmVkIH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLgorUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0
cnVjdG9yKCkgeyByZXR1cm4gdW5kZWZpbmVkIH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogJ3N1cGVy
KCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2lu
ZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5k
cyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHJldHVybiB1bmRlZmluZWQgfSB9KSBp
bnN0YW5jZW9mIE9iamVjdAogUEFTUyB4ID0geyB9OyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7
IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4geCB9IH0pOzo6OngKIFBBU1MgeCBpbnN0YW5jZW9mIEJh
c2UKLVBBU1MgbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgfSB9KTo6
OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCitQ
QVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IH0gfSk6OjpSZWZl
cmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0
b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuCiBQQVNT
IG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9IH0p
Ojo6VHlwZUVycm9yOiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25z
dHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuCi1QQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxs
IHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KTo6OlJlZmVyZW5jZUVycm9y
OiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCitQQVNTIG5ldyAoY2xhc3Mg
ZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KTo6OlJl
ZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1
Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4KIFBB
U1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0
dXJuIHVuZGVmaW5lZCB9IH0pOjo6VHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIoKScpCiBQQVNTIHggPSB7IH07IG5ldyAoY2xhc3MgZXh0
ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB4IH0gfSk7Ojo6eAogUEFTUyB4IGlu
c3RhbmNlb2YgT2JqZWN0Ci1QQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0
b3IoKSB7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVk
IHZhcmlhYmxlLgorUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkg
eyB9IH0pOjo6UmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJp
dmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24t
b2JqZWN0LgogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBy
ZXR1cm4gMTsgfSB9KTo6OlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3QgdHlw
ZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLgogUEFTUyBuZXcgKGNsYXNz
IGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpIH0gfSk6OjpUeXBlRXJyb3I6
IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdzdXBlcigpJykKIFBB
U1MgbmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpIH0gfSk6OjpTeW50YXhFcnJv
cjogc3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dC4KQEAgLTU2LDkgKzU2LDkgQEAg
UEFTUyAoZnVuY3Rpb24gKCkgeyBldmFsKCJzdXBlcigpIik7fSkoKQogUEFTUyBuZXcgKGNsYXNz
IHsgY29uc3RydWN0b3IoKSB7IChmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyKCkiKTt9KSgpOyB9
IH0pOjo6U3ludGF4RXJyb3I6IHN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQuCiBQ
QVNTIChuZXcgKGNsYXNzIHsgbWV0aG9kKCkgeyAoZnVuY3Rpb24gKCkgeyBldmFsKCJzdXBlci5t
ZXRob2QoKSIpO30pKCk7IH19KSkubWV0aG9kKCk6OjpTeW50YXhFcnJvcjogc3VwZXIgaXMgbm90
IHZhbGlkIGluIHRoaXMgY29udGV4dC4KIFBBU1MgbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBj
b25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgc3VwZXIoKTt9fSk6OjpSZWZlcmVuY2VFcnJvcjogJ3N1
cGVyKCknIGNhbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBpbiBhIGNvbnN0cnVjdG9yLgot
UEFTUyAobmV3IGNsYXNzIEQgZXh0ZW5kcyBjbGFzcyB7IG0oKSB7fX0geyBjb25zdHJ1Y3Rvcigp
IHsgZXZhbCgnc3VwZXJbIm0iXSgpJykgfSB9KTo6OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNj
ZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCi1QQVNTIG5ldyBjbGFzcyBleHRlbmRzIGNsYXNz
IHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlclsibSJdKHN1cGVyKCkpIH0gfTo6OlJl
ZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCi1QQVNT
IChuZXcgY2xhc3MgRCBleHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKGYpIHsg
c3VwZXJbZigpXSgpIH0gfSgoKT0+Im0iKSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2Vz
cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgorUEFTUyAobmV3IGNsYXNzIEQgZXh0ZW5kcyBjbGFz
cyB7IG0oKSB7fX0geyBjb25zdHJ1Y3RvcigpIHsgZXZhbCgnc3VwZXJbIm0iXSgpJykgfSB9KTo6
OlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25z
dHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4K
K1BBU1MgbmV3IGNsYXNzIGV4dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3RydWN0b3IoKSB7
IHN1cGVyWyJtIl0oc3VwZXIoKSkgfSB9Ojo6UmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0
IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8
IG9yIHJldHVybmluZyBub24tb2JqZWN0LgorUEFTUyAobmV3IGNsYXNzIEQgZXh0ZW5kcyBjbGFz
cyB7IG0oKSB7fX0geyBjb25zdHJ1Y3RvcihmKSB7IHN1cGVyW2YoKV0oKSB9IH0oKCk9PiJtIikp
Ojo6UmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNv
bnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0
LgogUEFTUyAobmV3IGNsYXNzIEQgZXh0ZW5kcyBjbGFzcyB7IG0oKSB7fX0geyBjb25zdHJ1Y3Rv
cigpIHsgc3VwZXIoKTsgZXZhbCgnc3VwZXJbIm0iXSgpJykgfSB9KQogUEFTUyBuZXcgY2xhc3Mg
ZXh0ZW5kcyBjbGFzcyB7IG0oKSB7fX0geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgc3VwZXJb
Im0iXShzdXBlcigpKSB9IH06OjpSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIGNhbid0IGJlIGNh
bGxlZCBtb3JlIHRoYW4gb25jZSBpbiBhIGNvbnN0cnVjdG9yLgogUEFTUyAobmV3IGNsYXNzIEQg
ZXh0ZW5kcyBjbGFzcyB7IG0oKSB7fX0geyBjb25zdHJ1Y3RvcihmKSB7IHN1cGVyKCk7IHN1cGVy
W2YoKV0oKSB9IH0oKCk9PiJtIikpCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLmpzCShyZXZpc2lvbiAyNzExMTYp
CisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwu
anMJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw4ICsxNDksOCBAQCBzaG91bGRCZVRydWUoImluZGV4
T2ZhcnJvd0luQ2hpbGRDb25zdHJ1CiBzaG91bGRCZVRydWUoImluZGV4T2ZDaGlsZENsYXNzSW5T
dGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCdDaGlsZENsYXNzJywgaW5kZXhP
ZkNoaWxkQ2xhc3NJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEiKTsKIAogc2hvdWxkQmUoIihuZXcg
Y2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCkpPT57fSkoKSB9
IH0pLmlkIiwgInZhbHVlIik7Ci1zaG91bGRUaHJvdygnKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBj
b25zdHJ1Y3RvcigpIHsgKChhID0gdGhpcyk9PnsgcmV0dXJuIGE7IH0pKCkgfSB9KScsICciUmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iJyk7Ci1z
aG91bGRUaHJvdygnKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0g
dGhpcywgYj1zdXBlcigpKT0+eyByZXR1cm4gYTsgfSkoKSB9IH0pJywgJyJSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKK3Nob3VsZFRocm93
KCcobmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSB0aGlzKT0+eyBy
ZXR1cm4gYTsgfSkoKSB9IH0pJywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUg
Y2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3Ig
cmV0dXJuaW5nIG5vbi1vYmplY3QuImApOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5k
cyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHRoaXMsIGI9c3VwZXIoKSk9PnsgcmV0dXJuIGE7
IH0pKCkgfSB9KScsIGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBp
biBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmlu
ZyBub24tb2JqZWN0LiJgKTsKIHNob3VsZE5vdFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgQSB7
IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBuZXcudGFyZ2V0KT0+eyByZXR1cm4gYTsgfSkoKTsgc3Vw
ZXIoKTsgfSB9KScpOwogc2hvdWxkTm90VGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29u
c3RydWN0b3IoKSB7ICgoYSA9IG5ldy50YXJnZXQsIGI9c3VwZXIoKSk9PnsgcmV0dXJuIGE7IH0p
KCkgfSB9KScpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1zdXBlcnByb3BlcnR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMJKHJldmlzaW9uIDI3MTExNikK
KysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVy
dHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc2hvdWxkQmUoJyhuZXcgQigp
KS5nZXRWYWx1ZVBhcmVudEZ1bmN0aQogCiBzaG91bGRCZSgnKG5ldyBDKGZhbHNlKSkudmFsdWUn
LCAnZXhwZWN0ZWRWYWx1ZScpOwogCi1zaG91bGRUaHJvdygnKG5ldyBDKHRydWUpKScsICciUmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iJyk7Citz
aG91bGRUaHJvdygnKG5ldyBDKHRydWUpKScsIGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBt
dXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRo
aXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJgKTsKIAogc2hvdWxkQmUoJ0UuZ2V0UGFyZW50
U3RhdGljVmFsdWUoKScsICdleHBlY3RlZFZhbHVlJyk7CiAKQEAgLTk1LDEzICs5NSwxMyBAQCBz
aG91bGRCZSgnKG5ldyBGKCkpLmdlbkdldFBhcmVudFZhbHVlRGVlCiBzaG91bGRCZSgnKG5ldyBj
bGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIoKSwgYiA9IHN1cGVy
LmdldFZhbHVlKCkpPT57IHRoaXMuaWQgPSBiOyB9KSgpIH0gfSkuaWQnLCAnZXhwZWN0ZWRWYWx1
ZScpOwogdmFyIGV4cGVjdGVkTmV3VGFyZ2V0Owogc2hvdWxkQmUoJyhuZXcgY2xhc3MgZXh0ZW5k
cyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCksIGIgPSBuZXcudGFyZ2V0KT0+eyB0
aGlzLm5ld1RhcmdldCA9IGI7IH0pKCk7IGV4cGVjdGVkTmV3VGFyZ2V0ID0gbmV3LnRhcmdldDt9
IH0pLm5ld1RhcmdldCcsICdleHBlY3RlZE5ld1RhcmdldCcpOwotc2hvdWxkVGhyb3coJyhuZXcg
Y2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdldFZhbHVlKCkp
PT57IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNj
ZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwotc2hvdWxkVGhyb3coJyhuZXcgY2xhc3Mg
ZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdldFZhbHVlKCksIGI9c3Vw
ZXIoKSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KScsICciUmVmZXJlbmNlRXJyb3I6IENhbm5v
dCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iJyk7Ci1zaG91bGRUaHJvdygnKG5ldyBj
bGFzcyBleHRlbmRzIEYgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIucHJvcCk9PnsgcmV0
dXJuIGE7IH0pKCkgfSB9KScsICciUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0
aWFsaXplZCB2YXJpYWJsZS4iJyk7Ci1zaG91bGRUaHJvdygnKG5ldyBjbGFzcyBleHRlbmRzIEYg
eyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIucHJvcCwgYj1zdXBlcigpKT0+eyByZXR1cm4g
YTsgfSkoKSB9IH0pJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNv
bnN0cnVjdG9yKCkgeyAoKGEgPSAoc3VwZXIucHJvcCA9ICJ2YWx1ZSIpKT0+eyB0aGlzLmlkID0g
YTsgfSkoKSB9IH0pJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNv
bnN0cnVjdG9yKCkgeyAoKGEgPSAoc3VwZXIucHJvcCA9ICJ2YWx1ZSIpLCBiPXN1cGVyKCkpPT57
IHRoaXMuaWQgPSBhOyB9KSgpIH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwotc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0
ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyLmdlbkdldFBhcmVudFZhbHVlKCku
bmV4dCgpLnZhbHVlKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pJywgJyJSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRocm93
KCcobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5nZW5H
ZXRQYXJlbnRWYWx1ZSgpLm5leHQoKS52YWx1ZSwgYj1zdXBlcigpKT0+eyB0aGlzLmlkID0gYTsg
fSkoKSB9IH0pJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVk
IHZhcmlhYmxlLiInKTsKK3Nob3VsZFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0
cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5nZXRWYWx1ZSgpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9
IH0pJywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2
ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1v
YmplY3QuImApOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0
b3IoKSB7ICgoYSA9IHN1cGVyLmdldFZhbHVlKCksIGI9c3VwZXIoKSk9PnsgdGhpcy5pZCA9IGE7
IH0pKCkgfSB9KScsIGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBp
biBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmlu
ZyBub24tb2JqZWN0LiJgKTsKK3Nob3VsZFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNv
bnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5wcm9wKT0+eyByZXR1cm4gYTsgfSkoKSB9IH0pJywg
YCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29u
c3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3Qu
ImApOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7
ICgoYSA9IHN1cGVyLnByb3AsIGI9c3VwZXIoKSk9PnsgcmV0dXJuIGE7IH0pKCkgfSB9KScsIGAi
UmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0
cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJg
KTsKK3Nob3VsZFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAo
KGEgPSAoc3VwZXIucHJvcCA9ICJ2YWx1ZSIpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0pJywg
YCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29u
c3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3Qu
ImApOworc2hvdWxkVGhyb3coJyhuZXcgY2xhc3MgZXh0ZW5kcyBGIHsgY29uc3RydWN0b3IoKSB7
ICgoYSA9IChzdXBlci5wcm9wID0gInZhbHVlIiksIGI9c3VwZXIoKSk9PnsgdGhpcy5pZCA9IGE7
IH0pKCkgfSB9KScsIGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBp
biBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmlu
ZyBub24tb2JqZWN0LiJgKTsKK3Nob3VsZFRocm93KCcobmV3IGNsYXNzIGV4dGVuZHMgRiB7IGNv
bnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5nZW5HZXRQYXJlbnRWYWx1ZSgpLm5leHQoKS52YWx1
ZSk9PnsgdGhpcy5pZCA9IGE7IH0pKCkgfSB9KScsIGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigp
JyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3Npbmcg
fHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJgKTsKK3Nob3VsZFRocm93KCcobmV3IGNs
YXNzIGV4dGVuZHMgRiB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlci5nZW5HZXRQYXJlbnRW
YWx1ZSgpLm5leHQoKS52YWx1ZSwgYj1zdXBlcigpKT0+eyB0aGlzLmlkID0gYTsgfSkoKSB9IH0p
JywgYCJSZWZlcmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQg
Y29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmpl
Y3QuImApOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qcwkocmV2aXNp
b24gMjcxMTE2KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1z
dXBlci5qcwkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBjbGFzcyBEZXJpdmVkV2l0
aEV2YWwgZXh0ZW5kcyBCYXNlIHsKIHNob3VsZEJlVHJ1ZSgnKG5ldyBCYXNlKSBpbnN0YW5jZW9m
IEJhc2UnKTsKIHNob3VsZEJlVHJ1ZSgnKG5ldyBEZXJpdmVkKSBpbnN0YW5jZW9mIERlcml2ZWQn
KTsKIHNob3VsZEJlVHJ1ZSgnKG5ldyBEZXJpdmVkV2l0aEV2YWwpIGluc3RhbmNlb2YgRGVyaXZl
ZFdpdGhFdmFsJyk7Ci1zaG91bGRUaHJvdygnKG5ldyBEZXJpdmVkV2l0aEV2YWwodHJ1ZSkpJywg
JyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIn
KTsKK3Nob3VsZFRocm93KCcobmV3IERlcml2ZWRXaXRoRXZhbCh0cnVlKSknLCBgIlJlZmVyZW5j
ZUVycm9yOiAnc3VwZXIoKScgbXVzdCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBi
ZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4iYCk7CiBzaG91
bGRCZSgnKG5ldyBEZXJpdmVkKS5jYWxsQmFzZU1ldGhvZCgpJywgJ2Jhc2VNZXRob2RWYWx1ZScp
Owogc2hvdWxkQmUoJ3ggPSAobmV3IERlcml2ZWQpLmNhbGxCYXNlTWV0aG9kOyB4KCknLCAnYmFz
ZU1ldGhvZFZhbHVlJyk7CiBzaG91bGRCZSgnKG5ldyBEZXJpdmVkKS5jYWxsQmFzZU1ldGhvZElu
R2V0dGVyJywgJ2Jhc2VNZXRob2RWYWx1ZScpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHNob3VsZFRo
cm93KCduZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGMKIHNob3VsZEJlVHJ1ZSgnbmV3IChjbGFz
cyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVmaW5l
ZCB9IH0pIGluc3RhbmNlb2YgT2JqZWN0Jyk7CiBzaG91bGRCZSgneCA9IHsgfTsgbmV3IChjbGFz
cyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHggfSB9KTsnLCAneCcpOwog
c2hvdWxkQmVGYWxzZSgneCBpbnN0YW5jZW9mIEJhc2UnKTsKLXNob3VsZFRocm93KCduZXcgKGNs
YXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0pJywgJyJSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKK3Nob3VsZFRocm93
KCduZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0pJywgYCJSZWZl
cmVuY2VFcnJvcjogJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29uc3RydWN0
b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3QuImApOwog
c2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJl
dHVybiAxOyB9IH0pJywgJyJUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5
cGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CiBzaG91bGRUaHJv
dygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVm
aW5lZCB9IH0pJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25z
dHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pJywgJyJUeXBlRXJyb3I6
IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFwnc3VwZXIoKVwnKSIn
KTsKQEAgLTE0Miw5ICsxNDIsOSBAQCBzaG91bGRUaHJvdygnbmV3IChjbGFzcyB7IGNvbnN0cnVj
dG9yKCkgCiBzaG91bGRUaHJvdygnKG5ldyAoY2xhc3MgeyBtZXRob2QoKSB7IChmdW5jdGlvbiAo
KSB7IGV2YWwoInN1cGVyLm1ldGhvZCgpIik7fSkoKTsgfX0pKS5tZXRob2QoKScsICciU3ludGF4
RXJyb3I6IHN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQuIicpOwogCiBzaG91bGRU
aHJvdygnbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsg
c3VwZXIoKTt9fSknLCAnIlJlZmVyZW5jZUVycm9yOiBcJ3N1cGVyKClcJyBjYW5cJ3QgYmUgY2Fs
bGVkIG1vcmUgdGhhbiBvbmNlIGluIGEgY29uc3RydWN0b3IuIicpOwotc2hvdWxkVGhyb3coJyhu
ZXcgY2xhc3MgRCBleHRlbmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKCkgeyBldmFs
KFwnc3VwZXJbIm0iXSgpXCcpIH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwotc2hvdWxkVGhyb3coJ25ldyBjbGFzcyBleHRl
bmRzIGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlclsibSJdKHN1cGVyKCkp
IH0gfScsICciUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJp
YWJsZS4iJyk7Ci1zaG91bGRUaHJvdygnKG5ldyBjbGFzcyBEIGV4dGVuZHMgY2xhc3MgeyBtKCkg
e319IHsgY29uc3RydWN0b3IoZikgeyBzdXBlcltmKCldKCkgfSB9KCgpPT4ibSIpKScsICciUmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iJyk7Citz
aG91bGRUaHJvdygnKG5ldyBjbGFzcyBEIGV4dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3Ry
dWN0b3IoKSB7IGV2YWwoXCdzdXBlclsibSJdKClcJykgfSB9KScsIGAiUmVmZXJlbmNlRXJyb3I6
ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBh
Y2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJgKTsKK3Nob3VsZFRocm93
KCduZXcgY2xhc3MgZXh0ZW5kcyBjbGFzcyB7IG0oKSB7fX0geyBjb25zdHJ1Y3RvcigpIHsgc3Vw
ZXJbIm0iXShzdXBlcigpKSB9IH0nLCBgIlJlZmVyZW5jZUVycm9yOiAnc3VwZXIoKScgbXVzdCBi
ZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlzfCBv
ciByZXR1cm5pbmcgbm9uLW9iamVjdC4iYCk7CitzaG91bGRUaHJvdygnKG5ldyBjbGFzcyBEIGV4
dGVuZHMgY2xhc3MgeyBtKCkge319IHsgY29uc3RydWN0b3IoZikgeyBzdXBlcltmKCldKCkgfSB9
KCgpPT4ibSIpKScsIGAiUmVmZXJlbmNlRXJyb3I6ICdzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBp
biBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBhY2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmlu
ZyBub24tb2JqZWN0LiJgKTsKIAogc2hvdWxkTm90VGhyb3coJyhuZXcgY2xhc3MgRCBleHRlbmRz
IGNsYXNzIHsgbSgpIHt9fSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyBldmFsKFwnc3VwZXJb
Im0iXSgpXCcpIH0gfSknKTsKIHNob3VsZFRocm93KCduZXcgY2xhc3MgZXh0ZW5kcyBjbGFzcyB7
IG0oKSB7fX0geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgc3VwZXJbIm0iXShzdXBlcigpKSB9
IH0nLCAnIlJlZmVyZW5jZUVycm9yOiBcJ3N1cGVyKClcJyBjYW5cJ3QgYmUgY2FsbGVkIG1vcmUg
dGhhbiBvbmNlIGluIGEgY29uc3RydWN0b3IuIicpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>