<?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>240370</bug_id>
          
          <creation_ts>2022-05-12 23:16:59 -0700</creation_ts>
          <short_desc>Enhance the ARM64Disassembler to print pc indices and better branch target labels.</short_desc>
          <delta_ts>2022-05-13 15:29:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1868647</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-12 23:16:59 -0700</bug_when>
    <thetext>Details and patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868651</commentid>
    <comment_count>1</comment_count>
      <attachid>459277</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-12 23:48:55 -0700</bug_when>
    <thetext>Created attachment 459277
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868653</commentid>
    <comment_count>2</comment_count>
      <attachid>459277</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-12 23:53:56 -0700</bug_when>
    <thetext>Comment on attachment 459277
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:47
&gt; +           Introduced a FINALIZE_AND_RETURN_THUNK macro that will be used instead of
&gt; +           &quot;return FINALIZE_CODE&quot;.  By doing so, thunk labels will automatically be

The first sentence here should read: 
        Introduced a FINALIZE_AND_RETURN_THUNK macro that will be used instead of
        &quot;return FINALIZE_CODE&quot; in thunk generators.&quot;

Will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868657</commentid>
    <comment_count>3</comment_count>
      <attachid>459279</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-13 00:00:12 -0700</bug_when>
    <thetext>Created attachment 459279
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868863</commentid>
    <comment_count>4</comment_count>
      <attachid>459279</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-05-13 14:33:43 -0700</bug_when>
    <thetext>Comment on attachment 459279
proposed patch.

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

Nice. r=me

&gt; Source/JavaScriptCore/ChangeLog:33
&gt; +        2. Relative branches now show the branch target as a pc offset in addition to the
&gt; +           pc address e.g.

maybe &quot;pc offset&quot; =&gt; &quot;offset from the start of the function&quot;?

&gt; Source/JavaScriptCore/ChangeLog:44
&gt; +               &lt;828&gt; 0x10e12033c:    bl       0x10e0f0a00 -&gt; &lt;thunk: get_from_scope thunk&gt;
&gt; +              &lt;1476&gt; 0x10e120dc4:    cbnz     x16, 0x10e104100 -&gt; &lt;thunk: handleExceptionWithCallFrameRollback&gt;
&gt; +              &lt;2368&gt; 0x10e121140:    b        0x10e10c000 -&gt; &lt;thunk: DFG OSR exit generation thunk&gt;

Nice!

&gt; Source/JavaScriptCore/ChangeLog:57
&gt; +               &lt;168&gt; 0x10e1002e8:    b        0x10e120b60 -&gt; &lt;external: JIT PC&gt;

I think based on this algorithm, you mean external just in the sense that it&apos;s not owned by this exact compilation. It still might be &quot;internal&quot; to this particular CodeBlock. I wonder if this may confuse some people. But maybe it&apos;s fine. 

I&apos;d be tempted to just label all three of these things in this section without &quot;external: &quot; prefixing them.

so just &lt;LLInt PC&gt;, &lt;JIT PC&gt;, &lt;unknown&gt;

&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:112
&gt; +    FINALIZE_AND_RETURN_THUNK(patchBuffer, tag, &quot;LLInt %s jump to prologue thunk&quot;, thunkKind);

I think this is more characters than just &quot;return FINALIZE_THUNK&quot;, and doing the return manually is less magic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868871</commentid>
    <comment_count>5</comment_count>
      <attachid>459279</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-13 14:55:57 -0700</bug_when>
    <thetext>Comment on attachment 459279
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/ChangeLog:33
&gt;&gt; +           pc address e.g.
&gt; 
&gt; maybe &quot;pc offset&quot; =&gt; &quot;offset from the start of the function&quot;?

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:57
&gt;&gt; +               &lt;168&gt; 0x10e1002e8:    b        0x10e120b60 -&gt; &lt;external: JIT PC&gt;
&gt; 
&gt; I think based on this algorithm, you mean external just in the sense that it&apos;s not owned by this exact compilation. It still might be &quot;internal&quot; to this particular CodeBlock. I wonder if this may confuse some people. But maybe it&apos;s fine. 
&gt; 
&gt; I&apos;d be tempted to just label all three of these things in this section without &quot;external: &quot; prefixing them.
&gt; 
&gt; so just &lt;LLInt PC&gt;, &lt;JIT PC&gt;, &lt;unknown&gt;

SGTM.  Changed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:112
&gt;&gt; +    FINALIZE_AND_RETURN_THUNK(patchBuffer, tag, &quot;LLInt %s jump to prologue thunk&quot;, thunkKind);
&gt; 
&gt; I think this is more characters than just &quot;return FINALIZE_THUNK&quot;, and doing the return manually is less magic

The only reason I did this was because I needed to execute another statement before evaluating FINALIZE_CODE to produce the result that would be returned.  However, it looks like I can use a comma separated expression list to achieve this.  So, I&apos;ll go ahead and change all these to &quot;return FINALIZE_THUNK&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868890</commentid>
    <comment_count>6</comment_count>
      <attachid>459323</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-13 15:27:33 -0700</bug_when>
    <thetext>Created attachment 459323
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868892</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-13 15:28:57 -0700</bug_when>
    <thetext>Landed in r294180: &lt;http://trac.webkit.org/r294180&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868893</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-13 15:29:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/93270571&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459277</attachid>
            <date>2022-05-12 23:48:55 -0700</date>
            <delta_ts>2022-05-13 00:00:12 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-240370.patch</filename>
            <type>text/plain</type>
            <size>62810</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjk0MTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NyBA
QAorMjAyMi0wNS0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSB0aGUgQVJNNjREaXNhc3NlbWJsZXIgdG8gcHJpbnQgcGMgb2Zmc2V0cyBhbmQgYmV0
dGVyIGJyYW5jaCB0YXJnZXQgbGFiZWxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGlzYXNzZW1ibGllcyB1c2VkIHRvIGxvb2sgbGlrZSB0aGlzOgor
CisgICAgICAgICAgICAgMHgxMGU0ODBmZjg6ICAgIGxkdXJiICAgIHcxNywgW3gwLCAjN10KKyAg
ICAgICAgICAgICAweDEwZTQ4MGZmYzogICAgY21wICAgICAgdzE3LCAjMAorICAgICAgICAgICAg
IDB4MTBlNDgxMDAwOiAgICBiLmhpICAgMHgxMGU0ODEwM2MKKyAgICAgICAgICAgICAweDEwZTQ4
MTAwNDogICAgc3R1ciAgICAgeDAsIFtmcCwgIy03Ml0KKyAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAweDEwZTQ4MTA0MDogICAgbW92ayAgICAgeDMsICMweGZmZmUsIGxzbCAjNDgKKyAg
ICAgICAgICAgICAweDEwZTQ4MTA0NDogICAgYiAgICAgICAgMHgxMGU0ODE0ZjQKKyAgICAgICAg
ICAgICAweDEwZTQ4MTA0ODogICAgbm9wICAgICAgCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNo
LCBpdCB3aWxsIG5vdyBsb29rIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICAgPDc0OD4gMHgx
MGUxMjBhZWM6ICAgIGxkdXJiICAgIHcxNywgW3gwLCAjN10KKyAgICAgICAgICAgICAgIDw3NTI+
IDB4MTBlMTIwYWYwOiAgICBjbXAgICAgICB3MTcsICMwCisgICAgICAgICAgICAgICA8NzU2PiAw
eDEwZTEyMGFmNDogICAgYi5oaSAgICAgMHgxMGUxMjBiMzAgLT4gPDgxNj4KKyAgICAgICAgICAg
ICAgIDw3NjA+IDB4MTBlMTIwYWY4OiAgICBzdHVyICAgICB4MCwgW2ZwLCAjLTgwXQorICAgICAg
ICAgICAgICAgLi4uCisgICAgICAgICAgICAgICA8ODIwPiAweDEwZTEyMGIzNDogICAgbW92ayAg
ICAgeDMsICMweGZmZmUsIGxzbCAjNDgKKyAgICAgICAgICAgICAgIDw4MjQ+IDB4MTBlMTIwYjM4
OiAgICBiICAgICAgICAweDEwZTEyMGZjOCAtPiA8MTk5Mj4KKyAgICAgICAgICAgICAgIDw4Mjg+
IDB4MTBlMTIwYjNjOiAgICBub3AgICAgICAKKworICAgICAgICAxLiBFYWNoIGluc3RydWN0aW9u
IHBjIGlzIG5vdyBwcmVmaXhlZCB3aXRoIGFuIG9mZnNldCB2YWx1ZSBlLmcuIDw3NTY+LgorCisg
ICAgICAgIDIuIFJlbGF0aXZlIGJyYW5jaGVzIG5vdyBzaG93IHRoZSBicmFuY2ggdGFyZ2V0IGFz
IGEgcGMgb2Zmc2V0IGluIGFkZGl0aW9uIHRvIHRoZQorICAgICAgICAgICBwYyBhZGRyZXNzIGUu
Zy4KKyAgICAgICAgICAgICAgIDw3NTY+IDB4MTBlMTIwYWY0OiAgICBiLmhpICAgICAweDEwZTEy
MGIzMCAtPiA8ODE2PgorCisgICAgICAgICAgIEFsc28gZml4ZWQgYSBmb3JtYXR0aW5nIGJ1ZyB3
aGVyZSB0aGUgc3BhY2UgYmV0d2VlbiByZWxhdGl2ZSBicmFuY2ggaW5zdHJ1Y3Rpb25zCisgICAg
ICAgICAgIGFuZCB0aGVpciB0YXJnZXQgcGMgd2FzIHNob3J0IDIgc3BhY2VzLgorCisgICAgICAg
IDMuIElmIHRoZSByZWxhdGl2ZSBicmFuY2ggdGFyZ2V0IGlzIGEga25vd24gdGh1bmssIHRoZSBk
aXNhc3NlbWJsZXIgd2lsbCBub3cKKyAgICAgICAgICAgcHJpbnQgdGhlIHRodW5rIGxhYmVsIGUu
Zy4KKworICAgICAgICAgICAgICAgPDgyOD4gMHgxMGUxMjAzM2M6ICAgIGJsICAgICAgIDB4MTBl
MGYwYTAwIC0+IDx0aHVuazogZ2V0X2Zyb21fc2NvcGUgdGh1bms+CisgICAgICAgICAgICAgIDwx
NDc2PiAweDEwZTEyMGRjNDogICAgY2JueiAgICAgeDE2LCAweDEwZTEwNDEwMCAtPiA8dGh1bms6
IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjaz4KKyAgICAgICAgICAgICAgPDIz
Njg+IDB4MTBlMTIxMTQwOiAgICBiICAgICAgICAweDEwZTEwYzAwMCAtPiA8dGh1bms6IERGRyBP
U1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rPgorCisgICAgICAgICAgIEludHJvZHVjZWQgYSBGSU5B
TElaRV9BTkRfUkVUVVJOX1RIVU5LIG1hY3JvIHRoYXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YK
KyAgICAgICAgICAgInJldHVybiBGSU5BTElaRV9DT0RFIi4gIEJ5IGRvaW5nIHNvLCB0aHVuayBs
YWJlbHMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlCisgICAgICAgICAgIHJlZ2lzdGVyZWQgd2l0aCB0
aGUgZGlzYXNzZW1ibGVyLCBhbmQgd2lsbCBiZSB1c2VkIGZvciB0aGUgYWJvdmUgbG9vayB1cC4K
KworICAgICAgICAgICBUaHVuayBsYWJlbCByZWdpc3RyYXRpb24gaXMgb25seSBkb25lIGlmIGRp
c2Fzc2VtYmx5IGlzIGVuYWJsZWQuCisKKyAgICAgICAgNC4gSWYgdGhlIGJyYW5jaCB0YXJnZXQg
aXMgbmVpdGhlciBhbiBpbnRlcm5hbCBsYWJlbCBub3IgYSB0aHVuaywgdGhlbiB0aGUKKyAgICAg
ICAgICAgZGlzYXNzZW1ibGVyIHdpbGwgcHJpbnQgc29tZSB1c2VmdWwgaW5mbyBhYm91dCBpdCB0
byB0aGUgYmVzdCBvZiBpdHMKKyAgICAgICAgICAga25vd2xlZGdlIGUuZy4KKworICAgICAgICAg
ICAgICAgPDE2OD4gMHgxMGUxMDAyZTg6ICAgIGIgICAgICAgIDB4MTBlMTIwYjYwIC0+IDxleHRl
cm5hbDogSklUIFBDPgorICAgICAgICAgICAgICAgPDE2OD4gMHgxMGUxMDAyZTg6ICAgIGIgICAg
ICAgIDB4MTBlMTIwYjYwIC0+IDxleHRlcm5hbDogTExJbnQgUEM+CisgICAgICAgICAgICAgICA8
MTY4PiAweDEwZTEwMDJlODogICAgYiAgICAgICAgMHgxMGUxMjBiNjAgLT4gPGV4dGVybmFsOiB1
bmtub3duPgorCisgICAgICAgIDUuIFRoZSBkaXNhc3NlbWJsZSgpIGZ1bmN0aW9uIG5vdyB0YWtl
cyAyIGFkZGl0aW9uYWwgYXJndW1lbnRzOiBjb2RlU3RhcnQsIGFuZAorICAgICAgICAgICBjb2Rl
RW5kLiAgVGhlc2UgYXJlIG5lZWRlZCBzbyB0aGF0IHRoZSBkaXNhc3NlbWJsZXIgY2FuIGNvbXB1
dGUgdGhlIHBjIG9mZnNldAorICAgICAgICAgICBvZiBlYWNoIGluc3RydWN0aW9uLCBhcyB3ZWxs
IGFzIGRldGVybWluZSBpZiBhIGJyYW5jaCB0YXJnZXQgaXMgYW4gaW50ZXJuYWwKKyAgICAgICAg
ICAgbGFiZWwgYXQgc29tZSBvZmZzZXQsIG9yIGFuIGV4dGVybmFsIHBjLgorCisgICAgICAgIFRo
aXMgZmVhdHVyZSBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgZm9yIHRoZSBBUk02NCBkaXNh
c3NlbWJsZXIuCisKKyAgICAgICAgUHJpbnRpbmcgb2YgSklUIG9wZXJhdGlvbiBsYWJlbHMgKHZp
YSBtb3Z6ICsgbW92ayArIGluZGlyZWN0IGJyYW5jaCkgaXMgbm90IHlldAorICAgICAgICBzdXBw
b3J0ZWQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChK
U0M6OkxpbmtCdWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseUltcGwpOgorICAgICAg
ICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OnNl
dElzVGh1bmspOgorICAgICAgICAqIGIzL2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpEaXNhc3NlbWJsZXI6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6ZHVtcERp
c2Fzc2VtYmx5KToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZH
Ojpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bj
b2RlOjphcHBlbmRQQ1JlbGF0aXZlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3Nl
bWJsZXI6OkE2NERPcGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZTo6Zm9ybWF0KToKKyAg
ICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgorICAgICAgICAoSlNDOjpB
Uk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6QTY0RE9wY29kZSk6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjphcHBlbmRQQ1JlbGF0aXZlT2Zmc2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjREaXNhc3NlbWJsZXIuY3BwOgor
ICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIv
RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZGlzYXNzZW1ibGUpOgorICAgICAgICAo
SlNDOjpkaXNhc3NlbWJsZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKEpTQzo6ZW5zdXJlVGh1
bmtMYWJlbE1hcCk6CisgICAgICAgIChKU0M6OnJlZ2lzdGVyVGh1bmtMYWJlbCk6CisgICAgICAg
IChKU0M6OmxhYmVsRm9yVGh1bmspOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZSk6CisgICAgICAgICogZGlzYXNz
ZW1ibGVyL1g4NkRpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1i
bGUpOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Omdl
bmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQ
YXRoQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpjb25zaXN0ZW5jeUNoZWNrR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklU
Q2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9y
KToKKyAgICAgICAgKiBqaXQvSklURGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
RGlzYXNzZW1ibGVyOjpkdW1wKToKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1w
RGlzYXNzZW1ibHkpOgorICAgICAgICAqIGppdC9KSVREaXNhc3NlbWJsZXIuaDoKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgICogaml0L1Ns
b3dQYXRoQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6Z2VuZXJhdGVU
aHVuayk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpT
Qzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9UaHVua0dl
bmVyYXRvci5oOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAo
SlNDOjpoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpoYW5kbGVFeGNl
cHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwb3BU
aHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjp0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpsaW5rQ2FsbFRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6
bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6YXJpdHlGaXh1cEdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OnVucmVhY2hhYmxlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nR2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OnJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG9Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRl
SlNHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlV2FzbUdhdGVUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVhdGVUYWlsQ2FsbEdhdGUpOgorICAgICAgICAoSlND
OjpMTEludDo6dGFnR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnVudGFnR2F0ZVRo
dW5rKToKKyAgICAgICAgKiB5YXJyL1lhcnJEaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyRGlzYXNzZW1ibGVyOjpkdW1wKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
ckRpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiB5YXJyL1lhcnJEaXNh
c3NlbWJsZXIuaDoKKwogMjAyMi0wNS0wOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBCZXR0ZXIgaGFuZGxlIGNsb2JiZXJlZCByZWdpc3RlcnMgaW4gTzAgcmVn
aXN0ZXIgYWxsb2NhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsNyAr
NzUsMjMgQEAgTGlua0J1ZmZlcjo6Q29kZVJlZjxMaW5rQnVmZmVyUHRyVGFnPiBMaQogICAgIG91
dC5wcmludGYoIkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgIik7CiAgICAgdmFfbGlzdCBhcmdMaXN0
OwogICAgIHZhX3N0YXJ0KGFyZ0xpc3QsIGZvcm1hdCk7Ci0gICAgb3V0LnZwcmludGYoZm9ybWF0
LCBhcmdMaXN0KTsKKworICAgIGlmIChtX2lzVGh1bmspIHsKKyAgICAgICAgdmFfbGlzdCBwcmVm
bGlnaHRBcmdzOworICAgICAgICB2YV9jb3B5KHByZWZsaWdodEFyZ3MsIGFyZ0xpc3QpOworICAg
ICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gdnNucHJpbnRmKG51bGxwdHIsIDAsIGZvcm1hdCwg
cHJlZmxpZ2h0QXJncyk7CisgICAgICAgIHZhX2VuZChwcmVmbGlnaHRBcmdzKTsKKworICAgICAg
ICBjaGFyKiBidWZmZXIgPSAwOworICAgICAgICBDU3RyaW5nIGxhYmVsID0gQ1N0cmluZzo6bmV3
VW5pbml0aWFsaXplZChzdHJpbmdMZW5ndGggKyAxLCBidWZmZXIpOworICAgICAgICB2c25wcmlu
dGYoYnVmZmVyLCBzdHJpbmdMZW5ndGggKyAxLCBmb3JtYXQsIGFyZ0xpc3QpOworICAgICAgICBi
dWZmZXJbc3RyaW5nTGVuZ3RoXSA9ICdcMCc7CisgICAgICAgIG91dC5wcmludGYoIiVzIiwgYnVm
ZmVyKTsKKworICAgICAgICByZWdpc3RlclRodW5rTGFiZWwocmVzdWx0LmNvZGUoKS51bnRhZ2dl
ZEV4ZWN1dGFibGVBZGRyZXNzKCksIFdURk1vdmUobGFiZWwpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgb3V0LnZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKKwogICAgIHZhX2VuZChhcmdMaXN0KTsK
ICAgICBvdXQucHJpbnRmKCI6XG4iKTsKIApAQCAtOTAsMTQgKzEwNiwxNyBAQCBMaW5rQnVmZmVy
OjpDb2RlUmVmPExpbmtCdWZmZXJQdHJUYWc+IExpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogICAgIAorICAgIHZvaWQqIGNvZGVTdGFydCA9IGVudHJ5cG9pbnQ8RGlzYXNzZW1ibHlQ
dHJUYWc+KCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOworICAgIHZvaWQqIGNvZGVFbmQg
PSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KGNvZGVTdGFydCkgKyBzaXplKCk7CisKICAgICBpZiAo
T3B0aW9uczo6YXN5bmNEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgIENvZGVSZWY8RGlzYXNzZW1i
bHlQdHJUYWc+IGNvZGVSZWZGb3JEaXNhc3NlbWJseSA9IHJlc3VsdC5yZXRhZ2dlZDxEaXNhc3Nl
bWJseVB0clRhZz4oKTsKLSAgICAgICAgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseShoZWFkZXIs
IFdURk1vdmUoY29kZVJlZkZvckRpc2Fzc2VtYmx5KSwgbV9zaXplLCAiICAgICIpOworICAgICAg
ICBkaXNhc3NlbWJsZUFzeW5jaHJvbm91c2x5KGhlYWRlciwgV1RGTW92ZShjb2RlUmVmRm9yRGlz
YXNzZW1ibHkpLCBtX3NpemUsIGNvZGVTdGFydCwgY29kZUVuZCwgIiAgICAiKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgZGF0YUxvZyhoZWFkZXIpOwotICAgIGRp
c2Fzc2VtYmxlKHJlc3VsdC5yZXRhZ2dlZENvZGU8RGlzYXNzZW1ibHlQdHJUYWc+KCksIG1fc2l6
ZSwgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpOworICAgIGRpc2Fzc2VtYmxlKHJlc3VsdC5yZXRh
Z2dlZENvZGU8RGlzYXNzZW1ibHlQdHJUYWc+KCksIG1fc2l6ZSwgY29kZVN0YXJ0LCBjb2RlRW5k
LCAiICAgICIsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShy
ZXZpc2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Miw2ICszNDIsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fbWFpblRocmVhZEZpbmFsaXphdGlvblRhc2tzLmFwcGVuZChjcmVhdGVTaGFyZWRUYXNr
PHZvaWQoKT4oZnVuY3RvcikpOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNUaHVuaygpIHsgbV9p
c1RodW5rID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIENvZGVS
ZWY8TGlua0J1ZmZlclB0clRhZz4gZmluYWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5SW1wbCgp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIENvZGVSZWY8TGlua0J1ZmZlclB0clRhZz4gZmluYWxp
emVDb2RlV2l0aERpc2Fzc2VtYmx5SW1wbChib29sIGR1bXBEaXNhc3NlbWJseSwgY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDMsIDQpOwpAQCAtNDE3LDYgKzQx
OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSnVtcElzbGFuZCB7IGZhbHNlIH07CiAjZW5k
aWYKICAgICBib29sIG1fYWxyZWFkeURpc2Fzc2VtYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2lzVGh1bmsgeyBmYWxzZSB9OwogICAgIFByb2ZpbGUgbV9wcm9maWxlIHsgUHJvZmlsZTo6VW5j
YXRlZ29yaXplZCB9OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxMaW5rQnVmZmVyUHRyVGFn
PiBtX2NvZGU7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoTGlua0J1ZmZlciYp
Pj4+IG1fbGlua1Rhc2tzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJE
aXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0MDU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzEsMTMgKzcxLDE2IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjphZGRJbnN0KEluc3QqIGluc3QsIE0K
IAogdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoQ29kZSYgY29kZSwgUHJpbnRTdHJlYW0mIG91dCwg
TGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogYWlyUHJlZml4LCBjb25zdCBjaGFy
KiBhc21QcmVmaXgsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEluc3QmKT4mIGRvVG9FYWNoSW5z
dCkKIHsKKyAgICB2b2lkKiBjb2RlU3RhcnQgPSBsaW5rQnVmZmVyLmVudHJ5cG9pbnQ8RGlzYXNz
ZW1ibHlQdHJUYWc+KCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOworICAgIHZvaWQqIGNv
ZGVFbmQgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KGNvZGVTdGFydCkgKyAgbGlua0J1ZmZlci5z
aXplKCk7CisKICAgICBhdXRvIGR1bXBBc21SYW5nZSA9IFsmXSAoQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzdGFydExhYmVsLCBDQ2FsbEhlbHBlcnM6OkxhYmVsIGVuZExhYmVsKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHN0YXJ0TGFiZWwuaXNTZXQoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGVuZExhYmVsLmlzU2V0KCkpOwogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNhc3NlbWJs
eVB0clRhZz4gc3RhcnQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8RGlzYXNzZW1ibHlQdHJUYWc+
KHN0YXJ0TGFiZWwpOwogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNhc3NlbWJseVB0clRh
Zz4gZW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRyVGFnPihlbmRMYWJl
bCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuZC5kYXRhTG9jYXRpb248dWludHB0cl90Pigp
ID49IHN0YXJ0LmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCkpOwotICAgICAgICBkaXNhc3NlbWJs
ZShzdGFydCwgZW5kLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCkgLSBzdGFydC5kYXRhTG9jYXRp
b248dWludHB0cl90PigpLCBhc21QcmVmaXgsIG91dCk7CisgICAgICAgIGRpc2Fzc2VtYmxlKHN0
YXJ0LCBlbmQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmRhdGFMb2NhdGlvbjx1
aW50cHRyX3Q+KCksIGNvZGVTdGFydCwgY29kZUVuZCwgYXNtUHJlZml4LCBvdXQpOwogICAgIH07
CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ibG9ja3MpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDI5
NDA1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE2MiwxMSArMTYyLDE0IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkoUHJpbnQKICAgICAgICAgcHJlZml4QnVmZmVyW2kgKyBwcmVmaXhMZW5n
dGhdID0gJyAnOwogICAgIHByZWZpeEJ1ZmZlcltwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVX
aGl0ZVNwYWNlXSA9IDA7CiAgICAgCisgICAgdm9pZCogY29kZVN0YXJ0ID0gbGlua0J1ZmZlci5l
bnRyeXBvaW50PERpc2Fzc2VtYmx5UHRyVGFnPigpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICB2b2lkKiBjb2RlRW5kID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihjb2RlU3RhcnQp
ICsgIGxpbmtCdWZmZXIuc2l6ZSgpOworCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RGlzYXNzZW1i
bHlQdHJUYWc+IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRyVGFn
PihwcmV2aW91c0xhYmVsKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNhc3NlbWJseVB0clRh
Zz4gZW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRyVGFnPihjdXJyZW50
TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAgICAgQVNTRVJUKGVu
ZC5kYXRhTG9jYXRpb248dWludHB0cl90PigpID49IHN0YXJ0LmRhdGFMb2NhdGlvbjx1aW50cHRy
X3Q+KCkpOwotICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBlbmQuZGF0YUxvY2F0aW9uPHVpbnRwdHJf
dD4oKSAtIHN0YXJ0LmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5kYXRh
KCksIG91dCk7CisgICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5kYXRhTG9jYXRpb248dWludHB0
cl90PigpIC0gc3RhcnQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSwgY29kZVN0YXJ0LCBjb2Rl
RW5kLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZp
c2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMjcsNyArMTI3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBvcwogICAgIAogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25D
YWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0
KSk7CiAKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayIpOworICAgIEZJTkFMSVpFX0FORF9S
RVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiREZHIE9TUiBleGl0IGdl
bmVyYXRpb24gdGh1bmsiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKQEAgLTE3NSw3ICsxNzUsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zCiAgICAgaml0LmZhckp1bXAo
R1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkRGR09TUkVudHJ5KTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJERkcgT1NSIGVudHJ5IHRodW5rIik7CisgICAgRklOQUxJWkVfQU5E
X1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJERkcgT1NSIGVudHJ5
IHRodW5rIik7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjREaXNhc3NlbWJs
ZXIuY3BwCShyZXZpc2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNz
ZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICsz
MywyNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVQdHIsIHNpemVf
dCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCitib29sIHRyeVRv
RGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFn
PiYgY29kZVB0ciwgc2l6ZV90IHNpemUsIHZvaWQqIGNvZGVTdGFydCwgdm9pZCogY29kZUVuZCwg
Y29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KQogewotICAgIEE2NERPcGNvZGUg
YXJtNjRPcGNvZGU7Ci0KICAgICB1aW50MzJfdCogY3VycmVudFBDID0gY29kZVB0ci51bnRhZ2dl
ZEV4ZWN1dGFibGVBZGRyZXNzPHVpbnQzMl90Kj4oKTsKICAgICBzaXplX3QgYnl0ZUNvdW50ID0g
c2l6ZTsKIAorICAgIHVpbnQzMl90KiBhcm1Db2RlU3RhcnQgPSBiaXR3aXNlX2Nhc3Q8dWludDMy
X3QqPihjb2RlU3RhcnQpOworICAgIHVpbnQzMl90KiBhcm1Db2RlRW5kID0gYml0d2lzZV9jYXN0
PHVpbnQzMl90Kj4oY29kZUVuZCk7CisgICAgQTY0RE9wY29kZSBhcm02NE9wY29kZShhcm1Db2Rl
U3RhcnQsIGFybUNvZGVFbmQpOworCisgICAgdW5zaWduZWQgcGNPZmZzZXQgPSAoY3VycmVudFBD
IC0gYXJtQ29kZVN0YXJ0KSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgY2hhciBwY0luZm9bMjVd
OwogICAgIHdoaWxlIChieXRlQ291bnQpIHsKLSAgICAgICAgb3V0LnByaW50ZigiJXMlIzE2bGx4
OiAlc1xuIiwgcHJlZml4LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQQykpLCBhcm02NE9wY29kZS5kaXNhc3NlbWJsZShjdXJy
ZW50UEMpKTsKKyAgICAgICAgaWYgKGNvZGVTdGFydCkKKyAgICAgICAgICAgIHNucHJpbnRmKHBj
SW5mbywgc2l6ZW9mKHBjSW5mbykgLSAxLCAiPCV1PiAlI2xseCIsIHBjT2Zmc2V0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQ
QykpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc25wcmludGYocGNJbmZvLCBzaXplb2Yo
cGNJbmZvKSAtIDEsICIlI2xseCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oY3VycmVudFBDKSkpOworICAgICAgICBvdXQucHJpbnRmKCIl
cyUyNHM6ICVzXG4iLCBwcmVmaXgsIHBjSW5mbywgYXJtNjRPcGNvZGUuZGlzYXNzZW1ibGUoY3Vy
cmVudFBDKSk7CisgICAgICAgIHBjT2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7CiAgICAgICAg
IGN1cnJlbnRQQysrOwogICAgICAgICBieXRlQ291bnQgLT0gc2l6ZW9mKHVpbnQzMl90KTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw5
ICszNiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBkaXNhc3NlbWJsZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBzaXplX3Qg
c2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KQordXNpbmcgVGh1bmtM
YWJlbE1hcCA9IEhhc2hNYXA8dm9pZCosIENTdHJpbmc+OworTGF6eU5ldmVyRGVzdHJveWVkPFRo
dW5rTGFiZWxNYXA+IHRodW5rTGFiZWxNYXA7CisKK3ZvaWQgZGlzYXNzZW1ibGUoY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNp
emUsIHZvaWQqIGNvZGVTdGFydCwgdm9pZCogY29kZUVuZCwgY29uc3QgY2hhciogcHJlZml4LCBQ
cmludFN0cmVhbSYgb3V0KQogewotICAgIGlmICh0cnlUb0Rpc2Fzc2VtYmxlKGNvZGVQdHIsIHNp
emUsIHByZWZpeCwgb3V0KSkKKyAgICBpZiAodHJ5VG9EaXNhc3NlbWJsZShjb2RlUHRyLCBzaXpl
LCBjb2RlU3RhcnQsIGNvZGVFbmQsIHByZWZpeCwgb3V0KSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3IgcmFuZ2Ug
JXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSwg
Y29kZVB0ci51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsgc2l6ZSk7CkBAIC02
NSw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBjaGFyKiBoZWFkZXIgeyBudWxscHRyIH07CiAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPERpc2Fzc2VtYmx5UHRyVGFnPiBjb2RlUmVmOwogICAgIHNp
emVfdCBzaXplIHsgMCB9OworICAgIHZvaWQqIGNvZGVTdGFydCB7IG51bGxwdHIgfTsKKyAgICB2
b2lkKiBjb2RlRW5kIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IGNoYXIqIHByZWZpeCB7IG51bGxw
dHIgfTsKIH07CiAKQEAgLTEwNSw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBkYXRhTG9nKHRhc2stPmhlYWRlcik7Ci0gICAgICAgICAgICBkaXNhc3Nl
bWJsZSh0YXNrLT5jb2RlUmVmLmNvZGUoKSwgdGFzay0+c2l6ZSwgdGFzay0+cHJlZml4LCBXVEY6
OmRhdGFGaWxlKCkpOworICAgICAgICAgICAgZGlzYXNzZW1ibGUodGFzay0+Y29kZVJlZi5jb2Rl
KCksIHRhc2stPnNpemUsIHRhc2stPmNvZGVTdGFydCwgdGFzay0+Y29kZUVuZCwgdGFzay0+cHJl
Zml4LCBXVEY6OmRhdGFGaWxlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMxLDEy
ICsxMzYsMTQgQEAgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyJiBhc3luY2hyb25vdXNEaQogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseSgK
LSAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxE
aXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVm
aXgpCisgICAgY29uc3QgQ1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29kZVN0
YXJ0LCB2b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVmaXgpCiB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlUYXNr
PigpOwogICAgIHRhc2stPmhlYWRlciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEg
V2UgbmVlZCB0aGlzIGJlY2F1c2UgQ1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAgICAg
dGFzay0+Y29kZVJlZiA9IGNvZGVSZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CisgICAgdGFz
ay0+Y29kZVN0YXJ0ID0gY29kZVN0YXJ0OworICAgIHRhc2stPmNvZGVFbmQgPSBjb2RlRW5kOwog
ICAgIHRhc2stPnByZWZpeCA9IHByZWZpeDsKICAgICAKICAgICBhc3luY2hyb25vdXNEaXNhc3Nl
bWJsZXIoKS5lbnF1ZXVlKFdURk1vdmUodGFzaykpOwpAQCAtMTUwLDUgKzE1NywyOCBAQCB2b2lk
IHdhaXRGb3JBc3luY2hyb25vdXNEaXNhc3NlbWJseSgpCiAgICAgYXN5bmNocm9ub3VzRGlzYXNz
ZW1ibGVyKCkud2FpdFVudGlsRW1wdHkoKTsKIH0KIAorc3RhdGljIFRodW5rTGFiZWxNYXAmIGVu
c3VyZVRodW5rTGFiZWxNYXAoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKyAgICAgICAgdGh1bmtMYWJlbE1h
cC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdGh1bmtMYWJlbE1hcC5nZXQoKTsK
K30KKwordm9pZCByZWdpc3RlclRodW5rTGFiZWwodm9pZCogdGh1bmtBZGRyZXNzLCBDU3RyaW5n
JiYgbGFiZWwpCit7CisgICAgZW5zdXJlVGh1bmtMYWJlbE1hcCgpLmFkZCh0aHVua0FkZHJlc3Ms
IFdURk1vdmUobGFiZWwpKTsKK30KKworY29uc3QgY2hhciogbGFiZWxGb3JUaHVuayh2b2lkKiB0
aHVua0FkZHJlc3MpCit7CisgICAgYXV0byYgbWFwID0gZW5zdXJlVGh1bmtMYWJlbE1hcCgpOwor
ICAgIGF1dG8gaXQgPSBtYXAuZmluZCh0aHVua0FkZHJlc3MpOworICAgIGlmIChpdCA9PSBtYXAu
ZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpdC0+dmFsdWUuZGF0
YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAyOTQwNTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsMjMgKzM3LDMxIEBAIHRlbXBsYXRlPFB0clRhZz4gY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJDb2QKIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOwogCiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3NlbWJs
ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90
LCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJik7Citib29sIHRyeVRvRGlzYXNzZW1i
bGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYsIHNpemVf
dCwgdm9pZCogY29kZVN0YXJ0LCB2b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVmaXgsIFBy
aW50U3RyZWFtJik7CiAjZWxzZQotaW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCBjb25zdCBj
aGFyKiwgUHJpbnRTdHJlYW0mKQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCB2b2lkKiwg
dm9pZCosIGNvbnN0IGNoYXIqLCBQcmludFN0cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogI2VuZGlmCiAKK2lubGluZSBib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZSwgc2l6ZV90IHNpemUsIGNvbnN0
IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICByZXR1cm4gdHJ5VG9EaXNh
c3NlbWJsZShjb2RlLCBzaXplLCBudWxscHRyLCBudWxscHRyLCBwcmVmaXgsIG91dCk7Cit9CisK
IC8vIFByaW50cyBlaXRoZXIgdGhlIGRpc2Fzc2VtYmx5LCBvciBhIGxpbmUgb2YgdGV4dCBpbmRp
Y2F0aW5nIHRoYXQgZGlzYXNzZW1ibHkgZmFpbGVkIGFuZAogLy8gdGhlIHJhbmdlIG9mIG1hY2hp
bmUgY29kZSBhZGRyZXNzZXMuCi12b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwg
UHJpbnRTdHJlYW0mIG91dCk7Cit2b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mLCBzaXplX3QsIHZvaWQqIGNvZGVTdGFydCwgdm9p
ZCogY29kZUVuZCwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KTsKIAogLy8g
QXN5bmNocm9ub3VzIGRpc2Fzc2VtYmx5LiBUaGlzIGhhcHBlbnMgb24gYW5vdGhlciB0aHJlYWQs
IGFuZCBjYWxscyB0aGUgcHJvdmlkZWQKIC8vIGNhbGxiYWNrIHdoZW4gdGhlIGRpc2Fzc2VtYmx5
IGlzIGRvbmUuCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCi0gICAgY29uc3QgQ1N0
cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQdHJU
YWc+Jiwgc2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgpOworICAgIGNvbnN0IENTdHJpbmcmIGhl
YWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPERpc2Fzc2VtYmx5UHRyVGFnPiYsIHNp
emVfdCwgdm9pZCogY29kZVN0YXJ0LCB2b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVmaXgp
OwogCiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3JBc3luY2hyb25vdXNEaXNhc3NlbWJs
eSgpOwogCit2b2lkIHJlZ2lzdGVyVGh1bmtMYWJlbCh2b2lkKiB0aHVua0FkZHJlc3MsIENTdHJp
bmcmJiBsYWJlbCk7Citjb25zdCBjaGFyKiBsYWJlbEZvclRodW5rKHZvaWQqIHRodW5rQWRkcmVz
cyk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9YODZEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvWDg2RGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0
MDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9YODZEaXNhc3NlbWJs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1ib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERp
c2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZp
eCwgUHJpbnRTdHJlYW0mIG91dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwg
dm9pZCosIHZvaWQqLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCiB7CiAg
ICAgWnlkaXNEZWNvZGVyIGRlY29kZXI7CiAgICAgWnlkaXNEZWNvZGVySW5pdCgmZGVjb2Rlciwg
WllESVNfTUFDSElORV9NT0RFX0xPTkdfNjQsIFpZRElTX0FERFJFU1NfV0lEVEhfNjQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0
L0E2NERPcGNvZGUuY3BwCShyZXZpc2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgIkE2NERPcGNvZGUuaCIKIAorI2luY2x1ZGUgIkRp
c2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRl
ICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgPHN0ZGFy
Zy5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xODcsNiAr
MTkxLDI4IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGU6OmZvcm1hdCgpCiAgICAgcmV0dXJuIG1f
Zm9ybWF0QnVmZmVyOwogfQogCit2b2lkIEE2NERPcGNvZGU6OmFwcGVuZFBDUmVsYXRpdmVPZmZz
ZXQodWludDMyX3QqIHBjLCBpbnQzMl90IGltbWVkaWF0ZSkKK3sKKyAgICB1aW50MzJfdCogdGFy
Z2V0UEMgPSBwYyArIGltbWVkaWF0ZTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGJ1ZmZlclNpemUg
PSAxMDE7CisgICAgY2hhciBidWZmZXJbYnVmZmVyU2l6ZV07CisgICAgY29uc3QgY2hhciogdGFy
Z2V0SW5mbyA9IGJ1ZmZlcjsKKyAgICBpZiAoIW1fc3RhcnRQQykKKyAgICAgICAgdGFyZ2V0SW5m
byA9ICIiOworICAgIGVsc2UgaWYgKHRhcmdldFBDID49IG1fc3RhcnRQQyAmJiB0YXJnZXRQQyA8
IG1fZW5kUEMpCisgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgYnVmZmVyU2l6ZSAtIDEsICIgLT4g
PCV1PiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigodGFyZ2V0UEMgLSBtX3N0YXJ0UEMpICogc2l6
ZW9mKHVpbnQzMl90KSkpOworICAgIGVsc2UgaWYgKGNvbnN0IGNoYXIqIHRodW5rTGFiZWwgPSBs
YWJlbEZvclRodW5rKHRhcmdldFBDKSkKKyAgICAgICAgc25wcmludGYoYnVmZmVyLCBidWZmZXJT
aXplIC0gMSwgIiAtPiA8dGh1bms6ICVzPiIsIHRodW5rTGFiZWwpOworICAgIGVsc2UgaWYgKGlz
SklUUEModGFyZ2V0UEMpKQorICAgICAgICB0YXJnZXRJbmZvID0gIiAtPiA8ZXh0ZXJuYWw6IEpJ
VCBQQz4iOworICAgIGVsc2UgaWYgKExMSW50Ojppc0xMSW50UEModGFyZ2V0UEMpKQorICAgICAg
ICB0YXJnZXRJbmZvID0gIiAtPiA8ZXh0ZXJuYWw6IExMSW50IFBDPiI7CisgICAgZWxzZQorICAg
ICAgICB0YXJnZXRJbmZvID0gIiAtPiA8ZXh0ZXJuYWw6IHVua25vd24+IjsKKworICAgIGJ1ZmZl
clByaW50ZigiMHglIiBQUkl4UFRSICIlcyIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRhcmdl
dFBDKSwgIHRhcmdldEluZm8pOworfQorCiB2b2lkIEE2NERPcGNvZGU6OmFwcGVuZFJlZ2lzdGVy
TmFtZSh1bnNpZ25lZCByZWdpc3Rlck51bWJlciwgYm9vbCBpczY0Qml0KQogewogICAgIGlmIChy
ZWdpc3Rlck51bWJlciA9PSAyOSkgewpAQCAtNDEyLDcgKzQzOCw3IEBAIGNvbnN0IGNoYXIqIEE2
NERPcGNvZGVDb21wYXJlQW5kQnJhbmNoSW0KIAogY29uc3QgY2hhciogQTY0RE9wY29kZUNvbmRp
dGlvbmFsQnJhbmNoSW1tZWRpYXRlOjpmb3JtYXQoKQogewotICAgIGJ1ZmZlclByaW50ZigiICAg
Yi4lLTUuNXMiLCBjb25kaXRpb25OYW1lKGNvbmRpdGlvbigpKSk7CisgICAgYnVmZmVyUHJpbnRm
KCIgICBiLiUtNy43cyIsIGNvbmRpdGlvbk5hbWUoY29uZGl0aW9uKCkpKTsKICAgICBhcHBlbmRQ
Q1JlbGF0aXZlT2Zmc2V0KG1fY3VycmVudFBDLCBzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlh
dGUxOSgpKSk7CiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgJ
KHJldmlzaW9uIDI5NDA1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIv
QVJNNjQvQTY0RE9wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsOCArNzMsMTAgQEAgcHJp
dmF0ZToKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0KCk7CiAKLSAgICBBNjRET3Bjb2Rl
KCkKLSAgICAgICAgOiBtX29wY29kZSgwKQorICAgIEE2NERPcGNvZGUodWludDMyX3QqIHN0YXJ0
UEMgPSBudWxscHRyLCB1aW50MzJfdCogZW5kUEMgPSBudWxscHRyKQorICAgICAgICA6IG1fc3Rh
cnRQQyhzdGFydFBDKQorICAgICAgICAsIG1fZW5kUEMoZW5kUEMpCisgICAgICAgICwgbV9vcGNv
ZGUoMCkKICAgICAgICAgLCBtX2J1ZmZlck9mZnNldCgwKQogICAgIHsKICAgICAgICAgaW5pdCgp
OwpAQCAtMTg1LDEwICsxODcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJ1ZmZlclByaW50Zigi
IzB4JSIgUFJJeDY0LCBpbW1lZGlhdGUpOwogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kUENSZWxh
dGl2ZU9mZnNldCh1aW50MzJfdCogcGMsIGludDMyX3QgaW1tZWRpYXRlKQotICAgIHsKLSAgICAg
ICAgYnVmZmVyUHJpbnRmKCIweCUiIFBSSXhQVFIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBj
ICsgaW1tZWRpYXRlKSk7Ci0gICAgfQorICAgIHZvaWQgYXBwZW5kUENSZWxhdGl2ZU9mZnNldCh1
aW50MzJfdCogcGMsIGludDMyX3QgaW1tZWRpYXRlKTsKIAogICAgIHZvaWQgYXBwZW5kU2hpZnRB
bW91bnQodW5zaWduZWQgYW1vdW50KQogICAgIHsKQEAgLTE5OCw2ICsxOTcsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDgxOwogCiAgICAgY2hh
ciBtX2Zvcm1hdEJ1ZmZlcltidWZmZXJTaXplXTsKKyAgICB1aW50MzJfdCogbV9zdGFydFBDOwor
ICAgIHVpbnQzMl90KiBtX2VuZFBDOwogICAgIHVpbnQzMl90KiBtX2N1cnJlbnRQQzsKICAgICB1
aW50MzJfdCBtX29wY29kZTsKICAgICBpbnQgbV9idWZmZXJPZmZzZXQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCShyZXZpc2lvbiAyOTQwNTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAg
ICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RlRMVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rp
b25DYWxsLCBnZW5lcmF0aW9uRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICIl
cyIsIG5hbWUpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiJXMiLCBuYW1lKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNJiB2bSkKQEAg
LTI0Myw3ICsyNDMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RlRMVGh1bmspOwogICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQogICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBh
dGggY2FsbCB0aHVuayBmb3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOworICAgIEZJTkFM
SVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRMIHNs
b3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRvQ1N0cmluZyhrZXkpLmRhdGEoKSk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHJldmlzaW9uIDI5NDA1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwNSw3ICs3MDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IGdlbmVyYXRlQ29uc2lzdGVuY3lDaGVjayIpOworICAgIEZJ
TkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IGdlbmVyYXRlQ29uc2lzdGVuY3lDaGVjayIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdENv
bnNpc3RlbmN5Q2hlY2soKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CShyZXZpc2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNyArNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3JldF9oYW5kbGVyIik7CisgICAgRklOQUxJWkVfQU5E
X1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3Bf
cmV0X2hhbmRsZXIiKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyOTQw
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MSw2ICs1MSw5IEBAIEpJVERpc2Fzc2VtYmxlcjo6fkpJVERpc2Fz
c2VtYmxlcigpCiAKIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgbV9jb2RlU3RhcnQgPSBsaW5rQnVmZmVy
LmVudHJ5cG9pbnQ8RGlzYXNzZW1ibHlQdHJUYWc+KCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVz
cygpOworICAgIG1fY29kZUVuZCA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4obV9jb2RlU3RhcnQp
ICsgbGlua0J1ZmZlci5zaXplKCk7CisKICAgICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7
CiAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9s
YWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRoWzBdKTsKICAgICAKQEAgLTE2Miw3ICsxNjUs
NyBAQCB2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByCiB7CiAgICAgQ29k
ZUxvY2F0aW9uTGFiZWw8RGlzYXNzZW1ibHlQdHJUYWc+IGZyb21Mb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxEaXNhc3NlbWJseVB0clRhZz4oZnJvbSk7CiAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8RGlzYXNzZW1ibHlQdHJUYWc+IHRvTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2Y8RGlzYXNzZW1ibHlQdHJUYWc+KHRvKTsKLSAgICBkaXNhc3NlbWJsZShmcm9tTG9jYXRpb24s
IHRvTG9jYXRpb24uZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSAtIGZyb21Mb2NhdGlvbi5kYXRh
TG9jYXRpb248dWludHB0cl90PigpLCAiICAgICAgICAiLCBvdXQpOworICAgIGRpc2Fzc2VtYmxl
KGZyb21Mb2NhdGlvbiwgdG9Mb2NhdGlvbi5kYXRhTG9jYXRpb248dWludHB0cl90PigpIC0gZnJv
bUxvY2F0aW9uLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCksIG1fY29kZVN0YXJ0LCBtX2NvZGVF
bmQsICIgICAgICAgICIsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAyOTQw
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTg0LDYgKzg0LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsPiBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGg7CiAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fZW5kT2ZTbG93UGF0aDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbV9lbmRPZkNvZGU7CisgICAgdm9pZCogbV9jb2RlU3RhcnQgeyBudWxscHRyIH07CisgICAg
dm9pZCogbV9jb2RlRW5kIHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI5
NDA1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTQ3OCw3ICs0NzgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHZhbHVlSXNGYWxzZXkiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzRmFsc2V5Iik7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTY2NCw3ICs2NjQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNUcnV0aHkiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJO
X1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzVHJ1
dGh5Iik7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNzM0LDcgKzczNCw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93KSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3Rocm93X2hhbmRs
ZXIiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBvcF90aHJvd19oYW5kbGVyIik7CiB9CiAKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSQogICAgIGlmIChPcHRpb25zOjp1c2VERkdKSVQoKSkKICAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhvcGVyYXRpb25PcHRpbWl6ZUNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uT3B0aW1pemUpKTsKICNlbmRpZgotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9o
YW5kbGVyIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpAQCAtMTU2OCw3ICsxNTY4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSQogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVy
Lmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhh
bmRsZVRyYXBzKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXIiKTsK
KyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX25ld19yZWdleHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAJKHJldmlzaW9uIDI5NDA1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDcgKzE2MSw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJO
X1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0yNTUsNyArMjU1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSQogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAg
cGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbiIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC00NzcsNyArNDc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSQogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hC
dWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0g
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbiIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTU3Nyw3
ICs1NzcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlv
bkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CisgICAg
RklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNzU0LDcgKzc1NCw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ss
IENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworICAgIEZJTkFMSVpFX0FORF9S
RVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpAQCAtODY1LDcgKzg2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBh
dGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKKyAgICBGSU5BTEla
RV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJCiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsK
KyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbiIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlz
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTExOTAsNyArMTE5
MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKKyAgICBG
SU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb24iKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEyOTgsNyArMTI5OCw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENv
ZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworICAgIEZJTkFMSVpFX0FORF9SRVRV
Uk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
cHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKQEAgLTE2ODgsNyArMTY4OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5s
aW5rKHNsb3dDYXNlLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcmVz
b2x2ZV9zY29wZUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicmVzb2x2ZV9z
Y29wZSB0aHVuayIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAicmVzb2x2ZV9zY29wZSB0aHVuayIpOwogfQogCiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9yZXNvbHZlX3Njb3BlR2Vu
ZXJhdG9yKFZNJiB2bSkKQEAgLTE3MjYsNyArMTcyNiw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CiAgICAgcGF0Y2hCdWZm
ZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
UmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlv
bkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9yZXNv
bHZlX3Njb3BlIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9yZXNvbHZlX3Njb3BlIik7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5MDQsNyArMTkwNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKICAgICBwYXRj
aEJ1ZmZlci5saW5rKHNsb3dDYXNlLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
ImdldF9mcm9tX3Njb3BlIHRodW5rIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJnZXRfZnJvbV9zY29wZSB0aHVuayIpOwogfQog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRf
ZnJvbV9zY29wZUdlbmVyYXRvcihWTSYgdm0pCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgcGF0Y2hCdWZmZXIubGluayhv
cGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uR2V0RnJvbVNj
b3BlKSk7CiAgICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJl
c2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKICAgICBwYXRjaEJ1ZmZlci5saW5r
KGp1bXBUb0hhbmRsZXIsIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUiKTsKKyAgICBGSU5B
TElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX2dldF9mcm9tX3Njb3BlIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3B1
dF90b19zY29wZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0y
MTU2LDcgKzIxNTYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVy
YXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkp
OwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90b19zY29wZSIpOworICAgIEZJTkFMSVpF
X0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X3RvX3Njb3BlIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9t
X2FyZ3VtZW50cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCShyZXZpc2lvbiAy
OTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtOTQsNyArOTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIu
bGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24p
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJTbG93UGF0aENhbGwiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5L
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6
ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3Bl
Y2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAyOTQwNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OSw3
ICsxNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
bV9mYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KGZhbGxiYWNrKSk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7IGkr
KykKICAgICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbaV0uZmlyc3QsIG1f
Y2FsbHNbaV0uc2Vjb25kKTsKLSAgICAgICAgICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5r
S2luZCk7CisgICAgICAgICAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlv
biB1c2VzIGZwUmVnaXN0ZXIwIGFzIHRoZSBmaXJzdCBhcmd1bWVudApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaAkocmV2aXNpb24gMjk0MDU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzUsNiArMzUsMTIgQEAgdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2VtYmxl
ckNvZAogCiB1c2luZyBUaHVua0dlbmVyYXRvciA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gKCopKFZNJik7CiAKKyNkZWZpbmUgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVO
SyhsaW5rQnVmZmVyUmVmZXJlbmNlLCByZXN1bHRQdHJUYWcsIC4uLikgZG8geyBcCisgICAgICAg
IGxpbmtCdWZmZXJSZWZlcmVuY2Uuc2V0SXNUaHVuaygpOyBcCisgICAgICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXJSZWZlcmVuY2UsIHJlc3VsdFB0clRhZywgX19WQV9BUkdTX18p
OyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjk0MDU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNwZWNpYWxpemVkVGh1bmtKSVQuaCIKKyNpbmNs
dWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KICNpbmNs
dWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFt
Lmg+CkBAIC01NSw3ICs1Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gaGEKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxp
bmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1
cEV4Y2VwdGlvbkhhbmRsZXIpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRf
UkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlv
biIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4
Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYgdm0pCkBAIC03MSw3ICs3
Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGEKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXJGcm9tQ2FsbGVyRnJhbWUpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2si
KTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgImhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjayIpOwogfQogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNB
bmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQpAQCAtODgsNyArODksNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7CiAgICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY29udGludWF0aW9uLCBDb2RlTG9j
YXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgInBvcFRodW5rU3Rh
Y2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJO
X1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgInBvcFRodW5rU3RhY2tQcmVzZXJ2
ZXNBbmRIYW5kbGVFeGNlcHRpb24iKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCkBAIC0xMTgsNyArMTE5
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaAogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhoYW5kbGVFeGNlcHRp
b24sIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoaGFuZGxlckdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQ2hlY2tFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9B
TkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0
aW9uIik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRhZ1R5cGU+CkBAIC0xNjMsNyArMTY0LDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aAogICAgIGppdC5qdW1w
VG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJUaHJvdyBleGNl
cHRpb24gZnJvbSBjYWxsIHNsb3cgcGF0aCB0aHVuayIpOworICAgIEZJTkFMSVpFX0FORF9SRVRV
Uk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiVGhyb3cgZXhjZXB0aW9uIGZy
b20gY2FsbCBzbG93IHBhdGggdGh1bmsiKTsKIH0KIAogc3RhdGljIHZvaWQgc2xvd1BhdGhGb3Io
Q0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgU3BydF9KSVRPcGVyYXRpb25fRUdDbGkgc2xvd1Bh
dGhGdW5jdGlvbikKQEAgLTIzMiw3ICsyMzMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGxpCiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua0Nh
bGwpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKTsK
KyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKTsKIH0KIAogLy8gRm9yIGNsb3N1cmUgb3B0
aW1pemF0aW9ucywgd2Ugb25seSBpbmNsdWRlIGNhbGxzLCBzaW5jZSBpZiB5b3UncmUgdXNpbmcg
Y2xvc3VyZXMgZm9yCkBAIC0yNDQsNyArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBsaQogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtQ
b2x5bW9ycGhpY0NhbGwpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkxpbmsgcG9seW1vcnBoaWMg
Y2FsbCBzbG93IHBhdGggdGh1bmsiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkxpbmsgcG9seW1vcnBoaWMgY2FsbCBzbG93IHBh
dGggdGh1bmsiKTsKIH0KIAogLy8gRklYTUU6IFdlIHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVu
IGEgbWVnYW1vcnBoaWMgdmlydHVhbCBjYWxsIHZzLiBhIHNsb3cKQEAgLTMzMyw3ICszMzQsNyBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAgICAgc2xvd1BhdGhG
b3Ioaml0LCB2bSwgb3BlcmF0aW9uVmlydHVhbENhbGwpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VmlydHVh
bFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERSgKKyAgICBGSU5BTElaRV9BTkRfUkVU
VVJOX1RIVU5LKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsCiAgICAgICAg
ICJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVuayIsCiAgICAgICAgIG1vZGUgPT0gQ2FsbE1vZGU6
OlJlZ3VsYXIgPyAiY2FsbCIgOiBtb2RlID09IENhbGxNb2RlOjpUYWlsID8gInRhaWwgY2FsbCIg
OiAiY29uc3RydWN0Iik7CkBAIC00ODYsNyArNDg3LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0cgogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICIlcyAlcyVzIHRyYW1wb2xpbmUiLCB0aHVua0Z1bmN0aW9u
VHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbiA/ICJuYXRpdmUiIDogImludGVy
bmFsIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MgPyAiVGFpbCBXaXRo
IFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdz
ID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5nKGtpbmQpLmRhdGEo
KSk7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICIlcyAlcyVzIHRyYW1wb2xpbmUiLCB0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1
bmN0aW9uVHlwZTo6SlNGdW5jdGlvbiA/ICJuYXRpdmUiIDogImludGVybmFsIiwgZW50cnlUeXBl
ID09IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MgPyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6
IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91
dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5nKGtpbmQpLmRhdGEoKSk7CiB9CiAKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSYg
dm0pCkBAIC02NjUsNyArNjY2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBhcgogI2VuZGlmIC8vIEVuZCBvZiBVU0UoSlNWQUxVRTMyXzY0KSBzZWN0aW9uLgogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgImZpeHVwIGFyaXR5Iik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVS
Tl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJmaXh1cCBhcml0eSIpOwogfQog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHVucmVhY2hhYmxlR2VuZXJh
dG9yKFZNJiB2bSkKQEAgLTY3NSw3ICs2NzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHVuCiAgICAgaml0LmJyZWFrcG9pbnQoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRo
dW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJ1bnJlYWNoYWJsZSB0aHVuayIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTkso
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAidW5yZWFjaGFibGUgdGh1bmsiKTsKIH0KIAog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzdHJpbmdHZXRCeVZhbEdlbmVy
YXRvcihWTSYgdm0pCkBAIC03MjYsNyArNzI3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzdAogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJT
dHJpbmcgZ2V0X2J5X3ZhbCBzdHViIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJTdHJpbmcgZ2V0X2J5X3ZhbCBzdHViIik7CiB9
CiAKIHN0YXRpYyB2b2lkIHN0cmluZ0NoYXJMb2FkKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCkK
QEAgLTE0MTcsOCArMTQxOCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gYm8KICAgICAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkJvdW5kRnVuY3Rpb25UaHVuayk7CiAgICAgbGlua0J1
ZmZlci5saW5rKG5vQ29kZSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHZtLmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3Modm0pKSk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUoCi0gICAgICAgIGxpbmtCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
U3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxzIHdpdGggbm8gYXJndW1l
bnRzIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhsaW5rQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRo
IG5vIGFyZ3VtZW50cyIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCkBAIC0xNjI3LDggKzE2Mjcs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlCiAKICAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OlJlbW90ZUZ1bmN0aW9uVGh1bmspOwogICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFp
bENhbGxXaXRob3V0U2F2ZWRUYWdzKHZtKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAot
ICAgICAgICBsaW5rQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZv
ciByZW1vdGUgZnVuY3Rpb24gY2FsbHMiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5L
KGxpbmtCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIHJlbW90
ZSBmdW5jdGlvbiBjYWxscyIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMjk0MDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0
YWc+IGdlbmVyYQogICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOworICAgIEZJTkFMSVpF
X0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHRodW5rIiwgdGh1
bmtLaW5kKTsKIH0KIAogdGVtcGxhdGU8UHRyVGFnIHRhZz4KQEAgLTEwOSw3ICsxMDksNyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhCiAgICAgaml0LmZhckp1bXAo
c2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwot
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBqdW1w
IHRvIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJO
X1RIVU5LKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBqdW1wIHRvIHByb2xvZ3VlIHRodW5r
IiwgdGh1bmtLaW5kKTsKIH0KIAogdGVtcGxhdGU8UHRyVGFnIHRhZz4KQEAgLTExOSw3ICsxMTks
NyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhCiAgICAgYXNzZXJ0
SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKICAgICBqaXQuZmFySnVtcChD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgT3BlcmF0aW9uUHRyVGFnKTsKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpMTEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgdGFnLCAiTExJbnQgJXMgcmV0dXJuIHBvaW50IHRodW5rIiwgdGh1bmtLaW5kKTsKKyAg
ICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBy
ZXR1cm4gcG9pbnQgdGh1bmsiLCB0aHVua0tpbmQpOwogfQogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFn
PgpAQCAtNDE5LDcgKzQxOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHIKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUNSwgT3BlcmF0aW9uUHRyVGFnKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1
bmsiLCBuYW1lKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBO
YXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsK
IH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRl
V2FzbUdhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFnLCBjb25zdCBjaGFyKiBuYW1l
KQpAQCAtNDMxLDcgKzQzMSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHIKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEsIE9wZXJhdGlv
blB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQgJXMgd2Fz
bSBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5L
KHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyB3YXNtIGNhbGwg
Z2F0ZSB0aHVuayIsIG5hbWUpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2FsbEdhdGUoUHRyVGFnIHRhZywgYm9vbCB1bnRhZykK
QEAgLTQ0NSw3ICs0NDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyCiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFI3LCB0YWcpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6TExJbnRUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7
CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnLCAiTExJbnQgdGFpbCBjYWxsIGdhdGUgdGh1bmsiKTsKIH0KIAogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gbG9vcE9TUkVudHJ5R2F0ZVRodW5r
KCkKQEAgLTUzNiw3ICs1MzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyCiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidGFnIHRodW5rIik7CisgICAgRklO
QUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
LCAidGFnIHRodW5rIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIpCkBAIC01NTEsNyArNTUxLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogICAgIGppdC5mYXJK
dW1wKEdQUkluZm86OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJ
bnRUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZywgInVudGFnIHRodW5rIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9U
SFVOSyhwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsK
IH0KIAogI2VuZGlmIC8vIENQVShBUk02NEUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0MDU0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckRpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTgsNiArNTgsOSBAQCBZYXJyRGlzYXNzZW1ibGVyOjp+WWFyckRpc2Fzc2VtYmxlcigpCiAK
IHZvaWQgWWFyckRpc2Fzc2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKQogeworICAgIG1fY29kZVN0YXJ0ID0gbGlua0J1ZmZlci5lbnRyeXBvaW50
PERpc2Fzc2VtYmx5UHRyVGFnPigpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICBt
X2NvZGVFbmQgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KG1fY29kZVN0YXJ0KSArIGxpbmtCdWZm
ZXIuc2l6ZSgpOworCiAgICAgZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGR1bXBE
aXNhc3NlbWJseShvdXQsIGluZGVudFN0cmluZygpLCBsaW5rQnVmZmVyLCBtX3N0YXJ0T2ZDb2Rl
LCBtX2xhYmVsRm9yR2VuZXJhdGVZYXJyT3BbMF0pOwogCkBAIC0xNDMsNyArMTQ2LDcgQEAgdm9p
ZCBZYXJyRGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkoUAogewogICAgIENvZGVMb2NhdGlv
bkxhYmVsPERpc2Fzc2VtYmx5UHRyVGFnPiBmcm9tTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Y8RGlzYXNzZW1ibHlQdHJUYWc+KGZyb20pOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPERp
c2Fzc2VtYmx5UHRyVGFnPiB0b0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fz
c2VtYmx5UHRyVGFnPih0byk7Ci0gICAgZGlzYXNzZW1ibGUoZnJvbUxvY2F0aW9uLCB0b0xvY2F0
aW9uLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCkgLSBmcm9tTG9jYXRpb24uZGF0YUxvY2F0aW9u
PHVpbnRwdHJfdD4oKSwgcHJlZml4LCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2NhdGlv
biwgdG9Mb2NhdGlvbi5kYXRhTG9jYXRpb248dWludHB0cl90PigpIC0gZnJvbUxvY2F0aW9uLmRh
dGFMb2NhdGlvbjx1aW50cHRyX3Q+KCksIG1fY29kZVN0YXJ0LCBtX2NvZGVFbmQsIHByZWZpeCwg
b3V0KTsKIH0KIAogfX0gLy8gbmFtZXNwYWNlIFlhcnIgbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckRpc2Fzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJEaXNhc3NlbWJsZXIuaAkocmV2aXNpb24g
Mjk0MDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckRpc2Fzc2VtYmxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEwNiw2ICsxMDYsOCBAQCBwcml2YXRlOgogICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBtX2VuZE9mR2VuZXJhdGU7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1f
ZW5kT2ZCYWNrdHJhY2s7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZW5kT2ZDb2RlOwor
ICAgIHZvaWQqIG1fY29kZVN0YXJ0IHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fY29kZUVuZCB7
IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2luZGVudExldmVsIHsgMCB9OwogfTsKIAo=
</data>
<flag name="commit-queue"
          id="488325"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459279</attachid>
            <date>2022-05-13 00:00:12 -0700</date>
            <delta_ts>2022-05-13 15:27:33 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-240370.patch</filename>
            <type>text/plain</type>
            <size>64445</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAyMi0wNS0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSB0aGUgQVJNNjREaXNhc3NlbWJsZXIgdG8gcHJpbnQgcGMgb2Zmc2V0cyBhbmQgYmV0
dGVyIGJyYW5jaCB0YXJnZXQgbGFiZWxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGlzYXNzZW1ibGllcyB1c2VkIHRvIGxvb2sgbGlrZSB0aGlzOgor
CisgICAgICAgICAgICAgMHgxMGU0ODBmZjg6ICAgIGxkdXJiICAgIHcxNywgW3gwLCAjN10KKyAg
ICAgICAgICAgICAweDEwZTQ4MGZmYzogICAgY21wICAgICAgdzE3LCAjMAorICAgICAgICAgICAg
IDB4MTBlNDgxMDAwOiAgICBiLmhpICAgMHgxMGU0ODEwM2MKKyAgICAgICAgICAgICAweDEwZTQ4
MTAwNDogICAgc3R1ciAgICAgeDAsIFtmcCwgIy03Ml0KKyAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAweDEwZTQ4MTA0MDogICAgbW92ayAgICAgeDMsICMweGZmZmUsIGxzbCAjNDgKKyAg
ICAgICAgICAgICAweDEwZTQ4MTA0NDogICAgYiAgICAgICAgMHgxMGU0ODE0ZjQKKyAgICAgICAg
ICAgICAweDEwZTQ4MTA0ODogICAgbm9wICAgICAgCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNo
LCBpdCB3aWxsIG5vdyBsb29rIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICAgPDc0OD4gMHgx
MGUxMjBhZWM6ICAgIGxkdXJiICAgIHcxNywgW3gwLCAjN10KKyAgICAgICAgICAgICAgIDw3NTI+
IDB4MTBlMTIwYWYwOiAgICBjbXAgICAgICB3MTcsICMwCisgICAgICAgICAgICAgICA8NzU2PiAw
eDEwZTEyMGFmNDogICAgYi5oaSAgICAgMHgxMGUxMjBiMzAgLT4gPDgxNj4KKyAgICAgICAgICAg
ICAgIDw3NjA+IDB4MTBlMTIwYWY4OiAgICBzdHVyICAgICB4MCwgW2ZwLCAjLTgwXQorICAgICAg
ICAgICAgICAgLi4uCisgICAgICAgICAgICAgICA8ODIwPiAweDEwZTEyMGIzNDogICAgbW92ayAg
ICAgeDMsICMweGZmZmUsIGxzbCAjNDgKKyAgICAgICAgICAgICAgIDw4MjQ+IDB4MTBlMTIwYjM4
OiAgICBiICAgICAgICAweDEwZTEyMGZjOCAtPiA8MTk5Mj4KKyAgICAgICAgICAgICAgIDw4Mjg+
IDB4MTBlMTIwYjNjOiAgICBub3AgICAgICAKKworICAgICAgICAxLiBFYWNoIGluc3RydWN0aW9u
IHBjIGlzIG5vdyBwcmVmaXhlZCB3aXRoIGFuIG9mZnNldCB2YWx1ZSBlLmcuIDw3NTY+LgorCisg
ICAgICAgIDIuIFJlbGF0aXZlIGJyYW5jaGVzIG5vdyBzaG93IHRoZSBicmFuY2ggdGFyZ2V0IGFz
IGEgcGMgb2Zmc2V0IGluIGFkZGl0aW9uIHRvIHRoZQorICAgICAgICAgICBwYyBhZGRyZXNzIGUu
Zy4KKyAgICAgICAgICAgICAgIDw3NTY+IDB4MTBlMTIwYWY0OiAgICBiLmhpICAgICAweDEwZTEy
MGIzMCAtPiA8ODE2PgorCisgICAgICAgICAgIEFsc28gZml4ZWQgYSBmb3JtYXR0aW5nIGJ1ZyB3
aGVyZSB0aGUgc3BhY2UgYmV0d2VlbiByZWxhdGl2ZSBicmFuY2ggaW5zdHJ1Y3Rpb25zCisgICAg
ICAgICAgIGFuZCB0aGVpciB0YXJnZXQgcGMgd2FzIHNob3J0IDIgc3BhY2VzLgorCisgICAgICAg
IDMuIElmIHRoZSByZWxhdGl2ZSBicmFuY2ggdGFyZ2V0IGlzIGEga25vd24gdGh1bmssIHRoZSBk
aXNhc3NlbWJsZXIgd2lsbCBub3cKKyAgICAgICAgICAgcHJpbnQgdGhlIHRodW5rIGxhYmVsIGUu
Zy4KKworICAgICAgICAgICAgICAgPDgyOD4gMHgxMGUxMjAzM2M6ICAgIGJsICAgICAgIDB4MTBl
MGYwYTAwIC0+IDx0aHVuazogZ2V0X2Zyb21fc2NvcGUgdGh1bms+CisgICAgICAgICAgICAgIDwx
NDc2PiAweDEwZTEyMGRjNDogICAgY2JueiAgICAgeDE2LCAweDEwZTEwNDEwMCAtPiA8dGh1bms6
IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjaz4KKyAgICAgICAgICAgICAgPDIz
Njg+IDB4MTBlMTIxMTQwOiAgICBiICAgICAgICAweDEwZTEwYzAwMCAtPiA8dGh1bms6IERGRyBP
U1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rPgorCisgICAgICAgICAgIEludHJvZHVjZWQgYSBGSU5B
TElaRV9BTkRfUkVUVVJOX1RIVU5LIG1hY3JvIHRoYXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YK
KyAgICAgICAgICAgInJldHVybiBGSU5BTElaRV9DT0RFIiBpbiB0aHVuayBnZW5lcmF0b3JzLiAg
QnkgZG9pbmcgc28sIHRodW5rIGxhYmVscyB3aWxsCisgICAgICAgICAgIGF1dG9tYXRpY2FsbHkg
YmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkaXNhc3NlbWJsZXIsIGFuZCB3aWxsIGJlIHVzZWQgZm9y
IHRoZQorICAgICAgICAgICBhYm92ZSBsb29rIHVwLgorCisgICAgICAgICAgIFRodW5rIGxhYmVs
IHJlZ2lzdHJhdGlvbiBpcyBvbmx5IGRvbmUgaWYgZGlzYXNzZW1ibHkgaXMgZW5hYmxlZC4KKwor
ICAgICAgICA0LiBJZiB0aGUgYnJhbmNoIHRhcmdldCBpcyBuZWl0aGVyIGFuIGludGVybmFsIGxh
YmVsIG5vciBhIHRodW5rLCB0aGVuIHRoZQorICAgICAgICAgICBkaXNhc3NlbWJsZXIgd2lsbCBw
cmludCBzb21lIHVzZWZ1bCBpbmZvIGFib3V0IGl0IHRvIHRoZSBiZXN0IG9mIGl0cworICAgICAg
ICAgICBrbm93bGVkZ2UgZS5nLgorCisgICAgICAgICAgICAgICA8MTY4PiAweDEwZTEwMDJlODog
ICAgYiAgICAgICAgMHgxMGUxMjBiNjAgLT4gPGV4dGVybmFsOiBKSVQgUEM+CisgICAgICAgICAg
ICAgICA8MTY4PiAweDEwZTEwMDJlODogICAgYiAgICAgICAgMHgxMGUxMjBiNjAgLT4gPGV4dGVy
bmFsOiBMTEludCBQQz4KKyAgICAgICAgICAgICAgIDwxNjg+IDB4MTBlMTAwMmU4OiAgICBiICAg
ICAgICAweDEwZTEyMGI2MCAtPiA8ZXh0ZXJuYWw6IHVua25vd24+CisKKyAgICAgICAgNS4gVGhl
IGRpc2Fzc2VtYmxlKCkgZnVuY3Rpb24gbm93IHRha2VzIDIgYWRkaXRpb25hbCBhcmd1bWVudHM6
IGNvZGVTdGFydCwgYW5kCisgICAgICAgICAgIGNvZGVFbmQuICBUaGVzZSBhcmUgbmVlZGVkIHNv
IHRoYXQgdGhlIGRpc2Fzc2VtYmxlciBjYW4gY29tcHV0ZSB0aGUgcGMgb2Zmc2V0CisgICAgICAg
ICAgIG9mIGVhY2ggaW5zdHJ1Y3Rpb24sIGFzIHdlbGwgYXMgZGV0ZXJtaW5lIGlmIGEgYnJhbmNo
IHRhcmdldCBpcyBhbiBpbnRlcm5hbAorICAgICAgICAgICBsYWJlbCBhdCBzb21lIG9mZnNldCwg
b3IgYW4gZXh0ZXJuYWwgcGMuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBv
bmx5IHN1cHBvcnRlZCBmb3IgdGhlIEFSTTY0IGRpc2Fzc2VtYmxlci4KKworICAgICAgICBQcmlu
dGluZyBvZiBKSVQgb3BlcmF0aW9uIGxhYmVscyAodmlhIG1vdnogKyBtb3ZrICsgaW5kaXJlY3Qg
YnJhbmNoKSBpcyBub3QgeWV0CisgICAgICAgIHN1cHBvcnRlZC4KKworICAgICAgICAqIGFzc2Vt
Ymxlci9MaW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZmluYWxpemVD
b2RlV2l0aERpc2Fzc2VtYmx5SW1wbCk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6c2V0SXNUaHVuayk6CisgICAgICAgICogYjMv
YWlyL0FpckRpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkRpc2Fzc2Vt
Ymxlcjo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGRm
Zy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3Ip
OgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmFwcGVuZFBDUmVsYXRpdmVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUNvbmRpdGlv
bmFsQnJhbmNoSW1tZWRpYXRlOjpmb3JtYXQpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02
NC9BNjRET3Bjb2RlLmg6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bj
b2RlOjpBNjRET3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERP
cGNvZGU6OmFwcGVuZFBDUmVsYXRpdmVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGRpc2Fz
c2VtYmxlci9BUk02NERpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNz
ZW1ibGUpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHA6
CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAqIGRpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJsZSk6CisgICAgICAg
IChKU0M6OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjplbnN1cmVU
aHVua0xhYmVsTWFwKToKKyAgICAgICAgKEpTQzo6cmVnaXN0ZXJUaHVua0xhYmVsKToKKyAgICAg
ICAgKEpTQzo6bGFiZWxGb3JUaHVuayk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNh
c3NlbWJsZXIvUklTQ1Y2NERpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlz
YXNzZW1ibGUpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9YODZEaXNhc3NlbWJsZXIuY3BwOgor
ICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29uc2lzdGVuY3lDaGVja0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnJldHVybkZyb21CYXNlbGluZUdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVERpc2Fzc2Vt
Ymxlci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcCk6CisgICAgICAg
IChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiBqaXQv
SklURGlzYXNzZW1ibGVyLmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX3Rocm93X2hh
bmRsZXJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0
b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9wcml2YXRlX25h
bWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmdlbmVyYXRlT3BH
ZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfZnJvbV9z
Y29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVH
ZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlND
OjpKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1bmspOgorICAgICAgICAqIGppdC9TcGVjaWFs
aXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmZpbmFs
aXplKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4
Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6bGlua0NhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OmxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnZpcnR1
YWxUaHVua0Zvcik6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OmFyaXR5Rml4dXBHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjp1bnJlYWNoYWJsZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OnN0cmluZ0dldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpyZW1v
dGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWUpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpTR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRl
VGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRhZ0dhdGVUaHVuayk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojp1bnRhZ0dhdGVUaHVuayk6CisgICAgICAgICogeWFyci9ZYXJyRGlz
YXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckRpc2Fzc2VtYmxlcjo6ZHVt
cCk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJs
eSk6CisgICAgICAgICogeWFyci9ZYXJyRGlzYXNzZW1ibGVyLmg6CisKIDIwMjItMDUtMDggIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQmV0dGVyIGhhbmRsZSBj
bG9iYmVyZWQgcmVnaXN0ZXJzIGluIE8wIHJlZ2lzdGVyIGFsbG9jYXRpb24KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2aXNpb24g
Mjk0MTQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDcgKzc1LDIzIEBAIExpbmtCdWZmZXI6OkNvZGVSZWY8
TGlua0J1ZmZlclB0clRhZz4gTGkKICAgICBvdXQucHJpbnRmKCJHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yICIpOwogICAgIHZhX2xpc3QgYXJnTGlzdDsKICAgICB2YV9zdGFydChhcmdMaXN0LCBmb3Jt
YXQpOwotICAgIG91dC52cHJpbnRmKGZvcm1hdCwgYXJnTGlzdCk7CisKKyAgICBpZiAobV9pc1Ro
dW5rKSB7CisgICAgICAgIHZhX2xpc3QgcHJlZmxpZ2h0QXJnczsKKyAgICAgICAgdmFfY29weShw
cmVmbGlnaHRBcmdzLCBhcmdMaXN0KTsKKyAgICAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IHZz
bnByaW50ZihudWxscHRyLCAwLCBmb3JtYXQsIHByZWZsaWdodEFyZ3MpOworICAgICAgICB2YV9l
bmQocHJlZmxpZ2h0QXJncyk7CisKKyAgICAgICAgY2hhciogYnVmZmVyID0gMDsKKyAgICAgICAg
Q1N0cmluZyBsYWJlbCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoc3RyaW5nTGVuZ3RoICsg
MSwgYnVmZmVyKTsKKyAgICAgICAgdnNucHJpbnRmKGJ1ZmZlciwgc3RyaW5nTGVuZ3RoICsgMSwg
Zm9ybWF0LCBhcmdMaXN0KTsKKyAgICAgICAgYnVmZmVyW3N0cmluZ0xlbmd0aF0gPSAnXDAnOwor
ICAgICAgICBvdXQucHJpbnRmKCIlcyIsIGJ1ZmZlcik7CisKKyAgICAgICAgcmVnaXN0ZXJUaHVu
a0xhYmVsKHJlc3VsdC5jb2RlKCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpLCBXVEZNb3Zl
KGxhYmVsKSk7CisgICAgfSBlbHNlCisgICAgICAgIG91dC52cHJpbnRmKGZvcm1hdCwgYXJnTGlz
dCk7CisKICAgICB2YV9lbmQoYXJnTGlzdCk7CiAgICAgb3V0LnByaW50ZigiOlxuIik7CiAKQEAg
LTkwLDE0ICsxMDYsMTcgQEAgTGlua0J1ZmZlcjo6Q29kZVJlZjxMaW5rQnVmZmVyUHRyVGFnPiBM
aQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICB2b2lkKiBjb2RlU3Rh
cnQgPSBlbnRyeXBvaW50PERpc2Fzc2VtYmx5UHRyVGFnPigpLnVudGFnZ2VkRXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICB2b2lkKiBjb2RlRW5kID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihjb2Rl
U3RhcnQpICsgc2l6ZSgpOworCiAgICAgaWYgKE9wdGlvbnM6OmFzeW5jRGlzYXNzZW1ibHkoKSkg
ewogICAgICAgICBDb2RlUmVmPERpc2Fzc2VtYmx5UHRyVGFnPiBjb2RlUmVmRm9yRGlzYXNzZW1i
bHkgPSByZXN1bHQucmV0YWdnZWQ8RGlzYXNzZW1ibHlQdHJUYWc+KCk7Ci0gICAgICAgIGRpc2Fz
c2VtYmxlQXN5bmNocm9ub3VzbHkoaGVhZGVyLCBXVEZNb3ZlKGNvZGVSZWZGb3JEaXNhc3NlbWJs
eSksIG1fc2l6ZSwgIiAgICAiKTsKKyAgICAgICAgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseSho
ZWFkZXIsIFdURk1vdmUoY29kZVJlZkZvckRpc2Fzc2VtYmx5KSwgbV9zaXplLCBjb2RlU3RhcnQs
IGNvZGVFbmQsICIgICAgIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAog
ICAgIGRhdGFMb2coaGVhZGVyKTsKLSAgICBkaXNhc3NlbWJsZShyZXN1bHQucmV0YWdnZWRDb2Rl
PERpc2Fzc2VtYmx5UHRyVGFnPigpLCBtX3NpemUsICIgICAgIiwgV1RGOjpkYXRhRmlsZSgpKTsK
KyAgICBkaXNhc3NlbWJsZShyZXN1bHQucmV0YWdnZWRDb2RlPERpc2Fzc2VtYmx5UHRyVGFnPigp
LCBtX3NpemUsIGNvZGVTdGFydCwgY29kZUVuZCwgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpOwog
ICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NDIsNiArMzQyLDggQEAgcHVibGljOgogICAgICAgICBtX21haW5UaHJlYWRGaW5hbGl6YXRpb25U
YXNrcy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazx2b2lkKCk+KGZ1bmN0b3IpKTsKICAgICB9CiAK
KyAgICB2b2lkIHNldElzVGh1bmsoKSB7IG1faXNUaHVuayA9IHRydWU7IH0KKwogcHJpdmF0ZToK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBDb2RlUmVmPExpbmtCdWZmZXJQdHJUYWc+IGZpbmFsaXpl
Q29kZVdpdGhvdXREaXNhc3NlbWJseUltcGwoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBDb2Rl
UmVmPExpbmtCdWZmZXJQdHJUYWc+IGZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseUltcGwoYm9v
bCBkdW1wRGlzYXNzZW1ibHksIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URigzLCA0KTsKQEAgLTQxNyw2ICs0MTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c0p1bXBJc2xhbmQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBtX2FscmVhZHlEaXNhc3Nl
bWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1RodW5rIHsgZmFsc2UgfTsKICAgICBQcm9m
aWxlIG1fcHJvZmlsZSB7IFByb2ZpbGU6OlVuY2F0ZWdvcml6ZWQgfTsKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8TGlua0J1ZmZlclB0clRhZz4gbV9jb2RlOwogICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkVGFzazx2b2lkKExpbmtCdWZmZXImKT4+PiBtX2xpbmtUYXNrczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckRpc2Fzc2VtYmxlci5jcHAJKHJldmlz
aW9uIDI5NDE0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1i
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDEzICs3MSwxNiBAQCB2b2lkIERpc2Fzc2Vt
Ymxlcjo6YWRkSW5zdChJbnN0KiBpbnN0LCBNCiAKIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKENv
ZGUmIGNvZGUsIFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvbnN0
IGNoYXIqIGFpclByZWZpeCwgY29uc3QgY2hhciogYXNtUHJlZml4LCBjb25zdCBTY29wZWRMYW1i
ZGE8dm9pZChJbnN0Jik+JiBkb1RvRWFjaEluc3QpCiB7CisgICAgdm9pZCogY29kZVN0YXJ0ID0g
bGlua0J1ZmZlci5lbnRyeXBvaW50PERpc2Fzc2VtYmx5UHRyVGFnPigpLnVudGFnZ2VkRXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICB2b2lkKiBjb2RlRW5kID0gYml0d2lzZV9jYXN0PHVpbnQ4X3Qq
Pihjb2RlU3RhcnQpICsgIGxpbmtCdWZmZXIuc2l6ZSgpOworCiAgICAgYXV0byBkdW1wQXNtUmFu
Z2UgPSBbJl0gKENDYWxsSGVscGVyczo6TGFiZWwgc3RhcnRMYWJlbCwgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBlbmRMYWJlbCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGFydExhYmVsLmlzU2V0
KCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmRMYWJlbC5pc1NldCgpKTsKICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8RGlzYXNzZW1ibHlQdHJUYWc+IHN0YXJ0ID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRyVGFnPihzdGFydExhYmVsKTsKICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8RGlzYXNzZW1ibHlQdHJUYWc+IGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZjxEaXNhc3NlbWJseVB0clRhZz4oZW5kTGFiZWwpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChl
bmQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSA+PSBzdGFydC5kYXRhTG9jYXRpb248dWludHB0
cl90PigpKTsKLSAgICAgICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5kYXRhTG9jYXRpb248dWlu
dHB0cl90PigpIC0gc3RhcnQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSwgYXNtUHJlZml4LCBv
dXQpOworICAgICAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmRhdGFMb2NhdGlvbjx1aW50cHRy
X3Q+KCkgLSBzdGFydC5kYXRhTG9jYXRpb248dWludHB0cl90PigpLCBjb2RlU3RhcnQsIGNvZGVF
bmQsIGFzbVByZWZpeCwgb3V0KTsKICAgICB9OwogCiAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fYmxvY2tzKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjIsMTEgKzE2
MiwxNCBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByaW50CiAgICAgICAg
IHByZWZpeEJ1ZmZlcltpICsgcHJlZml4TGVuZ3RoXSA9ICcgJzsKICAgICBwcmVmaXhCdWZmZXJb
cHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZV0gPSAwOwogICAgIAorICAgIHZv
aWQqIGNvZGVTdGFydCA9IGxpbmtCdWZmZXIuZW50cnlwb2ludDxEaXNhc3NlbWJseVB0clRhZz4o
KS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgdm9pZCogY29kZUVuZCA9IGJpdHdp
c2VfY2FzdDx1aW50OF90Kj4oY29kZVN0YXJ0KSArICBsaW5rQnVmZmVyLnNpemUoKTsKKwogICAg
IENvZGVMb2NhdGlvbkxhYmVsPERpc2Fzc2VtYmx5UHRyVGFnPiBzdGFydCA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxEaXNhc3NlbWJseVB0clRhZz4ocHJldmlvdXNMYWJlbCk7CiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8RGlzYXNzZW1ibHlQdHJUYWc+IGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZjxEaXNhc3NlbWJseVB0clRhZz4oY3VycmVudExhYmVsKTsKICAgICBwcmV2aW91c0xhYmVsID0g
Y3VycmVudExhYmVsOwogICAgIEFTU0VSVChlbmQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSA+
PSBzdGFydC5kYXRhTG9jYXRpb248dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFy
dCwgZW5kLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCkgLSBzdGFydC5kYXRhTG9jYXRpb248dWlu
dHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKHN0
YXJ0LCBlbmQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmRhdGFMb2NhdGlvbjx1
aW50cHRyX3Q+KCksIGNvZGVTdGFydCwgY29kZUVuZCwgcHJlZml4QnVmZmVyLmRhdGEoKSwgb3V0
KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI3LDcgKzEy
Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3MKICAgICAKICAg
ICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25Db21waWxlT1NSRXhpdCkpOwogCi0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiREZHIE9TUiBleGl0IGdlbmVyYXRpb24g
dGh1bmsiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkRGRyBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIik7CiB9CiAKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihW
TSYgdm0pCkBAIC0xNzUsNyArMTc1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvcwogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlcik7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpERkdPU1JFbnRyeSk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiREZHIE9TUiBlbnRy
eSB0aHVuayIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiREZHIE9TUiBlbnRyeSB0aHVuayIpOwogfQogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FS
TTY0RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0MTQyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NERpc2Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMywxNSArMzMsMjQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNz
ZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQ
cmludFN0cmVhbSYgb3V0KQorYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVQdHIsIHNpemVfdCBzaXplLCB2b2lk
KiBjb2RlU3RhcnQsIHZvaWQqIGNvZGVFbmQsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJl
YW0mIG91dCkKIHsKLSAgICBBNjRET3Bjb2RlIGFybTY0T3Bjb2RlOwotCiAgICAgdWludDMyX3Qq
IGN1cnJlbnRQQyA9IGNvZGVQdHIudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzczx1aW50MzJfdCo+
KCk7CiAgICAgc2l6ZV90IGJ5dGVDb3VudCA9IHNpemU7CiAKKyAgICB1aW50MzJfdCogYXJtQ29k
ZVN0YXJ0ID0gYml0d2lzZV9jYXN0PHVpbnQzMl90Kj4oY29kZVN0YXJ0KTsKKyAgICB1aW50MzJf
dCogYXJtQ29kZUVuZCA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdCo+KGNvZGVFbmQpOworICAgIEE2
NERPcGNvZGUgYXJtNjRPcGNvZGUoYXJtQ29kZVN0YXJ0LCBhcm1Db2RlRW5kKTsKKworICAgIHVu
c2lnbmVkIHBjT2Zmc2V0ID0gKGN1cnJlbnRQQyAtIGFybUNvZGVTdGFydCkgKiBzaXplb2YodWlu
dDMyX3QpOworICAgIGNoYXIgcGNJbmZvWzI1XTsKICAgICB3aGlsZSAoYnl0ZUNvdW50KSB7Ci0g
ICAgICAgIG91dC5wcmludGYoIiVzJSMxNmxseDogJXNcbiIsIHByZWZpeCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMpKSwg
YXJtNjRPcGNvZGUuZGlzYXNzZW1ibGUoY3VycmVudFBDKSk7CisgICAgICAgIGlmIChjb2RlU3Rh
cnQpCisgICAgICAgICAgICBzbnByaW50ZihwY0luZm8sIHNpemVvZihwY0luZm8pIC0gMSwgIjwl
dT4gJSNsbHgiLCBwY09mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHNucHJpbnRmKHBjSW5mbywgc2l6ZW9mKHBjSW5mbykgLSAxLCAiJSNsbHgiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQ
QykpKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMlMjRzOiAlc1xuIiwgcHJlZml4LCBwY0luZm8s
IGFybTY0T3Bjb2RlLmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOworICAgICAgICBwY09mZnNldCAr
PSBzaXplb2YodWludDMyX3QpOwogICAgICAgICBjdXJyZW50UEMrKzsKICAgICAgICAgYnl0ZUNv
dW50IC09IHNpemVvZih1aW50MzJfdCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5j
cHAJKHJldmlzaW9uIDI5NDE0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvQ2Fwc3RvbmVEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1ib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNp
emUsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKK2Jvb2wgdHJ5VG9EaXNh
c3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBj
b2RlUHRyLCBzaXplX3Qgc2l6ZSwgdm9pZCosIHZvaWQqLCBjb25zdCBjaGFyKiBwcmVmaXgsIFBy
aW50U3RyZWFtJiBvdXQpCiB7CiAgICAgY3NoIGhhbmRsZTsKICAgICBjc19pbnNuKiBpbnN0cnVj
dGlvbnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2Vt
Ymxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Niw5ICszNiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBkaXNhc3NlbWJsZShjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBzaXpl
X3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KQordXNpbmcgVGh1
bmtMYWJlbE1hcCA9IEhhc2hNYXA8dm9pZCosIENTdHJpbmc+OworTGF6eU5ldmVyRGVzdHJveWVk
PFRodW5rTGFiZWxNYXA+IHRodW5rTGFiZWxNYXA7CisKK3ZvaWQgZGlzYXNzZW1ibGUoY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90
IHNpemUsIHZvaWQqIGNvZGVTdGFydCwgdm9pZCogY29kZUVuZCwgY29uc3QgY2hhciogcHJlZml4
LCBQcmludFN0cmVhbSYgb3V0KQogewotICAgIGlmICh0cnlUb0Rpc2Fzc2VtYmxlKGNvZGVQdHIs
IHNpemUsIHByZWZpeCwgb3V0KSkKKyAgICBpZiAodHJ5VG9EaXNhc3NlbWJsZShjb2RlUHRyLCBz
aXplLCBjb2RlU3RhcnQsIGNvZGVFbmQsIHByZWZpeCwgb3V0KSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3IgcmFu
Z2UgJXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3Mo
KSwgY29kZVB0ci51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsgc2l6ZSk7CkBA
IC02NSw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBjaGFyKiBoZWFkZXIgeyBudWxscHRyIH07CiAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPERpc2Fzc2VtYmx5UHRyVGFnPiBjb2RlUmVmOwogICAg
IHNpemVfdCBzaXplIHsgMCB9OworICAgIHZvaWQqIGNvZGVTdGFydCB7IG51bGxwdHIgfTsKKyAg
ICB2b2lkKiBjb2RlRW5kIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IGNoYXIqIHByZWZpeCB7IG51
bGxwdHIgfTsKIH07CiAKQEAgLTEwNSw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBkYXRhTG9nKHRhc2stPmhlYWRlcik7Ci0gICAgICAgICAgICBkaXNh
c3NlbWJsZSh0YXNrLT5jb2RlUmVmLmNvZGUoKSwgdGFzay0+c2l6ZSwgdGFzay0+cHJlZml4LCBX
VEY6OmRhdGFGaWxlKCkpOworICAgICAgICAgICAgZGlzYXNzZW1ibGUodGFzay0+Y29kZVJlZi5j
b2RlKCksIHRhc2stPnNpemUsIHRhc2stPmNvZGVTdGFydCwgdGFzay0+Y29kZUVuZCwgdGFzay0+
cHJlZml4LCBXVEY6OmRhdGFGaWxlKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMx
LDEyICsxMzYsMTQgQEAgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyJiBhc3luY2hyb25vdXNEaQog
fSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNs
eSgKLSAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBw
cmVmaXgpCisgICAgY29uc3QgQ1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29k
ZVN0YXJ0LCB2b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVmaXgpCiB7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlU
YXNrPigpOwogICAgIHRhc2stPmhlYWRlciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVj
ayEgV2UgbmVlZCB0aGlzIGJlY2F1c2UgQ1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAg
ICAgdGFzay0+Y29kZVJlZiA9IGNvZGVSZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CisgICAg
dGFzay0+Y29kZVN0YXJ0ID0gY29kZVN0YXJ0OworICAgIHRhc2stPmNvZGVFbmQgPSBjb2RlRW5k
OwogICAgIHRhc2stPnByZWZpeCA9IHByZWZpeDsKICAgICAKICAgICBhc3luY2hyb25vdXNEaXNh
c3NlbWJsZXIoKS5lbnF1ZXVlKFdURk1vdmUodGFzaykpOwpAQCAtMTUwLDUgKzE1NywyOCBAQCB2
b2lkIHdhaXRGb3JBc3luY2hyb25vdXNEaXNhc3NlbWJseSgpCiAgICAgYXN5bmNocm9ub3VzRGlz
YXNzZW1ibGVyKCkud2FpdFVudGlsRW1wdHkoKTsKIH0KIAorc3RhdGljIFRodW5rTGFiZWxNYXAm
IGVuc3VyZVRodW5rTGFiZWxNYXAoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKyAgICAgICAgdGh1bmtMYWJl
bE1hcC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdGh1bmtMYWJlbE1hcC5nZXQo
KTsKK30KKwordm9pZCByZWdpc3RlclRodW5rTGFiZWwodm9pZCogdGh1bmtBZGRyZXNzLCBDU3Ry
aW5nJiYgbGFiZWwpCit7CisgICAgZW5zdXJlVGh1bmtMYWJlbE1hcCgpLmFkZCh0aHVua0FkZHJl
c3MsIFdURk1vdmUobGFiZWwpKTsKK30KKworY29uc3QgY2hhciogbGFiZWxGb3JUaHVuayh2b2lk
KiB0aHVua0FkZHJlc3MpCit7CisgICAgYXV0byYgbWFwID0gZW5zdXJlVGh1bmtMYWJlbE1hcCgp
OworICAgIGF1dG8gaXQgPSBtYXAuZmluZCh0aHVua0FkZHJlc3MpOworICAgIGlmIChpdCA9PSBt
YXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpdC0+dmFsdWUu
ZGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAyOTQx
NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMjMgKzM3LDMxIEBAIHRlbXBsYXRlPFB0clRhZz4gY2xh
c3MgTWFjcm9Bc3NlbWJsZXJDb2QKIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOwogCiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3Nl
bWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6
ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJik7Citib29sIHRyeVRvRGlzYXNz
ZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYsIHNp
emVfdCwgdm9pZCogY29kZVN0YXJ0LCB2b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVmaXgs
IFByaW50U3RyZWFtJik7CiAjZWxzZQotaW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCBjb25z
dCBjaGFyKiwgUHJpbnRTdHJlYW0mKQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCB2b2lk
Kiwgdm9pZCosIGNvbnN0IGNoYXIqLCBQcmludFN0cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogI2VuZGlmCiAKK2lubGluZSBib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZSwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICByZXR1cm4gdHJ5VG9E
aXNhc3NlbWJsZShjb2RlLCBzaXplLCBudWxscHRyLCBudWxscHRyLCBwcmVmaXgsIG91dCk7Cit9
CisKIC8vIFByaW50cyBlaXRoZXIgdGhlIGRpc2Fzc2VtYmx5LCBvciBhIGxpbmUgb2YgdGV4dCBp
bmRpY2F0aW5nIHRoYXQgZGlzYXNzZW1ibHkgZmFpbGVkIGFuZAogLy8gdGhlIHJhbmdlIG9mIG1h
Y2hpbmUgY29kZSBhZGRyZXNzZXMuCi12b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZp
eCwgUHJpbnRTdHJlYW0mIG91dCk7Cit2b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mLCBzaXplX3QsIHZvaWQqIGNvZGVTdGFydCwg
dm9pZCogY29kZUVuZCwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KTsKIAog
Ly8gQXN5bmNocm9ub3VzIGRpc2Fzc2VtYmx5LiBUaGlzIGhhcHBlbnMgb24gYW5vdGhlciB0aHJl
YWQsIGFuZCBjYWxscyB0aGUgcHJvdmlkZWQKIC8vIGNhbGxiYWNrIHdoZW4gdGhlIGRpc2Fzc2Vt
Ymx5IGlzIGRvbmUuCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCi0gICAgY29uc3Qg
Q1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQ
dHJUYWc+Jiwgc2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgpOworICAgIGNvbnN0IENTdHJpbmcm
IGhlYWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPERpc2Fzc2VtYmx5UHRyVGFnPiYs
IHNpemVfdCwgdm9pZCogY29kZVN0YXJ0LCB2b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVm
aXgpOwogCiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3JBc3luY2hyb25vdXNEaXNhc3Nl
bWJseSgpOwogCit2b2lkIHJlZ2lzdGVyVGh1bmtMYWJlbCh2b2lkKiB0aHVua0FkZHJlc3MsIENT
dHJpbmcmJiBsYWJlbCk7Citjb25zdCBjaGFyKiBsYWJlbEZvclRodW5rKHZvaWQqIHRodW5rQWRk
cmVzcyk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Rpc2Fzc2VtYmxlci9SSVNDVjY0RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1JJU0NWNjREaXNhc3NlbWJsZXIuY3BwCShy
ZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1JJ
U0NWNjREaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNyArNjMzLDcgQEAg
Q1N0cmluZyBkaXNhc3NlbWJsZU9wY29kZSh1aW50MzJfdCAqcGMpCiAKIH0gLy8gbmFtZXNwYWNl
IFJJU0NWNjREaXNhc3NlbWJsZXIKIAotYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVQdHIsIHNpemVfdCBzaXpl
LCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCitib29sIHRyeVRvRGlzYXNz
ZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29k
ZVB0ciwgc2l6ZV90IHNpemUsIHZvaWQqLCB2b2lkKiwgY29uc3QgY2hhciogcHJlZml4LCBQcmlu
dFN0cmVhbSYgb3V0KQogewogICAgIHVpbnQzMl90KiBjdXJyZW50UEMgPSBjb2RlUHRyLnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3M8dWludDMyX3QqPigpOwogICAgIHNpemVfdCBieXRlQ291bnQg
PSBzaXplOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9YODZEaXNh
c3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvWDg2RGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9YODZEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1ib29sIHRyeVRvRGlz
YXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYg
Y29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91
dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlz
YXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgdm9pZCosIHZvaWQqLCBjb25z
dCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgWnlkaXNEZWNvZGVyIGRl
Y29kZXI7CiAgICAgWnlkaXNEZWNvZGVySW5pdCgmZGVjb2RlciwgWllESVNfTUFDSElORV9NT0RF
X0xPTkdfNjQsIFpZRElTX0FERFJFU1NfV0lEVEhfNjQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCShy
ZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FS
TTY0L0E2NERPcGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksMTAgQEAKIAog
I2luY2x1ZGUgIkE2NERPcGNvZGUuaCIKIAorI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgorI2lu
Y2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5j
bHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xODcsNiArMTkxLDI4IEBAIGNvbnN0IGNo
YXIqIEE2NERPcGNvZGU6OmZvcm1hdCgpCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQog
Cit2b2lkIEE2NERPcGNvZGU6OmFwcGVuZFBDUmVsYXRpdmVPZmZzZXQodWludDMyX3QqIHBjLCBp
bnQzMl90IGltbWVkaWF0ZSkKK3sKKyAgICB1aW50MzJfdCogdGFyZ2V0UEMgPSBwYyArIGltbWVk
aWF0ZTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGJ1ZmZlclNpemUgPSAxMDE7CisgICAgY2hhciBi
dWZmZXJbYnVmZmVyU2l6ZV07CisgICAgY29uc3QgY2hhciogdGFyZ2V0SW5mbyA9IGJ1ZmZlcjsK
KyAgICBpZiAoIW1fc3RhcnRQQykKKyAgICAgICAgdGFyZ2V0SW5mbyA9ICIiOworICAgIGVsc2Ug
aWYgKHRhcmdldFBDID49IG1fc3RhcnRQQyAmJiB0YXJnZXRQQyA8IG1fZW5kUEMpCisgICAgICAg
IHNucHJpbnRmKGJ1ZmZlciwgYnVmZmVyU2l6ZSAtIDEsICIgLT4gPCV1PiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigodGFyZ2V0UEMgLSBtX3N0YXJ0UEMpICogc2l6ZW9mKHVpbnQzMl90KSkpOwor
ICAgIGVsc2UgaWYgKGNvbnN0IGNoYXIqIHRodW5rTGFiZWwgPSBsYWJlbEZvclRodW5rKHRhcmdl
dFBDKSkKKyAgICAgICAgc25wcmludGYoYnVmZmVyLCBidWZmZXJTaXplIC0gMSwgIiAtPiA8dGh1
bms6ICVzPiIsIHRodW5rTGFiZWwpOworICAgIGVsc2UgaWYgKGlzSklUUEModGFyZ2V0UEMpKQor
ICAgICAgICB0YXJnZXRJbmZvID0gIiAtPiA8ZXh0ZXJuYWw6IEpJVCBQQz4iOworICAgIGVsc2Ug
aWYgKExMSW50Ojppc0xMSW50UEModGFyZ2V0UEMpKQorICAgICAgICB0YXJnZXRJbmZvID0gIiAt
PiA8ZXh0ZXJuYWw6IExMSW50IFBDPiI7CisgICAgZWxzZQorICAgICAgICB0YXJnZXRJbmZvID0g
IiAtPiA8ZXh0ZXJuYWw6IHVua25vd24+IjsKKworICAgIGJ1ZmZlclByaW50ZigiMHglIiBQUkl4
UFRSICIlcyIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRhcmdldFBDKSwgIHRhcmdldEluZm8p
OworfQorCiB2b2lkIEE2NERPcGNvZGU6OmFwcGVuZFJlZ2lzdGVyTmFtZSh1bnNpZ25lZCByZWdp
c3Rlck51bWJlciwgYm9vbCBpczY0Qml0KQogewogICAgIGlmIChyZWdpc3Rlck51bWJlciA9PSAy
OSkgewpAQCAtNDEyLDcgKzQzOCw3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVDb21wYXJlQW5k
QnJhbmNoSW0KIAogY29uc3QgY2hhciogQTY0RE9wY29kZUNvbmRpdGlvbmFsQnJhbmNoSW1tZWRp
YXRlOjpmb3JtYXQoKQogewotICAgIGJ1ZmZlclByaW50ZigiICAgYi4lLTUuNXMiLCBjb25kaXRp
b25OYW1lKGNvbmRpdGlvbigpKSk7CisgICAgYnVmZmVyUHJpbnRmKCIgICBiLiUtNy43cyIsIGNv
bmRpdGlvbk5hbWUoY29uZGl0aW9uKCkpKTsKICAgICBhcHBlbmRQQ1JlbGF0aXZlT2Zmc2V0KG1f
Y3VycmVudFBDLCBzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlhdGUxOSgpKSk7CiAgICAgcmV0
dXJuIG1fZm9ybWF0QnVmZmVyOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgJKHJldmlzaW9uIDI5NDE0MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsOCArNzMsMTAgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBpbml0KCk7CiAKLSAgICBBNjRET3Bjb2RlKCkKLSAgICAgICAgOiBtX29w
Y29kZSgwKQorICAgIEE2NERPcGNvZGUodWludDMyX3QqIHN0YXJ0UEMgPSBudWxscHRyLCB1aW50
MzJfdCogZW5kUEMgPSBudWxscHRyKQorICAgICAgICA6IG1fc3RhcnRQQyhzdGFydFBDKQorICAg
ICAgICAsIG1fZW5kUEMoZW5kUEMpCisgICAgICAgICwgbV9vcGNvZGUoMCkKICAgICAgICAgLCBt
X2J1ZmZlck9mZnNldCgwKQogICAgIHsKICAgICAgICAgaW5pdCgpOwpAQCAtMTg1LDEwICsxODcs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJ1ZmZlclByaW50ZigiIzB4JSIgUFJJeDY0LCBpbW1l
ZGlhdGUpOwogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kUENSZWxhdGl2ZU9mZnNldCh1aW50MzJf
dCogcGMsIGludDMyX3QgaW1tZWRpYXRlKQotICAgIHsKLSAgICAgICAgYnVmZmVyUHJpbnRmKCIw
eCUiIFBSSXhQVFIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjICsgaW1tZWRpYXRlKSk7Ci0g
ICAgfQorICAgIHZvaWQgYXBwZW5kUENSZWxhdGl2ZU9mZnNldCh1aW50MzJfdCogcGMsIGludDMy
X3QgaW1tZWRpYXRlKTsKIAogICAgIHZvaWQgYXBwZW5kU2hpZnRBbW91bnQodW5zaWduZWQgYW1v
dW50KQogICAgIHsKQEAgLTE5OCw2ICsxOTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDgxOwogCiAgICAgY2hhciBtX2Zvcm1hdEJ1ZmZlclti
dWZmZXJTaXplXTsKKyAgICB1aW50MzJfdCogbV9zdGFydFBDOworICAgIHVpbnQzMl90KiBtX2Vu
ZFBDOwogICAgIHVpbnQzMl90KiBtX2N1cnJlbnRQQzsKICAgICB1aW50MzJfdCBtX29wY29kZTsK
ICAgICBpbnQgbV9idWZmZXJPZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuY3BwCShyZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAgICAgCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RlRMVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBnZW5lcmF0aW9u
RnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKLSAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICIlcyIsIG5hbWUpOworICAgIEZJ
TkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiJXMi
LCBuYW1lKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JF
eGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNJiB2bSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRM
VGh1bmspOwogICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5s
aW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBhdGggY2FsbCB0aHVuayBmb3Ig
JXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhV
TksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5r
IGZvciAlcyIsIHRvQ1N0cmluZyhrZXkpLmRhdGEoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI5NDE0
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTcwNSw3ICs3MDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IGdlbmVyYXRlQ29uc2lzdGVuY3lDaGVjayIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5f
VEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IGdlbmVyYXRlQ29u
c2lzdGVuY3lDaGVjayIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdENvbnNpc3RlbmN5Q2hlY2soKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAyOTQxNDIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjMsNyArNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IG9wX3JldF9oYW5kbGVyIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfcmV0X2hhbmRsZXIiKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
MSw2ICs1MSw5IEBAIEpJVERpc2Fzc2VtYmxlcjo6fkpJVERpc2Fzc2VtYmxlcigpCiAKIHZvaWQg
SklURGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpCiB7CisgICAgbV9jb2RlU3RhcnQgPSBsaW5rQnVmZmVyLmVudHJ5cG9pbnQ8RGlzYXNz
ZW1ibHlQdHJUYWc+KCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOworICAgIG1fY29kZUVu
ZCA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4obV9jb2RlU3RhcnQpICsgbGlua0J1ZmZlci5zaXpl
KCk7CisKICAgICBkdW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CiAgICAgZHVtcERpc2Fzc2Vt
Ymx5KG91dCwgbGlua0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckJ5dGVjb2RlSW5k
ZXhJbk1haW5QYXRoWzBdKTsKICAgICAKQEAgLTE2Miw3ICsxNjUsNyBAQCB2b2lkIEpJVERpc2Fz
c2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByCiB7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RGlz
YXNzZW1ibHlQdHJUYWc+IGZyb21Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxEaXNh
c3NlbWJseVB0clRhZz4oZnJvbSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RGlzYXNzZW1ibHlQ
dHJUYWc+IHRvTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8RGlzYXNzZW1ibHlQdHJU
YWc+KHRvKTsKLSAgICBkaXNhc3NlbWJsZShmcm9tTG9jYXRpb24sIHRvTG9jYXRpb24uZGF0YUxv
Y2F0aW9uPHVpbnRwdHJfdD4oKSAtIGZyb21Mb2NhdGlvbi5kYXRhTG9jYXRpb248dWludHB0cl90
PigpLCAiICAgICAgICAiLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2NhdGlvbiwgdG9M
b2NhdGlvbi5kYXRhTG9jYXRpb248dWludHB0cl90PigpIC0gZnJvbUxvY2F0aW9uLmRhdGFMb2Nh
dGlvbjx1aW50cHRyX3Q+KCksIG1fY29kZVN0YXJ0LCBtX2NvZGVFbmQsICIgICAgICAgICIsIG91
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVREaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg0
LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiBtX2xhYmVs
Rm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGg7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1f
ZW5kT2ZTbG93UGF0aDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9lbmRPZkNvZGU7Cisg
ICAgdm9pZCogbV9jb2RlU3RhcnQgeyBudWxscHRyIH07CisgICAgdm9pZCogbV9jb2RlRW5kIHsg
bnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI5NDE0MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVy
IDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3OCw3ICs0NzgsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaml0LnJldCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXki
KTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzRmFsc2V5Iik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X2plcV9udWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY2
NCw3ICs2NjQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAg
ICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZh
bHVlSXNUcnV0aHkiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzVHJ1dGh5Iik7CiB9CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQpAQCAtNzM0LDcgKzczNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBh
dGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvblRocm93KSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3Rocm93X2hhbmRsZXIiKTsKKyAgICBGSU5BTEla
RV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBvcF90aHJvd19oYW5kbGVyIik7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTMyMyw3
ICsxMzIzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAg
IGlmIChPcHRpb25zOjp1c2VERkdKSVQoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVy
YXRpb25PcHRpbWl6ZUNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
T3B0aW1pemUpKTsKICNlbmRpZgotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CisgICAgRklO
QUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2Nv
cGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTU2OCw3ICsx
NTY4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhbmRsZVRyYXBzKSk7CiAgICAg
cGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXIiKTsKKyAgICBGSU5BTElaRV9BTkRf
UkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9j
aGVja190cmFwc19oYW5kbGVyIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAo
Y29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDI5
NDE0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDcgKzE2MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAg
IHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC0yNTUsNyArMjU1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SQogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhl
eGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIp
OworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0
ZV9icmFuZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC00Nzcs
NyArNDc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRp
b25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworICAgIEZJTkFM
SVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
biIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTU3Nyw3ICs1NzcsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVS
Tl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9w
dXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNzU0LDcgKzc1NCw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbiIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV92YWwoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAt
ODY1LDcgKzg2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhj
ZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5L
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGwiKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDkwLDcgKzEwOTAs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNr
LCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRf
UkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEpTSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTExOTAsNyArMTE5MCw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1
bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJO
X1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEyOTgsNyArMTI5OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbiIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2lu
X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE2ODgs
NyArMTY4OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OlRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYXNlLCBDb2Rl
TG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicmVzb2x2ZV9zY29wZSB0aHVuayIpOworICAg
IEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
cmVzb2x2ZV9zY29wZSB0aHVuayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9yZXNvbHZlX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKQEAg
LTE3MjYsNyArMTcyNiw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SkkKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24s
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFz
ZWxpbmUpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9yZXNvbHZlX3Njb3BlIik7CisgICAg
RklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9yZXNvbHZlX3Njb3BlIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X2dldF9mcm9tX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTE5MDQsNyArMTkwNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dD
YXNlLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2Zyb21fc2Nv
cGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImdldF9mcm9tX3Njb3BlIHRo
dW5rIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJnZXRfZnJvbV9zY29wZSB0aHVuayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRv
cihWTSYgdm0pCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJCiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uR2V0RnJvbVNjb3BlKSk7CiAgICAgYXV0byBo
YW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhj
ZXB0aW9uR2VuZXJhdG9yKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGp1bXBUb0hhbmRsZXIsIENv
ZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RI
VU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9m
cm9tX3Njb3BlIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yMTU2LDcgKzIxNTYsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwogICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX3B1dF90b19zY29wZSIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTkso
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3RvX3Nj
b3BlIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCShyZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTQsNyAr
OTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24pKTsKICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJTbG93UGF0
aENhbGwiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
CShyZXZpc2lvbiAyOTQxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxp
emVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OSw3ICsxNTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWlsdXJlcywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KGZhbGxiYWNrKSk7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7IGkrKykKICAgICAgICAgICAgICAg
ICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbaV0uZmlyc3QsIG1fY2FsbHNbaV0uc2Vjb25kKTsK
LSAgICAgICAgICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCk7CisgICAgICAgICAg
ICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiB1c2VzIGZwUmVnaXN0ZXIw
IGFzIHRoZSBmaXJzdCBhcmd1bWVudApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3IuaAkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsMTIg
QEAgdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZAogCiB1c2luZyBUaHVu
a0dlbmVyYXRvciA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gKCopKFZN
Jik7CiAKKyNkZWZpbmUgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhsaW5rQnVmZmVyUmVmZXJl
bmNlLCByZXN1bHRQdHJUYWcsIC4uLikgZG8geyBcCisgICAgICAgIGxpbmtCdWZmZXJSZWZlcmVu
Y2Uuc2V0SXNUaHVuaygpOyBcCisgICAgICAgIHJldHVybiBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXJSZWZlcmVuY2UsIHJlc3VsdFB0clRhZywgX19WQV9BUkdTX18pOyBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAko
cmV2aXNpb24gMjk0MTQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTExJ
bnRUaHVua3MuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgog
I2luY2x1ZGUgIlNwZWNpYWxpemVkVGh1bmtKSVQuaCIKKyNpbmNsdWRlICJUaHVua0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RkSW50RXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC01NSw3ICs1Niw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGEKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIp
KTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJoYW5kbGVFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja0dlbmVyYXRvcihWTSYgdm0pCkBAIC03MSw3ICs3Miw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGEKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1
bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUp
KTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKKyAgICBGSU5BTElaRV9B
TkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2Vw
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQpAQCAtODgsNyArODksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHBvCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgYXV0
byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwogICAg
IHBhdGNoQnVmZmVyLmxpbmsoY29udGludWF0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVy
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgInBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5k
bGVFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgInBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRp
b24iKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCkBAIC0xMTgsNyArMTE5LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaAogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhoYW5kbGVFeGNlcHRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQ2hlY2tFeGNlcHRpb24iKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFRhZ1R5cGU+CkBAIC0xNjMsNyArMTY0LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aAogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVy
KHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJUaHJvdyBleGNlcHRpb24gZnJvbSBjYWxsIHNs
b3cgcGF0aCB0aHVuayIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiVGhyb3cgZXhjZXB0aW9uIGZyb20gY2FsbCBzbG93IHBhdGgg
dGh1bmsiKTsKIH0KIAogc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoQ0NhbGxIZWxwZXJzJiBqaXQs
IFZNJiB2bSwgU3BydF9KSVRPcGVyYXRpb25fRUdDbGkgc2xvd1BhdGhGdW5jdGlvbikKQEAgLTIz
Miw3ICsyMzMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpCiAg
ICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua0NhbGwpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKTsKKyAgICBGSU5BTElaRV9BTkRf
UkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkxpbmsgY2FsbCBzbG93
IHBhdGggdGh1bmsiKTsKIH0KIAogLy8gRm9yIGNsb3N1cmUgb3B0aW1pemF0aW9ucywgd2Ugb25s
eSBpbmNsdWRlIGNhbGxzLCBzaW5jZSBpZiB5b3UncmUgdXNpbmcgY2xvc3VyZXMgZm9yCkBAIC0y
NDQsNyArMjQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBsaQog
ICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwpOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkxpbmsgcG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1
bmsiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkxpbmsgcG9seW1vcnBoaWMgY2FsbCBzbG93IHBhdGggdGh1bmsiKTsKIH0KIAog
Ly8gRklYTUU6IFdlIHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWVnYW1vcnBoaWMgdmly
dHVhbCBjYWxsIHZzLiBhIHNsb3cKQEAgLTMzMyw3ICszMzQsNyBAQCBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0
aW9uVmlydHVhbENhbGwpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VmlydHVhbFRodW5rKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERSgKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKAogICAgICAg
ICBwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsCiAgICAgICAgICJWaXJ0dWFsICVzIHNsb3cg
cGF0aCB0aHVuayIsCiAgICAgICAgIG1vZGUgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2FsbCIg
OiBtb2RlID09IENhbGxNb2RlOjpUYWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0Iik7CkBA
IC00ODYsNyArNDg3LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
cgogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRo
dW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICIlcyAlcyVzIHRyYW1wb2xpbmUiLCB0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0
aW9uVHlwZTo6SlNGdW5jdGlvbiA/ICJuYXRpdmUiIDogImludGVybmFsIiwgZW50cnlUeXBlID09
IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MgPyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVu
dHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBT
YXZlZCBUYWdzICIgOiAiIiwgdG9DU3RyaW5nKGtpbmQpLmRhdGEoKSk7CisgICAgRklOQUxJWkVf
QU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICIlcyAlcyVzIHRy
YW1wb2xpbmUiLCB0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5j
dGlvbiA/ICJuYXRpdmUiIDogImludGVybmFsIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdp
dGhTYXZlZFRhZ3MgPyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRl
clZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAi
IiwgdG9DU3RyaW5nKGtpbmQpLmRhdGEoKSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCkBAIC02NjUsNyArNjY2
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcgogI2VuZGlmIC8v
IEVuZCBvZiBVU0UoSlNWQUxVRTMyXzY0KSBzZWN0aW9uLgogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmsp
OwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
ImZpeHVwIGFyaXR5Iik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJmaXh1cCBhcml0eSIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHVucmVhY2hhYmxlR2VuZXJhdG9yKFZNJiB2bSkKQEAgLTY3
NSw3ICs2NzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHVuCiAg
ICAgaml0LmJyZWFrcG9pbnQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJ1bnJlYWNoYWJsZSB0
aHVuayIpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAidW5yZWFjaGFibGUgdGh1bmsiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzdHJpbmdHZXRCeVZhbEdlbmVyYXRvcihWTSYgdm0pCkBAIC03
MjYsNyArNzI3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzdAog
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJTdHJpbmcgZ2V0X2J5X3ZhbCBz
dHViIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJTdHJpbmcgZ2V0X2J5X3ZhbCBzdHViIik7CiB9CiAKIHN0YXRpYyB2b2lkIHN0
cmluZ0NoYXJMb2FkKFNwZWNpYWxpemVkVGh1bmtKSVQmIGppdCkKQEAgLTE0MTcsOCArMTQxOCw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm8KICAgICAKICAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkJvdW5kRnVuY3Rpb25UaHVuayk7CiAgICAgbGlua0J1ZmZlci5saW5rKG5vQ29kZSwg
Q29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHZtLmppdFN0dWJzLT5jdGlOYXRpdmVU
YWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3Modm0pKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
Ci0gICAgICAgIGxpbmtCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU3BlY2lhbGl6ZWQgdGh1bmsg
Zm9yIGJvdW5kIGZ1bmN0aW9uIGNhbGxzIHdpdGggbm8gYXJndW1lbnRzIik7CisgICAgRklOQUxJ
WkVfQU5EX1JFVFVSTl9USFVOSyhsaW5rQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlNwZWNpYWxp
emVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpOwog
fQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlbW90ZUZ1bmN0aW9u
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCkBAIC0xNjI3LDggKzE2MjcsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlCiAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlJlbW90ZUZ1bmN0aW9u
VGh1bmspOwogICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFRodW5rUHRyVGFnPih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRU
YWdzKHZtKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAotICAgICAgICBsaW5rQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciByZW1vdGUgZnVuY3Rpb24g
Y2FsbHMiKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKGxpbmtCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIHJlbW90ZSBmdW5jdGlvbiBjYWxscyIp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDcg
KzgyLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYQogICAgIGpp
dC5mYXJKdW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTElu
dFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAiTExJ
bnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOworICAgIEZJTkFMSVpFX0FORF9SRVRVUk5fVEhVTkso
cGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHRodW5rIiwgdGh1bmtLaW5kKTsKIH0KIAogdGVt
cGxhdGU8UHRyVGFnIHRhZz4KQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPHRhZz4gZ2VuZXJhCiAgICAgaml0LmZhckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9u
UHRyVGFnKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBqdW1wIHRvIHByb2xvZ3VlIHRodW5r
IiwgdGh1bmtLaW5kKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVy
LCB0YWcsICJMTEludCAlcyBqdW1wIHRvIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKIH0K
IAogdGVtcGxhdGU8UHRyVGFnIHRhZz4KQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhCiAgICAgYXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJh
dGlvblB0clRhZz4odGFyZ2V0KTsKICAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIodGFyZ2V0KSwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRo
dW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQg
JXMgcmV0dXJuIHBvaW50IHRodW5rIiwgdGh1bmtLaW5kKTsKKyAgICBGSU5BTElaRV9BTkRfUkVU
VVJOX1RIVU5LKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyByZXR1cm4gcG9pbnQgdGh1bmsi
LCB0aHVua0tpbmQpOwogfQogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgpAQCAtNDE5LDcgKzQxOSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKICAgICBqaXQuZmFy
SnVtcChHUFJJbmZvOjpyZWdUNSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxM
SW50VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKKyAgICBG
SU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKIH0KIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lk
KiBwb2ludGVyLCBQdHJUYWcgdGFnLCBjb25zdCBjaGFyKiBuYW1lKQpAQCAtNDMxLDcgKzQzMSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKICAgICBqaXQuZmFy
SnVtcChHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpMTEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQgJXMgd2FzbSBjYWxsIGdhdGUgdGh1bmsi
LCBuYW1lKTsKKyAgICBGSU5BTElaRV9BTkRfUkVUVVJOX1RIVU5LKHBhdGNoQnVmZmVyLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyB3YXNtIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUp
OwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVh
dGVUYWlsQ2FsbEdhdGUoUHRyVGFnIHRhZywgYm9vbCB1bnRhZykKQEAgLTQ0NSw3ICs0NDUsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyCiAgICAgaml0LmZhckp1
bXAoR1BSSW5mbzo6YXJndW1lbnRHUFI3LCB0YWcpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0
ZVB0clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7CisgICAgRklOQUxJWkVfQU5E
X1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQg
dGFpbCBjYWxsIGdhdGUgdGh1bmsiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCkKQEAgLTUzNiw3ICs1MzYs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyCiAgICAgaml0LmZh
ckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpM
TEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCAidGFnIHRodW5rIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9U
SFVOSyhwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidGFnIHRodW5rIik7CiB9
CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0
ZVRodW5rKHZvaWQqIHBvaW50ZXIpCkBAIC01NTEsNyArNTUxLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1Qz
LCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInVu
dGFnIHRodW5rIik7CisgICAgRklOQUxJWkVfQU5EX1JFVFVSTl9USFVOSyhwYXRjaEJ1ZmZlciwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKIH0KIAogI2VuZGlmIC8vIENQ
VShBUk02NEUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRGlzYXNzZW1i
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRGlz
YXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckRpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBZ
YXJyRGlzYXNzZW1ibGVyOjp+WWFyckRpc2Fzc2VtYmxlcigpCiAKIHZvaWQgWWFyckRpc2Fzc2Vt
Ymxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogewor
ICAgIG1fY29kZVN0YXJ0ID0gbGlua0J1ZmZlci5lbnRyeXBvaW50PERpc2Fzc2VtYmx5UHRyVGFn
PigpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICBtX2NvZGVFbmQgPSBiaXR3aXNl
X2Nhc3Q8dWludDhfdCo+KG1fY29kZVN0YXJ0KSArIGxpbmtCdWZmZXIuc2l6ZSgpOworCiAgICAg
ZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGlu
ZGVudFN0cmluZygpLCBsaW5rQnVmZmVyLCBtX3N0YXJ0T2ZDb2RlLCBtX2xhYmVsRm9yR2VuZXJh
dGVZYXJyT3BbMF0pOwogCkBAIC0xNDMsNyArMTQ2LDcgQEAgdm9pZCBZYXJyRGlzYXNzZW1ibGVy
OjpkdW1wRGlzYXNzZW1ibHkoUAogewogICAgIENvZGVMb2NhdGlvbkxhYmVsPERpc2Fzc2VtYmx5
UHRyVGFnPiBmcm9tTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8RGlzYXNzZW1ibHlQ
dHJUYWc+KGZyb20pOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPERpc2Fzc2VtYmx5UHRyVGFnPiB0
b0xvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRyVGFnPih0byk7
Ci0gICAgZGlzYXNzZW1ibGUoZnJvbUxvY2F0aW9uLCB0b0xvY2F0aW9uLmRhdGFMb2NhdGlvbjx1
aW50cHRyX3Q+KCkgLSBmcm9tTG9jYXRpb24uZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSwgcHJl
Zml4LCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2NhdGlvbiwgdG9Mb2NhdGlvbi5kYXRh
TG9jYXRpb248dWludHB0cl90PigpIC0gZnJvbUxvY2F0aW9uLmRhdGFMb2NhdGlvbjx1aW50cHRy
X3Q+KCksIG1fY29kZVN0YXJ0LCBtX2NvZGVFbmQsIHByZWZpeCwgb3V0KTsKIH0KIAogfX0gLy8g
bmFtZXNwYWNlIFlhcnIgbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckRpc2Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJEaXNhc3NlbWJsZXIuaAkocmV2aXNpb24gMjk0MTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckRpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
Niw2ICsxMDYsOCBAQCBwcml2YXRlOgogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2VuZE9m
R2VuZXJhdGU7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZW5kT2ZCYWNrdHJhY2s7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZW5kT2ZDb2RlOworICAgIHZvaWQqIG1fY29kZVN0
YXJ0IHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fY29kZUVuZCB7IG51bGxwdHIgfTsKICAgICB1
bnNpZ25lZCBtX2luZGVudExldmVsIHsgMCB9OwogfTsKIAo=
</data>
<flag name="review"
          id="488327"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459323</attachid>
            <date>2022-05-13 15:27:33 -0700</date>
            <delta_ts>2022-05-13 15:27:33 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-240370.patch</filename>
            <type>text/plain</type>
            <size>64254</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjk0MTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MyBA
QAorMjAyMi0wNS0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSB0aGUgQVJNNjREaXNhc3NlbWJsZXIgdG8gcHJpbnQgcGMgaW5kaWNlcyBhbmQgYmV0
dGVyIGJyYW5jaCB0YXJnZXQgbGFiZWxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJh
dGkuCisKKyAgICAgICAgRGlzYXNzZW1ibGllcyB1c2VkIHRvIGxvb2sgbGlrZSB0aGlzOgorCisg
ICAgICAgICAgICAgMHgxMGU0ODBmZjg6ICAgIGxkdXJiICAgIHcxNywgW3gwLCAjN10KKyAgICAg
ICAgICAgICAweDEwZTQ4MGZmYzogICAgY21wICAgICAgdzE3LCAjMAorICAgICAgICAgICAgIDB4
MTBlNDgxMDAwOiAgICBiLmhpICAgMHgxMGU0ODEwM2MKKyAgICAgICAgICAgICAweDEwZTQ4MTAw
NDogICAgc3R1ciAgICAgeDAsIFtmcCwgIy03Ml0KKyAgICAgICAgICAgICAuLi4KKyAgICAgICAg
ICAgICAweDEwZTQ4MTA0MDogICAgbW92ayAgICAgeDMsICMweGZmZmUsIGxzbCAjNDgKKyAgICAg
ICAgICAgICAweDEwZTQ4MTA0NDogICAgYiAgICAgICAgMHgxMGU0ODE0ZjQKKyAgICAgICAgICAg
ICAweDEwZTQ4MTA0ODogICAgbm9wICAgICAgCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBp
dCB3aWxsIG5vdyBsb29rIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICAgPDc0OD4gMHgxMGUx
MjBhZWM6ICAgIGxkdXJiICAgIHcxNywgW3gwLCAjN10KKyAgICAgICAgICAgICAgIDw3NTI+IDB4
MTBlMTIwYWYwOiAgICBjbXAgICAgICB3MTcsICMwCisgICAgICAgICAgICAgICA8NzU2PiAweDEw
ZTEyMGFmNDogICAgYi5oaSAgICAgMHgxMGUxMjBiMzAgLT4gPDgxNj4KKyAgICAgICAgICAgICAg
IDw3NjA+IDB4MTBlMTIwYWY4OiAgICBzdHVyICAgICB4MCwgW2ZwLCAjLTgwXQorICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICA8ODIwPiAweDEwZTEyMGIzNDogICAgbW92ayAgICAg
eDMsICMweGZmZmUsIGxzbCAjNDgKKyAgICAgICAgICAgICAgIDw4MjQ+IDB4MTBlMTIwYjM4OiAg
ICBiICAgICAgICAweDEwZTEyMGZjOCAtPiA8MTk5Mj4KKyAgICAgICAgICAgICAgIDw4Mjg+IDB4
MTBlMTIwYjNjOiAgICBub3AgICAgICAKKworICAgICAgICAxLiBFYWNoIGluc3RydWN0aW9uIHBj
IGlzIG5vdyBwcmVmaXhlZCB3aXRoIGEgcGMgaW5kZXggaS5lLiB0aGUgb2Zmc2V0IG9mIHRoZQor
ICAgICAgICAgICBwYyBhZGRyZXNzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBjb21waWxhdGlvbiB1
bml0IGUuZy4gPDc1Nj4uCisKKyAgICAgICAgMi4gUmVsYXRpdmUgYnJhbmNoZXMgbm93IHNob3cg
dGhlIGJyYW5jaCB0YXJnZXQgYXMgYSBwYyBpbmRleCAoZWZmZWN0aXZlbHksIGFuCisgICAgICAg
ICAgIGludGVybmFsIGxhYmVsIGluIHRoaXMgY29tcGlsYXRpb24gdW5pdCkgaW4gYWRkaXRpb24g
dG8gdGhlIHBjIGFkZHJlc3MgZS5nLgorICAgICAgICAgICB0aGUgIi0+IDw4MTY+IiBpbjoKKyAg
ICAgICAgICAgICAgIDw3NTY+IDB4MTBlMTIwYWY0OiAgICBiLmhpICAgICAweDEwZTEyMGIzMCAt
PiA8ODE2PgorCisgICAgICAgICAgIEFsc28gZml4ZWQgYSBmb3JtYXR0aW5nIGJ1ZyB3aGVyZSB0
aGUgc3BhY2UgYmV0d2VlbiByZWxhdGl2ZSBicmFuY2ggaW5zdHJ1Y3Rpb25zCisgICAgICAgICAg
IGFuZCB0aGVpciB0YXJnZXQgcGMgd2FzIHNob3J0IDIgc3BhY2VzLgorCisgICAgICAgIDMuIElm
IHRoZSByZWxhdGl2ZSBicmFuY2ggdGFyZ2V0IGlzIGEga25vd24gdGh1bmssIHRoZSBkaXNhc3Nl
bWJsZXIgd2lsbCBub3cKKyAgICAgICAgICAgcHJpbnQgdGhlIHRodW5rIGxhYmVsIGUuZy4KKwor
ICAgICAgICAgICAgICAgPDgyOD4gMHgxMGUxMjAzM2M6ICAgIGJsICAgICAgIDB4MTBlMGYwYTAw
IC0+IDx0aHVuazogZ2V0X2Zyb21fc2NvcGUgdGh1bms+CisgICAgICAgICAgICAgIDwxNDc2PiAw
eDEwZTEyMGRjNDogICAgY2JueiAgICAgeDE2LCAweDEwZTEwNDEwMCAtPiA8dGh1bms6IGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjaz4KKyAgICAgICAgICAgICAgPDIzNjg+IDB4
MTBlMTIxMTQwOiAgICBiICAgICAgICAweDEwZTEwYzAwMCAtPiA8dGh1bms6IERGRyBPU1IgZXhp
dCBnZW5lcmF0aW9uIHRodW5rPgorCisgICAgICAgICAgIEludHJvZHVjZWQgYSBGSU5BTElaRV9U
SFVOSyBtYWNybyB0aGF0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIEZJTkFMSVpFX0NPREUgaW4K
KyAgICAgICAgICAgdGh1bmsgZ2VuZXJhdG9ycy4gIEJ5IGRvaW5nIHNvLCB0aHVuayBsYWJlbHMg
d2lsbCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQKKyAgICAgICAgICAgd2l0aCB0aGUgZGlz
YXNzZW1ibGVyLCBhbmQgd2lsbCBiZSB1c2VkIGZvciB0aGUgYWJvdmUgbG9vayB1cC4KKworICAg
ICAgICAgICBUaHVuayBsYWJlbCByZWdpc3RyYXRpb24gaXMgb25seSBkb25lIGlmIGRpc2Fzc2Vt
Ymx5IGlzIGVuYWJsZWQuCisKKyAgICAgICAgNC4gSWYgdGhlIGJyYW5jaCB0YXJnZXQgaXMgbmVp
dGhlciBhbiBpbnRlcm5hbCBsYWJlbCBub3IgYSB0aHVuaywgdGhlbiB0aGUKKyAgICAgICAgICAg
ZGlzYXNzZW1ibGVyIHdpbGwgcHJpbnQgc29tZSB1c2VmdWwgaW5mbyBhYm91dCBpdCB0byB0aGUg
YmVzdCBvZiBpdHMKKyAgICAgICAgICAga25vd2xlZGdlIGUuZy4KKworICAgICAgICAgICAgICAg
PDE2OD4gMHgxMGUxMDAyZTg6ICAgIGIgICAgICAgIDB4MTBlMTIwYjYwIC0+IDxKSVQgUEM+Cisg
ICAgICAgICAgICAgICA8MTY4PiAweDEwZTEwMDJlODogICAgYiAgICAgICAgMHgxMGUxMjBiNjAg
LT4gPExMSW50IFBDPgorICAgICAgICAgICAgICAgPDE2OD4gMHgxMGUxMDAyZTg6ICAgIGIgICAg
ICAgIDB4MTBlMTIwYjYwIC0+IDx1bmtub3duPgorCisgICAgICAgIDUuIFRoZSBkaXNhc3NlbWJs
ZSgpIGZ1bmN0aW9uIG5vdyB0YWtlcyAyIGFkZGl0aW9uYWwgYXJndW1lbnRzOiBjb2RlU3RhcnQs
IGFuZAorICAgICAgICAgICBjb2RlRW5kLiAgVGhlc2UgYXJlIG5lZWRlZCBzbyB0aGF0IHRoZSBk
aXNhc3NlbWJsZXIgY2FuIGNvbXB1dGUgdGhlIHBjIGluZGV4CisgICAgICAgICAgIGZvciBlYWNo
IGluc3RydWN0aW9uLCBhcyB3ZWxsIGFzIGRldGVybWluZSBpZiBhIGJyYW5jaCB0YXJnZXQgaXMg
aW50ZXJuYWwgdG8KKyAgICAgICAgICAgdGhpcyBjb21waWxhdGlvbiB1bml0LCBvciBwb2ludGlu
ZyBvdXQgb2YgaXQuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBvbmx5IHN1
cHBvcnRlZCBmb3IgdGhlIEFSTTY0IGRpc2Fzc2VtYmxlci4KKworICAgICAgICBQcmludGluZyBv
ZiBKSVQgb3BlcmF0aW9uIGxhYmVscyAodmlhIG1vdnogKyBtb3ZrICsgaW5kaXJlY3QgYnJhbmNo
KSBpcyBub3QgeWV0CisgICAgICAgIHN1cHBvcnRlZC4KKworICAgICAgICAqIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0
aERpc2Fzc2VtYmx5SW1wbCk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAg
ICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6c2V0SXNUaHVuayk6CisgICAgICAgICogYjMvYWlyL0Fp
ckRpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkRpc2Fzc2VtYmxlcjo6
ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGRmZy9ERkdU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmFwcGVuZFBDUmVsYXRpdmVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUNvbmRpdGlvbmFsQnJh
bmNoSW1tZWRpYXRlOjpmb3JtYXQpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRE
T3Bjb2RlLmg6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpB
NjRET3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6
OmFwcGVuZFBDUmVsYXRpdmVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGRpc2Fzc2VtYmxl
ci9BUk02NERpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUp
OgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHA6CisgICAg
ICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJsZSk6CisgICAgICAgIChKU0M6
OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjplbnN1cmVUaHVua0xh
YmVsTWFwKToKKyAgICAgICAgKEpTQzo6cmVnaXN0ZXJUaHVua0xhYmVsKToKKyAgICAgICAgKEpT
Qzo6bGFiZWxGb3JUaHVuayk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJs
ZXIvUklTQ1Y2NERpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1i
bGUpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9YODZEaXNhc3NlbWJsZXIuY3BwOgorICAgICAg
ICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29uc2lzdGVuY3lDaGVja0dlbmVyYXRv
cik6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnJldHVy
bkZyb21CYXNlbGluZUdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5j
cHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcCk6CisgICAgICAgIChKU0M6
OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiBqaXQvSklURGlz
YXNzZW1ibGVyLmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnZhbHVl
SXNUcnV0aHlHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX3Rocm93X2hhbmRsZXJH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9u
YW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6Z2VuZXJh
dGVPcFJlc29sdmVTY29wZVRodW5rKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3Jlc29s
dmVfc2NvcGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmdlbmVyYXRlT3BHZXRGcm9t
U2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0
b3IpOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVRT
bG93UGF0aENhbGw6OmdlbmVyYXRlVGh1bmspOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRo
dW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmZpbmFsaXplKToK
KyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6cG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6bGlua0NhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmxpbmtQ
b2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnZpcnR1YWxUaHVu
a0Zvcik6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OmFyaXR5Rml4dXBHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjp1bnJlYWNoYWJsZUdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OnN0cmluZ0dldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpyZW1vdGVGdW5j
dGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWUpOgorICAgICAgICAoSlND
OjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpTR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmNyZWF0ZVdhc21HYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENh
bGxHYXRlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRhZ0dhdGVUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50Ojp1bnRhZ0dhdGVUaHVuayk6CisgICAgICAgICogeWFyci9ZYXJyRGlzYXNzZW1i
bGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckRpc2Fzc2VtYmxlcjo6ZHVtcCk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6Cisg
ICAgICAgICogeWFyci9ZYXJyRGlzYXNzZW1ibGVyLmg6CisKIDIwMjItMDUtMTMgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBOb24tdW5pZmll
ZCBidWlsZCBicm9rZW4gaW4gZGVidWcgbW9kZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzUsNyArNzUsMjMgQEAgTGlua0J1ZmZlcjo6Q29kZVJlZjxMaW5rQnVmZmVyUHRyVGFn
PiBMaQogICAgIG91dC5wcmludGYoIkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgIik7CiAgICAgdmFf
bGlzdCBhcmdMaXN0OwogICAgIHZhX3N0YXJ0KGFyZ0xpc3QsIGZvcm1hdCk7Ci0gICAgb3V0LnZw
cmludGYoZm9ybWF0LCBhcmdMaXN0KTsKKworICAgIGlmIChtX2lzVGh1bmspIHsKKyAgICAgICAg
dmFfbGlzdCBwcmVmbGlnaHRBcmdzOworICAgICAgICB2YV9jb3B5KHByZWZsaWdodEFyZ3MsIGFy
Z0xpc3QpOworICAgICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gdnNucHJpbnRmKG51bGxwdHIs
IDAsIGZvcm1hdCwgcHJlZmxpZ2h0QXJncyk7CisgICAgICAgIHZhX2VuZChwcmVmbGlnaHRBcmdz
KTsKKworICAgICAgICBjaGFyKiBidWZmZXIgPSAwOworICAgICAgICBDU3RyaW5nIGxhYmVsID0g
Q1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChzdHJpbmdMZW5ndGggKyAxLCBidWZmZXIpOworICAg
ICAgICB2c25wcmludGYoYnVmZmVyLCBzdHJpbmdMZW5ndGggKyAxLCBmb3JtYXQsIGFyZ0xpc3Qp
OworICAgICAgICBidWZmZXJbc3RyaW5nTGVuZ3RoXSA9ICdcMCc7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzIiwgYnVmZmVyKTsKKworICAgICAgICByZWdpc3RlclRodW5rTGFiZWwocmVzdWx0LmNv
ZGUoKS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCksIFdURk1vdmUobGFiZWwpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgb3V0LnZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKKwogICAgIHZhX2Vu
ZChhcmdMaXN0KTsKICAgICBvdXQucHJpbnRmKCI6XG4iKTsKIApAQCAtOTAsMTQgKzEwNiwxNyBA
QCBMaW5rQnVmZmVyOjpDb2RlUmVmPExpbmtCdWZmZXJQdHJUYWc+IExpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHZvaWQqIGNvZGVTdGFydCA9IGVudHJ5cG9pbnQ8
RGlzYXNzZW1ibHlQdHJUYWc+KCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOworICAgIHZv
aWQqIGNvZGVFbmQgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KGNvZGVTdGFydCkgKyBzaXplKCk7
CisKICAgICBpZiAoT3B0aW9uczo6YXN5bmNEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgIENvZGVS
ZWY8RGlzYXNzZW1ibHlQdHJUYWc+IGNvZGVSZWZGb3JEaXNhc3NlbWJseSA9IHJlc3VsdC5yZXRh
Z2dlZDxEaXNhc3NlbWJseVB0clRhZz4oKTsKLSAgICAgICAgZGlzYXNzZW1ibGVBc3luY2hyb25v
dXNseShoZWFkZXIsIFdURk1vdmUoY29kZVJlZkZvckRpc2Fzc2VtYmx5KSwgbV9zaXplLCAiICAg
ICIpOworICAgICAgICBkaXNhc3NlbWJsZUFzeW5jaHJvbm91c2x5KGhlYWRlciwgV1RGTW92ZShj
b2RlUmVmRm9yRGlzYXNzZW1ibHkpLCBtX3NpemUsIGNvZGVTdGFydCwgY29kZUVuZCwgIiAgICAi
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgZGF0YUxvZyhoZWFk
ZXIpOwotICAgIGRpc2Fzc2VtYmxlKHJlc3VsdC5yZXRhZ2dlZENvZGU8RGlzYXNzZW1ibHlQdHJU
YWc+KCksIG1fc2l6ZSwgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpOworICAgIGRpc2Fzc2VtYmxl
KHJlc3VsdC5yZXRhZ2dlZENvZGU8RGlzYXNzZW1ibHlQdHJUYWc+KCksIG1fc2l6ZSwgY29kZVN0
YXJ0LCBjb2RlRW5kLCAiICAgICIsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlu
a0J1ZmZlci5oCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Miw2ICszNDIsOCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fbWFpblRocmVhZEZpbmFsaXphdGlvblRhc2tzLmFwcGVuZChjcmVh
dGVTaGFyZWRUYXNrPHZvaWQoKT4oZnVuY3RvcikpOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNU
aHVuaygpIHsgbV9pc1RodW5rID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENvZGVSZWY8TGlua0J1ZmZlclB0clRhZz4gZmluYWxpemVDb2RlV2l0aG91dERpc2Fz
c2VtYmx5SW1wbCgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIENvZGVSZWY8TGlua0J1ZmZlclB0
clRhZz4gZmluYWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5SW1wbChib29sIGR1bXBEaXNhc3NlbWJs
eSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDMsIDQpOwpA
QCAtNDE3LDYgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSnVtcElzbGFuZCB7IGZh
bHNlIH07CiAjZW5kaWYKICAgICBib29sIG1fYWxyZWFkeURpc2Fzc2VtYmxlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2lzVGh1bmsgeyBmYWxzZSB9OwogICAgIFByb2ZpbGUgbV9wcm9maWxlIHsg
UHJvZmlsZTo6VW5jYXRlZ29yaXplZCB9OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxMaW5r
QnVmZmVyUHRyVGFnPiBtX2NvZGU7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQo
TGlua0J1ZmZlciYpPj4+IG1fbGlua1Rhc2tzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0MTc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzEsMTMgKzcxLDE2IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjphZGRJbnN0KElu
c3QqIGluc3QsIE0KIAogdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoQ29kZSYgY29kZSwgUHJpbnRT
dHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgY29uc3QgY2hhciogYWlyUHJlZml4
LCBjb25zdCBjaGFyKiBhc21QcmVmaXgsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEluc3QmKT4m
IGRvVG9FYWNoSW5zdCkKIHsKKyAgICB2b2lkKiBjb2RlU3RhcnQgPSBsaW5rQnVmZmVyLmVudHJ5
cG9pbnQ8RGlzYXNzZW1ibHlQdHJUYWc+KCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOwor
ICAgIHZvaWQqIGNvZGVFbmQgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KGNvZGVTdGFydCkgKyAg
bGlua0J1ZmZlci5zaXplKCk7CisKICAgICBhdXRvIGR1bXBBc21SYW5nZSA9IFsmXSAoQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzdGFydExhYmVsLCBDQ2FsbEhlbHBlcnM6OkxhYmVsIGVuZExhYmVsKSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXJ0TGFiZWwuaXNTZXQoKSk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGVuZExhYmVsLmlzU2V0KCkpOwogICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bDxEaXNhc3NlbWJseVB0clRhZz4gc3RhcnQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8RGlzYXNz
ZW1ibHlQdHJUYWc+KHN0YXJ0TGFiZWwpOwogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNh
c3NlbWJseVB0clRhZz4gZW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRy
VGFnPihlbmRMYWJlbCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuZC5kYXRhTG9jYXRpb248
dWludHB0cl90PigpID49IHN0YXJ0LmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCkpOwotICAgICAg
ICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCkgLSBzdGFy
dC5kYXRhTG9jYXRpb248dWludHB0cl90PigpLCBhc21QcmVmaXgsIG91dCk7CisgICAgICAgIGRp
c2Fzc2VtYmxlKHN0YXJ0LCBlbmQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmRh
dGFMb2NhdGlvbjx1aW50cHRyX3Q+KCksIGNvZGVTdGFydCwgY29kZUVuZCwgYXNtUHJlZml4LCBv
dXQpOwogICAgIH07CiAKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ibG9ja3MpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJ
KHJldmlzaW9uIDI5NDE3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNz
ZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MiwxMSArMTYyLDE0IEBAIHZvaWQgRGlz
YXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkoUHJpbnQKICAgICAgICAgcHJlZml4QnVmZmVyW2kg
KyBwcmVmaXhMZW5ndGhdID0gJyAnOwogICAgIHByZWZpeEJ1ZmZlcltwcmVmaXhMZW5ndGggKyBh
bW91bnRPZk5vZGVXaGl0ZVNwYWNlXSA9IDA7CiAgICAgCisgICAgdm9pZCogY29kZVN0YXJ0ID0g
bGlua0J1ZmZlci5lbnRyeXBvaW50PERpc2Fzc2VtYmx5UHRyVGFnPigpLnVudGFnZ2VkRXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICB2b2lkKiBjb2RlRW5kID0gYml0d2lzZV9jYXN0PHVpbnQ4X3Qq
Pihjb2RlU3RhcnQpICsgIGxpbmtCdWZmZXIuc2l6ZSgpOworCiAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8RGlzYXNzZW1ibHlQdHJUYWc+IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fz
c2VtYmx5UHRyVGFnPihwcmV2aW91c0xhYmVsKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNh
c3NlbWJseVB0clRhZz4gZW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRy
VGFnPihjdXJyZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAg
ICAgQVNTRVJUKGVuZC5kYXRhTG9jYXRpb248dWludHB0cl90PigpID49IHN0YXJ0LmRhdGFMb2Nh
dGlvbjx1aW50cHRyX3Q+KCkpOwotICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBlbmQuZGF0YUxvY2F0
aW9uPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCksIHByZWZp
eEJ1ZmZlci5kYXRhKCksIG91dCk7CisgICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5kYXRhTG9j
YXRpb248dWludHB0cl90PigpIC0gc3RhcnQuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKSwgY29k
ZVN0YXJ0LCBjb2RlRW5kLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjcsNyArMTI3LDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcwogICAgIAogICAgIHBhdGNoQnVmZmVyLmxp
bmsoZnVuY3Rpb25DYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNv
bXBpbGVPU1JFeGl0KSk7CiAKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayIpOworICAgIHJl
dHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJERkcgT1NS
IGV4aXQgZ2VuZXJhdGlvbiB0aHVuayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQpAQCAtMTc1LDcgKzE3
NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3MKICAgICBqaXQu
ZmFySnVtcChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6REZHT1NSRW50cnkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkRGRyBPU1IgZW50cnkgdGh1bmsiKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiREZHIE9TUiBl
bnRyeSB0aHVuayIpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNz
ZW1ibGVyLmNwcAkocmV2aXNpb24gMjk0MTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9BUk02NERpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywx
NSArMzMsMjQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBz
aXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KQorYm9vbCB0
cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0
clRhZz4mIGNvZGVQdHIsIHNpemVfdCBzaXplLCB2b2lkKiBjb2RlU3RhcnQsIHZvaWQqIGNvZGVF
bmQsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBBNjRET3Bj
b2RlIGFybTY0T3Bjb2RlOwotCiAgICAgdWludDMyX3QqIGN1cnJlbnRQQyA9IGNvZGVQdHIudW50
YWdnZWRFeGVjdXRhYmxlQWRkcmVzczx1aW50MzJfdCo+KCk7CiAgICAgc2l6ZV90IGJ5dGVDb3Vu
dCA9IHNpemU7CiAKKyAgICB1aW50MzJfdCogYXJtQ29kZVN0YXJ0ID0gYml0d2lzZV9jYXN0PHVp
bnQzMl90Kj4oY29kZVN0YXJ0KTsKKyAgICB1aW50MzJfdCogYXJtQ29kZUVuZCA9IGJpdHdpc2Vf
Y2FzdDx1aW50MzJfdCo+KGNvZGVFbmQpOworICAgIEE2NERPcGNvZGUgYXJtNjRPcGNvZGUoYXJt
Q29kZVN0YXJ0LCBhcm1Db2RlRW5kKTsKKworICAgIHVuc2lnbmVkIHBjT2Zmc2V0ID0gKGN1cnJl
bnRQQyAtIGFybUNvZGVTdGFydCkgKiBzaXplb2YodWludDMyX3QpOworICAgIGNoYXIgcGNJbmZv
WzI1XTsKICAgICB3aGlsZSAoYnl0ZUNvdW50KSB7Ci0gICAgICAgIG91dC5wcmludGYoIiVzJSMx
NmxseDogJXNcbiIsIHByZWZpeCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMpKSwgYXJtNjRPcGNvZGUuZGlzYXNzZW1ibGUo
Y3VycmVudFBDKSk7CisgICAgICAgIGlmIChjb2RlU3RhcnQpCisgICAgICAgICAgICBzbnByaW50
ZihwY0luZm8sIHNpemVvZihwY0luZm8pIC0gMSwgIjwldT4gJSNsbHgiLCBwY09mZnNldCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjdXJy
ZW50UEMpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNucHJpbnRmKHBjSW5mbywgc2l6
ZW9mKHBjSW5mbykgLSAxLCAiJSNsbHgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQQykpKTsKKyAgICAgICAgb3V0LnByaW50
ZigiJXMlMjRzOiAlc1xuIiwgcHJlZml4LCBwY0luZm8sIGFybTY0T3Bjb2RlLmRpc2Fzc2VtYmxl
KGN1cnJlbnRQQykpOworICAgICAgICBwY09mZnNldCArPSBzaXplb2YodWludDMyX3QpOwogICAg
ICAgICBjdXJyZW50UEMrKzsKICAgICAgICAgYnl0ZUNvdW50IC09IHNpemVvZih1aW50MzJfdCk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9u
ZURpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDI5NDE3OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3RvbmVEaXNhc3NlbWJsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1ib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fz
c2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwg
UHJpbnRTdHJlYW0mIG91dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgdm9p
ZCosIHZvaWQqLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAg
Y3NoIGhhbmRsZTsKICAgICBjc19pbnNuKiBpbnN0cnVjdGlvbnM7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCShyZXZp
c2lvbiAyOTQxNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw5ICszNiwxMiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotdm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJl
Zml4LCBQcmludFN0cmVhbSYgb3V0KQordXNpbmcgVGh1bmtMYWJlbE1hcCA9IEhhc2hNYXA8dm9p
ZCosIENTdHJpbmc+OworTGF6eU5ldmVyRGVzdHJveWVkPFRodW5rTGFiZWxNYXA+IHRodW5rTGFi
ZWxNYXA7CisKK3ZvaWQgZGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERp
c2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNpemUsIHZvaWQqIGNvZGVTdGFydCwg
dm9pZCogY29kZUVuZCwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KQogewot
ICAgIGlmICh0cnlUb0Rpc2Fzc2VtYmxlKGNvZGVQdHIsIHNpemUsIHByZWZpeCwgb3V0KSkKKyAg
ICBpZiAodHJ5VG9EaXNhc3NlbWJsZShjb2RlUHRyLCBzaXplLCBjb2RlU3RhcnQsIGNvZGVFbmQs
IHByZWZpeCwgb3V0KSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG91dC5wcmludGYoIiVz
ZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3IgcmFuZ2UgJXAuLi4lcFxuIiwgcHJlZml4LCBj
b2RlUHRyLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSwgY29kZVB0ci51bnRhZ2dlZEV4ZWN1
dGFibGVBZGRyZXNzPGNoYXIqPigpICsgc2l6ZSk7CkBAIC02NSw2ICs2OCw4IEBAIHB1YmxpYzoK
ICAgICBjaGFyKiBoZWFkZXIgeyBudWxscHRyIH07CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PERpc2Fzc2VtYmx5UHRyVGFnPiBjb2RlUmVmOwogICAgIHNpemVfdCBzaXplIHsgMCB9OworICAg
IHZvaWQqIGNvZGVTdGFydCB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiBjb2RlRW5kIHsgbnVsbHB0
ciB9OwogICAgIGNvbnN0IGNoYXIqIHByZWZpeCB7IG51bGxwdHIgfTsKIH07CiAKQEAgLTEwNSw3
ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkYXRhTG9n
KHRhc2stPmhlYWRlcik7Ci0gICAgICAgICAgICBkaXNhc3NlbWJsZSh0YXNrLT5jb2RlUmVmLmNv
ZGUoKSwgdGFzay0+c2l6ZSwgdGFzay0+cHJlZml4LCBXVEY6OmRhdGFGaWxlKCkpOworICAgICAg
ICAgICAgZGlzYXNzZW1ibGUodGFzay0+Y29kZVJlZi5jb2RlKCksIHRhc2stPnNpemUsIHRhc2st
PmNvZGVTdGFydCwgdGFzay0+Y29kZUVuZCwgdGFzay0+cHJlZml4LCBXVEY6OmRhdGFGaWxlKCkp
OwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTMxLDEyICsxMzYsMTQgQEAgQXN5bmNocm9u
b3VzRGlzYXNzZW1ibGVyJiBhc3luY2hyb25vdXNEaQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CiAKIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseSgKLSAgICBjb25zdCBDU3RyaW5nJiBo
ZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxEaXNhc3NlbWJseVB0clRhZz4mIGNv
ZGVSZWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgpCisgICAgY29uc3QgQ1N0cmlu
ZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQdHJUYWc+
JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29kZVN0YXJ0LCB2b2lkKiBjb2RlRW5kLCBj
b25zdCBjaGFyKiBwcmVmaXgpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFz
az4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOwogICAgIHRhc2stPmhlYWRl
ciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVlZCB0aGlzIGJlY2F1c2Ug
Q1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAgICAgdGFzay0+Y29kZVJlZiA9IGNvZGVS
ZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CisgICAgdGFzay0+Y29kZVN0YXJ0ID0gY29kZVN0
YXJ0OworICAgIHRhc2stPmNvZGVFbmQgPSBjb2RlRW5kOwogICAgIHRhc2stPnByZWZpeCA9IHBy
ZWZpeDsKICAgICAKICAgICBhc3luY2hyb25vdXNEaXNhc3NlbWJsZXIoKS5lbnF1ZXVlKFdURk1v
dmUodGFzaykpOwpAQCAtMTUwLDUgKzE1NywyOCBAQCB2b2lkIHdhaXRGb3JBc3luY2hyb25vdXNE
aXNhc3NlbWJseSgpCiAgICAgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkud2FpdFVudGlsRW1w
dHkoKTsKIH0KIAorc3RhdGljIFRodW5rTGFiZWxNYXAmIGVuc3VyZVRodW5rTGFiZWxNYXAoKQor
eworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFtdIHsKKyAgICAgICAgdGh1bmtMYWJlbE1hcC5jb25zdHJ1Y3QoKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gdGh1bmtMYWJlbE1hcC5nZXQoKTsKK30KKwordm9pZCByZWdpc3RlclRo
dW5rTGFiZWwodm9pZCogdGh1bmtBZGRyZXNzLCBDU3RyaW5nJiYgbGFiZWwpCit7CisgICAgZW5z
dXJlVGh1bmtMYWJlbE1hcCgpLmFkZCh0aHVua0FkZHJlc3MsIFdURk1vdmUobGFiZWwpKTsKK30K
KworY29uc3QgY2hhciogbGFiZWxGb3JUaHVuayh2b2lkKiB0aHVua0FkZHJlc3MpCit7CisgICAg
YXV0byYgbWFwID0gZW5zdXJlVGh1bmtMYWJlbE1hcCgpOworICAgIGF1dG8gaXQgPSBtYXAuZmlu
ZCh0aHVua0FkZHJlc3MpOworICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBpdC0+dmFsdWUuZGF0YSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
MjMgKzM3LDMxIEBAIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2QKIHRl
bXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogCiAjaWYgRU5BQkxF
KERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgs
IFByaW50U3RyZWFtJik7Citib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYsIHNpemVfdCwgdm9pZCogY29kZVN0YXJ0LCB2
b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJik7CiAjZWxzZQot
aW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCBjb25zdCBjaGFyKiwgUHJpbnRTdHJlYW0mKQor
aW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCB2b2lkKiwgdm9pZCosIGNvbnN0IGNoYXIqLCBQ
cmludFN0cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogI2VuZGlmCiAKK2lubGluZSBi
b29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2Vt
Ymx5UHRyVGFnPiYgY29kZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRT
dHJlYW0mIG91dCkKK3sKKyAgICByZXR1cm4gdHJ5VG9EaXNhc3NlbWJsZShjb2RlLCBzaXplLCBu
dWxscHRyLCBudWxscHRyLCBwcmVmaXgsIG91dCk7Cit9CisKIC8vIFByaW50cyBlaXRoZXIgdGhl
IGRpc2Fzc2VtYmx5LCBvciBhIGxpbmUgb2YgdGV4dCBpbmRpY2F0aW5nIHRoYXQgZGlzYXNzZW1i
bHkgZmFpbGVkIGFuZAogLy8gdGhlIHJhbmdlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzZXMuCi12
b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0
clRhZz4mLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCk7Cit2
b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0
clRhZz4mLCBzaXplX3QsIHZvaWQqIGNvZGVTdGFydCwgdm9pZCogY29kZUVuZCwgY29uc3QgY2hh
ciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KTsKIAogLy8gQXN5bmNocm9ub3VzIGRpc2Fzc2Vt
Ymx5LiBUaGlzIGhhcHBlbnMgb24gYW5vdGhlciB0aHJlYWQsIGFuZCBjYWxscyB0aGUgcHJvdmlk
ZWQKIC8vIGNhbGxiYWNrIHdoZW4gdGhlIGRpc2Fzc2VtYmx5IGlzIGRvbmUuCiB2b2lkIGRpc2Fz
c2VtYmxlQXN5bmNocm9ub3VzbHkoCi0gICAgY29uc3QgQ1N0cmluZyYgaGVhZGVyLCBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQdHJUYWc+Jiwgc2l6ZV90LCBjb25zdCBj
aGFyKiBwcmVmaXgpOworICAgIGNvbnN0IENTdHJpbmcmIGhlYWRlciwgY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPERpc2Fzc2VtYmx5UHRyVGFnPiYsIHNpemVfdCwgdm9pZCogY29kZVN0YXJ0
LCB2b2lkKiBjb2RlRW5kLCBjb25zdCBjaGFyKiBwcmVmaXgpOwogCiBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHdhaXRGb3JBc3luY2hyb25vdXNEaXNhc3NlbWJseSgpOwogCit2b2lkIHJlZ2lzdGVy
VGh1bmtMYWJlbCh2b2lkKiB0aHVua0FkZHJlc3MsIENTdHJpbmcmJiBsYWJlbCk7Citjb25zdCBj
aGFyKiBsYWJlbEZvclRodW5rKHZvaWQqIHRodW5rQWRkcmVzcyk7CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9SSVNDVjY0RGlz
YXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNz
ZW1ibGVyL1JJU0NWNjREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1JJU0NWNjREaXNhc3NlbWJsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MzMsNyArNjMzLDcgQEAgQ1N0cmluZyBkaXNhc3NlbWJsZU9wY29k
ZSh1aW50MzJfdCAqcGMpCiAKIH0gLy8gbmFtZXNwYWNlIFJJU0NWNjREaXNhc3NlbWJsZXIKIAot
Ym9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNhc3Nl
bWJseVB0clRhZz4mIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFBy
aW50U3RyZWFtJiBvdXQpCitib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNpemUsIHZvaWQq
LCB2b2lkKiwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0KQogewogICAgIHVp
bnQzMl90KiBjdXJyZW50UEMgPSBjb2RlUHRyLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8dWlu
dDMyX3QqPigpOwogICAgIHNpemVfdCBieXRlQ291bnQgPSBzaXplOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9YODZEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvWDg2RGlzYXNzZW1ibGVyLmNw
cAkocmV2aXNpb24gMjk0MTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9YODZEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1ib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJs
ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRy
LCBzaXplX3Qgc2l6ZSwgdm9pZCosIHZvaWQqLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3Ry
ZWFtJiBvdXQpCiB7CiAgICAgWnlkaXNEZWNvZGVyIGRlY29kZXI7CiAgICAgWnlkaXNEZWNvZGVy
SW5pdCgmZGVjb2RlciwgWllESVNfTUFDSElORV9NT0RFX0xPTkdfNjQsIFpZRElTX0FERFJFU1Nf
V0lEVEhfNjQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02
NC9BNjRET3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgIkE2NERPcGNvZGUuaCIK
IAorI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0
b3IuaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgog
I2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CkBAIC0xODcsNiArMTkxLDI4IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGU6OmZvcm1hdCgp
CiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCit2b2lkIEE2NERPcGNvZGU6OmFwcGVu
ZFBDUmVsYXRpdmVPZmZzZXQodWludDMyX3QqIHBjLCBpbnQzMl90IGltbWVkaWF0ZSkKK3sKKyAg
ICB1aW50MzJfdCogdGFyZ2V0UEMgPSBwYyArIGltbWVkaWF0ZTsKKyAgICBjb25zdGV4cHIgc2l6
ZV90IGJ1ZmZlclNpemUgPSAxMDE7CisgICAgY2hhciBidWZmZXJbYnVmZmVyU2l6ZV07CisgICAg
Y29uc3QgY2hhciogdGFyZ2V0SW5mbyA9IGJ1ZmZlcjsKKyAgICBpZiAoIW1fc3RhcnRQQykKKyAg
ICAgICAgdGFyZ2V0SW5mbyA9ICIiOworICAgIGVsc2UgaWYgKHRhcmdldFBDID49IG1fc3RhcnRQ
QyAmJiB0YXJnZXRQQyA8IG1fZW5kUEMpCisgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgYnVmZmVy
U2l6ZSAtIDEsICIgLT4gPCV1PiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigodGFyZ2V0UEMgLSBt
X3N0YXJ0UEMpICogc2l6ZW9mKHVpbnQzMl90KSkpOworICAgIGVsc2UgaWYgKGNvbnN0IGNoYXIq
IHRodW5rTGFiZWwgPSBsYWJlbEZvclRodW5rKHRhcmdldFBDKSkKKyAgICAgICAgc25wcmludGYo
YnVmZmVyLCBidWZmZXJTaXplIC0gMSwgIiAtPiA8dGh1bms6ICVzPiIsIHRodW5rTGFiZWwpOwor
ICAgIGVsc2UgaWYgKGlzSklUUEModGFyZ2V0UEMpKQorICAgICAgICB0YXJnZXRJbmZvID0gIiAt
PiA8SklUIFBDPiI7CisgICAgZWxzZSBpZiAoTExJbnQ6OmlzTExJbnRQQyh0YXJnZXRQQykpCisg
ICAgICAgIHRhcmdldEluZm8gPSAiIC0+IDxMTEludCBQQz4iOworICAgIGVsc2UKKyAgICAgICAg
dGFyZ2V0SW5mbyA9ICIgLT4gPHVua25vd24+IjsKKworICAgIGJ1ZmZlclByaW50ZigiMHglIiBQ
Ukl4UFRSICIlcyIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRhcmdldFBDKSwgIHRhcmdldElu
Zm8pOworfQorCiB2b2lkIEE2NERPcGNvZGU6OmFwcGVuZFJlZ2lzdGVyTmFtZSh1bnNpZ25lZCBy
ZWdpc3Rlck51bWJlciwgYm9vbCBpczY0Qml0KQogewogICAgIGlmIChyZWdpc3Rlck51bWJlciA9
PSAyOSkgewpAQCAtNDEyLDcgKzQzOCw3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVDb21wYXJl
QW5kQnJhbmNoSW0KIAogY29uc3QgY2hhciogQTY0RE9wY29kZUNvbmRpdGlvbmFsQnJhbmNoSW1t
ZWRpYXRlOjpmb3JtYXQoKQogewotICAgIGJ1ZmZlclByaW50ZigiICAgYi4lLTUuNXMiLCBjb25k
aXRpb25OYW1lKGNvbmRpdGlvbigpKSk7CisgICAgYnVmZmVyUHJpbnRmKCIgICBiLiUtNy43cyIs
IGNvbmRpdGlvbk5hbWUoY29uZGl0aW9uKCkpKTsKICAgICBhcHBlbmRQQ1JlbGF0aXZlT2Zmc2V0
KG1fY3VycmVudFBDLCBzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlhdGUxOSgpKSk7CiAgICAg
cmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgJKHJldmlzaW9uIDI5NDE3
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsOCArNzMsMTAgQEAgcHJpdmF0ZToKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0KCk7CiAKLSAgICBBNjRET3Bjb2RlKCkKLSAgICAgICAgOiBt
X29wY29kZSgwKQorICAgIEE2NERPcGNvZGUodWludDMyX3QqIHN0YXJ0UEMgPSBudWxscHRyLCB1
aW50MzJfdCogZW5kUEMgPSBudWxscHRyKQorICAgICAgICA6IG1fc3RhcnRQQyhzdGFydFBDKQor
ICAgICAgICAsIG1fZW5kUEMoZW5kUEMpCisgICAgICAgICwgbV9vcGNvZGUoMCkKICAgICAgICAg
LCBtX2J1ZmZlck9mZnNldCgwKQogICAgIHsKICAgICAgICAgaW5pdCgpOwpAQCAtMTg1LDEwICsx
ODcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJ1ZmZlclByaW50ZigiIzB4JSIgUFJJeDY0LCBp
bW1lZGlhdGUpOwogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kUENSZWxhdGl2ZU9mZnNldCh1aW50
MzJfdCogcGMsIGludDMyX3QgaW1tZWRpYXRlKQotICAgIHsKLSAgICAgICAgYnVmZmVyUHJpbnRm
KCIweCUiIFBSSXhQVFIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjICsgaW1tZWRpYXRlKSk7
Ci0gICAgfQorICAgIHZvaWQgYXBwZW5kUENSZWxhdGl2ZU9mZnNldCh1aW50MzJfdCogcGMsIGlu
dDMyX3QgaW1tZWRpYXRlKTsKIAogICAgIHZvaWQgYXBwZW5kU2hpZnRBbW91bnQodW5zaWduZWQg
YW1vdW50KQogICAgIHsKQEAgLTE5OCw2ICsxOTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDgxOwogCiAgICAgY2hhciBtX2Zvcm1hdEJ1ZmZl
cltidWZmZXJTaXplXTsKKyAgICB1aW50MzJfdCogbV9zdGFydFBDOworICAgIHVpbnQzMl90KiBt
X2VuZFBDOwogICAgIHVpbnQzMl90KiBtX2N1cnJlbnRQQzsKICAgICB1aW50MzJfdCBtX29wY29k
ZTsKICAgICBpbnQgbV9idWZmZXJPZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExUaHVua3MuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAgICAgCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RlRMVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBnZW5lcmF0
aW9uRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKLSAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICIlcyIsIG5hbWUpOworICAg
IHJldHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICIlcyIs
IG5hbWUpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4
aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQpAQCAtMjQzLDcgKzI0Myw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2wKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExU
aHVuayk7CiAgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAl
cyIsIHRvQ1N0cmluZyhrZXkpLmRhdGEoKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBhdGggY2FsbCB0aHVuayBmb3Ig
JXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
MDUsNyArNzA1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQog
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBn
ZW5lcmF0ZUNvbnNpc3RlbmN5Q2hlY2siKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IGdlbmVyYXRlQ29uc2lzdGVuY3lD
aGVjayIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdENvbnNpc3RlbmN5Q2hlY2soKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMs
NyArNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAg
aml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3Jl
dF9oYW5kbGVyIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9yZXRfaGFuZGxlciIpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fz
c2VtYmxlci5jcHAJKHJldmlzaW9uIDI5NDE3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDYgKzUxLDkgQEAg
SklURGlzYXNzZW1ibGVyOjp+SklURGlzYXNzZW1ibGVyKCkKIAogdm9pZCBKSVREaXNhc3NlbWJs
ZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAg
ICBtX2NvZGVTdGFydCA9IGxpbmtCdWZmZXIuZW50cnlwb2ludDxEaXNhc3NlbWJseVB0clRhZz4o
KS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgbV9jb2RlRW5kID0gYml0d2lzZV9j
YXN0PHVpbnQ4X3QqPihtX2NvZGVTdGFydCkgKyBsaW5rQnVmZmVyLnNpemUoKTsKKwogICAgIGR1
bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5r
QnVmZmVyLCBtX3N0YXJ0T2ZDb2RlLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFpblBhdGhb
MF0pOwogICAgIApAQCAtMTYyLDcgKzE2NSw3IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1w
RGlzYXNzZW1ibHkoUHIKIHsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNhc3NlbWJseVB0clRh
Zz4gZnJvbUxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRyVGFn
Pihmcm9tKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNhc3NlbWJseVB0clRhZz4gdG9Mb2Nh
dGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxEaXNhc3NlbWJseVB0clRhZz4odG8pOwotICAg
IGRpc2Fzc2VtYmxlKGZyb21Mb2NhdGlvbiwgdG9Mb2NhdGlvbi5kYXRhTG9jYXRpb248dWludHB0
cl90PigpIC0gZnJvbUxvY2F0aW9uLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCksICIgICAgICAg
ICIsIG91dCk7CisgICAgZGlzYXNzZW1ibGUoZnJvbUxvY2F0aW9uLCB0b0xvY2F0aW9uLmRhdGFM
b2NhdGlvbjx1aW50cHRyX3Q+KCkgLSBmcm9tTG9jYXRpb24uZGF0YUxvY2F0aW9uPHVpbnRwdHJf
dD4oKSwgbV9jb2RlU3RhcnQsIG1fY29kZUVuZCwgIiAgICAgICAgIiwgb3V0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fz
c2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlz
YXNzZW1ibGVyLmgJKHJldmlzaW9uIDI5NDE3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURGlzYXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQsNiArODQsOCBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+IG1fbGFiZWxGb3JCeXRlY29kZUlu
ZGV4SW5TbG93UGF0aDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9lbmRPZlNsb3dQYXRo
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2VuZE9mQ29kZTsKKyAgICB2b2lkKiBtX2Nv
ZGVTdGFydCB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiBtX2NvZGVFbmQgeyBudWxscHRyIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjk0MTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJv
Z2EuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDc4LDcgKzQ3OCw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc0ZhbHNleSIpOworICAgIHJldHVy
biBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
dmFsdWVJc0ZhbHNleSIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02NjQsNyArNjY0LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIGppdC5yZXQoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzVHJ1dGh5Iik7Cisg
ICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiB2YWx1ZUlzVHJ1dGh5Iik7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNzM0
LDcgKzczNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0
aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93KSk7Ci0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IG9wX3Rocm93X2hhbmRsZXIiKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3Rocm93X2hhbmRsZXIiKTsKIH0K
IAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaWYgKE9wdGlvbnM6OnVzZURGR0pJVCgp
KQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbk9wdGltaXplQ2FsbCwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PcHRpbWl6ZSkpOwogI2VuZGlmCi0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IG9wX2VudGVyX2hhbmRsZXIiKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2VudGVyX2hhbmRsZXIiKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKQEAgLTE1NjgsNyArMTU2OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBw
YXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25IYW5kbGVUcmFwcykpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19o
YW5kbGVyIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX25ld19yZWdleHAoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDI5NDE3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDcgKzE2MSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ss
IENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gRklOQUxJ
WkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI1NSw3ICsyNTUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAg
ICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbiIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTU3Nyw3ICs1Nzcs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNr
LCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CisgICAgcmV0dXJu
IEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBKU0lu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC03NTQsNyArNzU0LDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTg2NSw3ICs4NjUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJCiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5L
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGwiKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChj
b25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDkwLDcgKzEwOTAs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNr
LCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gRklOQUxJ
WkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
Z2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpAQCAtMTE5MCw3ICsxMTkwLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJCiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRj
aEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb24iKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0
IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE2ODgsNyArMTY4OCw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OlRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYXNlLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAicmVzb2x2ZV9zY29wZSB0aHVuayIpOworICAgIHJldHVybiBGSU5B
TElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJyZXNvbHZlX3Njb3BlIHRo
dW5rIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQpAQCAtMTcyNiw3ICsxNzI2LDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OlRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSkpOwogICAgIHBh
dGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBzbG93X29wX3Jlc29sdmVfc2NvcGUiKTsKKyAgICByZXR1cm4gRklOQUxJWkVf
VEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcmVz
b2x2ZV9zY29wZSIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25z
dCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTA0LDcgKzE5MDQsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhzbG93Q2FzZSwgQ29kZUxvY2F0aW9uTGFi
ZWwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJnZXRfZnJvbV9zY29wZSB0aHVuayIpOworICAgIHJldHVybiBG
SU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJnZXRfZnJvbV9zY29w
ZSB0aHVuayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihWTSYgdm0pCkBAIC0xOTU3LDcgKzE5
NTcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgcGF0
Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uR2V0RnJvbVNjb3BlKSk7CiAgICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihw
b3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKICAgICBw
YXRjaEJ1ZmZlci5saW5rKGp1bXBUb0hhbmRsZXIsIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIu
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2Zyb21fc2Nv
cGUiKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUiKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKQEAgLTIxNTYsNyArMjE1Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSkkKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Q
dXRUb1Njb3BlKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3RvX3Njb3BlIik7Cisg
ICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX3B1dF90b19zY29wZSIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAkocmV2
aXNpb24gMjk0MTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTk0LDcgKzk0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSQogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNo
QnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihzbG93UGF0aEZ1
bmN0aW9uKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxsIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RI
VU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1
OSw3ICsxNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsobV9mYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KGZhbGxiYWNr
KSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7
IGkrKykKICAgICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbaV0uZmlyc3Qs
IG1fY2FsbHNbaV0uc2Vjb25kKTsKLSAgICAgICAgICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRo
dW5rS2luZCk7CisgICAgICAgICAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5kKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUgdGFyZ2V0IGZ1bmN0aW9u
IHVzZXMgZnBSZWdpc3RlcjAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oCShyZXZpc2lvbiAyOTQxNzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNSw2ICszNSw5IEBAIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJD
b2QKIAogdXNpbmcgVGh1bmtHZW5lcmF0b3IgPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+ICgqKShWTSYpOwogCisjZGVmaW5lIEZJTkFMSVpFX1RIVU5LKGxpbmtCdWZmZXJS
ZWZlcmVuY2UsIHJlc3VsdFB0clRhZywgLi4uKSBcCisgICAgKGxpbmtCdWZmZXJSZWZlcmVuY2Uu
c2V0SXNUaHVuaygpLCBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXJSZWZlcmVuY2UsIHJlc3VsdFB0
clRhZywgX19WQV9BUkdTX18pKQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCShyZXZpc2lvbiAyOTQxNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsLmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVua0pJVC5oIgorI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAg
LTU1LDcgKzU2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYQog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVy
YXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0
aW9uSGFuZGxlcikpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOworICAgIHJldHVybiBGSU5BTElaRV9USFVO
SyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRpb24iKTsKIH0KIAog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtKQpAQCAtNzEsNyArNzIsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhCiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxl
ckZyYW1lKSk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CisgICAgcmV0
dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4
Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IoVk0mIHZtKQpAQCAtODgsNyArODksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHBvCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAg
YXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoY29udGludWF0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChoYW5k
bGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgInBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRI
YW5kbGVFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAicG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlv
biIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKQEAgLTExOCw3ICsxMTksNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoCiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGhhbmRsZUV4Y2VwdGlvbiwgQ29kZUxvY2F0aW9uTGFi
ZWwodm0uZ2V0Q1RJU3R1YihoYW5kbGVyR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJDaGVja0V4Y2VwdGlvbiIpOworICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJDaGVja0V4Y2VwdGlvbiIpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUYWdUeXBlPgpAQCAtMTYzLDcgKzE2NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gdGgKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiVGhyb3cgZXhjZXB0aW9uIGZyb20gY2FsbCBzbG93IHBh
dGggdGh1bmsiKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiVGhyb3cgZXhjZXB0aW9uIGZyb20gY2FsbCBzbG93IHBhdGggdGh1bmsiKTsK
IH0KIAogc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwg
U3BydF9KSVRPcGVyYXRpb25fRUdDbGkgc2xvd1BhdGhGdW5jdGlvbikKQEAgLTIzMiw3ICsyMzMs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpCiAgICAgc2xvd1Bh
dGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua0NhbGwpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmsp
OwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTkso
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiTGluayBjYWxsIHNsb3cgcGF0aCB0aHVuayIp
OwogfQogCiAvLyBGb3IgY2xvc3VyZSBvcHRpbWl6YXRpb25zLCB3ZSBvbmx5IGluY2x1ZGUgY2Fs
bHMsIHNpbmNlIGlmIHlvdSdyZSB1c2luZyBjbG9zdXJlcyBmb3IKQEAgLTI0NCw3ICsyNDUsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpCiAgICAgc2xvd1BhdGhG
b3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiTGluayBwb2x5bW9ycGhpYyBjYWxsIHNsb3cgcGF0aCB0aHVuayIpOworICAgIHJl
dHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJMaW5rIHBv
bHltb3JwaGljIGNhbGwgc2xvdyBwYXRoIHRodW5rIik7CiB9CiAKIC8vIEZJWE1FOiBXZSBzaG91
bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1lZ2Ftb3JwaGljIHZpcnR1YWwgY2FsbCB2cy4gYSBz
bG93CkBAIC0zMzMsNyArMzM0LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0cgogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvblZpcnR1YWxDYWxsKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OlZpcnR1YWxUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsCiAgICAgICAgICJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVuayIsCiAgICAgICAg
IG1vZGUgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2FsbCIgOiBtb2RlID09IENhbGxNb2RlOjpU
YWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0Iik7CkBAIC00ODYsNyArNDg3LDcgQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgogICAgIGppdC5qdW1wVG9FeGNl
cHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICIlcyAlcyVzIHRyYW1wb2xp
bmUiLCB0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbiA/
ICJuYXRpdmUiIDogImludGVybmFsIiwgZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhTYXZl
ZFRhZ3MgPyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1
bXBXaXRob3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdzICIgOiAiIiwgdG9D
U3RyaW5nKGtpbmQpLmRhdGEoKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIiVzICVzJXMgdHJhbXBvbGluZSIsIHRodW5rRnVuY3Rpb25U
eXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0aW9uID8gIm5hdGl2ZSIgOiAiaW50ZXJu
YWwiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGgg
U2F2ZWQgVGFncyAiIDogZW50cnlUeXBlID09IEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3Mg
PyAiVGFpbCBXaXRob3V0IFNhdmVkIFRhZ3MgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgp
KTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVDYWxs
R2VuZXJhdG9yKFZNJiB2bSkKQEAgLTY2NSw3ICs2NjYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGFyCiAjZW5kaWYgLy8gRW5kIG9mIFVTRShKU1ZBTFVFMzJfNjQp
IHNlY3Rpb24uCiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiZml4dXAgYXJpdHkiKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiZml4dXAgYXJp
dHkiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB1bnJlYWNo
YWJsZUdlbmVyYXRvcihWTSYgdm0pCkBAIC02NzUsNyArNjc2LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiB1bgogICAgIGppdC5icmVha3BvaW50KCk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAidW5yZWFjaGFibGUgdGh1bmsiKTsKKyAgICByZXR1cm4gRklOQUxJWkVf
VEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAidW5yZWFjaGFibGUgdGh1bmsiKTsK
IH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzdHJpbmdHZXRCeVZh
bEdlbmVyYXRvcihWTSYgdm0pCkBAIC03MjYsNyArNzI3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzdAogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRo
dW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJTdHJpbmcgZ2V0X2J5X3ZhbCBzdHViIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5L
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlN0cmluZyBnZXRfYnlfdmFsIHN0dWIiKTsK
IH0KIAogc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0
KQpAQCAtMTQxNyw4ICsxNDE4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBibwogICAgIAogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6Qm91bmRGdW5jdGlvblRodW5rKTsKICAgICBsaW5r
QnVmZmVyLmxpbmsobm9Db2RlLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odm0u
aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFncyh2bSkpKTsKLSAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERSgKLSAgICAgICAgbGlua0J1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJTcGVjaWFsaXplZCB0aHVuayBmb3IgYm91bmQgZnVuY3Rpb24gY2FsbHMgd2l0aCBubyBhcmd1
bWVudHMiKTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksobGlua0J1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJTcGVjaWFsaXplZCB0aHVuayBmb3IgYm91bmQgZnVuY3Rpb24gY2FsbHMgd2l0aCBu
byBhcmd1bWVudHMiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQpAQCAtMTYyNyw4ICsxNjI3LDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZQogCiAgICAgTGlua0J1
ZmZlciBsaW5rQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpSZW1vdGVGdW5jdGlvblRodW5rKTsKICAgICBsaW5rQnVmZmVyLmxpbmsobm9Db2RlLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odm0uaml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxD
YWxsV2l0aG91dFNhdmVkVGFncyh2bSkpKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERSgKLSAg
ICAgICAgbGlua0J1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJTcGVjaWFsaXplZCB0aHVuayBmb3Ig
cmVtb3RlIGZ1bmN0aW9uIGNhbGxzIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKGxpbmtC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIHJlbW90ZSBmdW5j
dGlvbiBjYWxscyIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMjk0MTc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdl
bmVyYQogICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpMTEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgdGFnLCAiTExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOworICAgIHJldHVybiBGSU5BTEla
RV9USFVOSyhwYXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOwog
fQogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmEKICAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBP
cGVyYXRpb25QdHJUYWcpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIGp1bXAgdG8gcHJvbG9n
dWUgdGh1bmsiLCB0aHVua0tpbmQpOworICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1
ZmZlciwgdGFnLCAiTExJbnQgJXMganVtcCB0byBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7
CiB9CiAKIHRlbXBsYXRlPFB0clRhZyB0YWc+CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYQogICAgIGFzc2VydElzVGFnZ2VkV2l0aDxP
cGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CiAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHRhcmdldCksIE9wZXJhdGlvblB0clRhZyk7CiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJ
bnRUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxM
SW50ICVzIHJldHVybiBwb2ludCB0aHVuayIsIHRodW5rS2luZCk7CisgICAgcmV0dXJuIEZJTkFM
SVpFX1RIVU5LKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyByZXR1cm4gcG9pbnQgdGh1bmsi
LCB0aHVua0tpbmQpOwogfQogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgpAQCAtNDE5LDcgKzQxOSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKICAgICBqaXQuZmFy
SnVtcChHUFJJbmZvOjpyZWdUNSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxM
SW50VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKKyAgICBy
ZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywg
IkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNtR2F0ZVRodW5rKHZvaWQqIHBv
aW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUpCkBAIC00MzEsNyArNDMxLDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogICAgIGppdC5mYXJKdW1w
KEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkxMSW50VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBO
YXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyB3YXNtIGNhbGwgZ2F0ZSB0aHVuayIsIG5h
bWUpOworICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnLCAiTExJbnQgJXMgd2FzbSBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKIH0KIAog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlVGFpbENh
bGxHYXRlKFB0clRhZyB0YWcsIGJvb2wgdW50YWcpCkBAIC00NDUsNyArNDQ1LDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogICAgIGppdC5mYXJKdW1wKEdQUklu
Zm86OmFyZ3VtZW50R1BSNywgdGFnKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwotICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJMTEludCB0YWlsIGNhbGwgZ2F0ZSB0aHVuayIpOworICAgIHJldHVybiBGSU5BTElaRV9USFVO
SyhwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQgdGFpbCBjYWxsIGdh
dGUgdGh1bmsiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCkKQEAgLTUzNiw3ICs1MzYsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyCiAgICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnLCAidGFnIHRodW5rIik7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVy
LCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ0YWcgdGh1bmsiKTsKIH0KIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50YWdHYXRlVGh1bmsodm9pZCogcG9p
bnRlcikKQEAgLTU1MSw3ICs1NTEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyCiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0clRh
Zyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRh
ZywgInVudGFnIHRodW5rIik7CiB9CiAKICNlbmRpZiAvLyBDUFUoQVJNNjRFKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckRpc2Fzc2VtYmxlci5jcHAJKHJldmlz
aW9uIDI5NDE3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJEaXNhc3NlbWJs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgWWFyckRpc2Fzc2VtYmxlcjo6fllh
cnJEaXNhc3NlbWJsZXIoKQogCiB2b2lkIFlhcnJEaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBtX2NvZGVTdGFydCA9IGxp
bmtCdWZmZXIuZW50cnlwb2ludDxEaXNhc3NlbWJseVB0clRhZz4oKS51bnRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgbV9jb2RlRW5kID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihtX2Nv
ZGVTdGFydCkgKyBsaW5rQnVmZmVyLnNpemUoKTsKKwogICAgIGR1bXBIZWFkZXIob3V0LCBsaW5r
QnVmZmVyKTsKICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBpbmRlbnRTdHJpbmcoKSwgbGlua0J1
ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckdlbmVyYXRlWWFyck9wWzBdKTsKIApAQCAt
MTQzLDcgKzE0Niw3IEBAIHZvaWQgWWFyckRpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFAK
IHsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxEaXNhc3NlbWJseVB0clRhZz4gZnJvbUxvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPERpc2Fzc2VtYmx5UHRyVGFnPihmcm9tKTsKICAgICBD
b2RlTG9jYXRpb25MYWJlbDxEaXNhc3NlbWJseVB0clRhZz4gdG9Mb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxEaXNhc3NlbWJseVB0clRhZz4odG8pOwotICAgIGRpc2Fzc2VtYmxlKGZy
b21Mb2NhdGlvbiwgdG9Mb2NhdGlvbi5kYXRhTG9jYXRpb248dWludHB0cl90PigpIC0gZnJvbUxv
Y2F0aW9uLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCksIHByZWZpeCwgb3V0KTsKKyAgICBkaXNh
c3NlbWJsZShmcm9tTG9jYXRpb24sIHRvTG9jYXRpb24uZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4o
KSAtIGZyb21Mb2NhdGlvbi5kYXRhTG9jYXRpb248dWludHB0cl90PigpLCBtX2NvZGVTdGFydCwg
bV9jb2RlRW5kLCBwcmVmaXgsIG91dCk7CiB9CiAKIH19IC8vIG5hbWVzcGFjZSBZYXJyIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJEaXNhc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRGlzYXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDI5NDE3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJEaXNhc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDYsNiArMTA2LDggQEAgcHJpdmF0
ZToKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9lbmRPZkdlbmVyYXRlOwogICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBtX2VuZE9mQmFja3RyYWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBtX2VuZE9mQ29kZTsKKyAgICB2b2lkKiBtX2NvZGVTdGFydCB7IG51bGxwdHIgfTsKKyAg
ICB2b2lkKiBtX2NvZGVFbmQgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbV9pbmRlbnRMZXZl
bCB7IDAgfTsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>