<?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>227509</bug_id>
          
          <creation_ts>2021-06-29 15:18:32 -0700</creation_ts>
          <short_desc>Add Air opcode add/sub-and-shift for ARM64 and select this instruction in Air</short_desc>
          <delta_ts>2021-07-08 22:55:37 -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="Yijia Huang">yijia_huang</reporter>
          <assigned_to name="Yijia Huang">yijia_huang</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</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>1773580</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-29 15:18:32 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775047</commentid>
    <comment_count>1</comment_count>
      <attachid>432963</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-06 12:55:40 -0700</bug_when>
    <thetext>Created attachment 432963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775116</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-06 15:19:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/80233961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775128</commentid>
    <comment_count>3</comment_count>
      <attachid>432983</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-06 15:37:43 -0700</bug_when>
    <thetext>Created attachment 432983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775151</commentid>
    <comment_count>4</comment_count>
      <attachid>432991</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-06 17:27:07 -0700</bug_when>
    <thetext>Created attachment 432991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775184</commentid>
    <comment_count>5</comment_count>
      <attachid>433001</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-06 20:15:09 -0700</bug_when>
    <thetext>Created attachment 433001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775219</commentid>
    <comment_count>6</comment_count>
      <attachid>433015</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-06 23:05:53 -0700</bug_when>
    <thetext>Created attachment 433015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775221</commentid>
    <comment_count>7</comment_count>
      <attachid>433016</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-06 23:13:17 -0700</bug_when>
    <thetext>Created attachment 433016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775310</commentid>
    <comment_count>8</comment_count>
      <attachid>433016</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-07-07 10:23:03 -0700</bug_when>
    <thetext>Comment on attachment 433016
Patch

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

This is really cool!  I don&apos;t feel too strongly about it, but I&apos;d recommend not doing canBeInternal/commitInternal for this one.

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2616
&gt; +                if (!canBeInternal(right) || !imm(right-&gt;child(1)) || right-&gt;child(1)-&gt;asInt() &lt; 0)

I wouldn&apos;t do canBeInternal for this one.  I&apos;d assume that an add-with-shift instruction is no more expensive than an add instruction.  So, if we have a program that does a shift and then uses the result of that shift both directly and for an add, then emitting the add as an add-with-shift instruction is fine.  In fact, it might even be more efficient, since it removes a dependency.  If you have a shift and then an add that depends on the shift, then the add can&apos;t run until the shift finishes.  If you have a shift and then an add-with-shift that depends on the same input as the shift, then both the shift and the add-with-shift can execute in parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775314</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-07-07 10:27:34 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #8)
&gt; Comment on attachment 433016 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433016&amp;action=review
&gt; 
&gt; This is really cool!  I don&apos;t feel too strongly about it, but I&apos;d recommend
&gt; not doing canBeInternal/commitInternal for this one.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2616
&gt; &gt; +                if (!canBeInternal(right) || !imm(right-&gt;child(1)) || right-&gt;child(1)-&gt;asInt() &lt; 0)
&gt; 
&gt; I wouldn&apos;t do canBeInternal for this one.  I&apos;d assume that an add-with-shift
&gt; instruction is no more expensive than an add instruction.  So, if we have a
&gt; program that does a shift and then uses the result of that shift both
&gt; directly and for an add, then emitting the add as an add-with-shift
&gt; instruction is fine.  In fact, it might even be more efficient, since it
&gt; removes a dependency.  If you have a shift and then an add that depends on
&gt; the shift, then the add can&apos;t run until the shift finishes.  If you have a
&gt; shift and then an add-with-shift that depends on the same input as the
&gt; shift, then both the shift and the add-with-shift can execute in parallel.

Disregard.  I think you&apos;re right to use canBeInternal/commitInternal for this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775382</commentid>
    <comment_count>10</comment_count>
      <attachid>433016</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-07 12:10:43 -0700</bug_when>
    <thetext>Comment on attachment 433016
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:556
&gt; +        ASSERT(n != ARM64Registers::sp || m != ARM64Registers::sp);
&gt; +        if (m == ARM64Registers::sp)
&gt; +            std::swap(n, m);

Does this actually work when the shift value isn&apos;t zero? Aren&apos;t we swapping what gets shifted? Maybe we can assert against this use case instead if my analysis is right?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:564
&gt; +        ASSERT(n != ARM64Registers::sp || m != ARM64Registers::sp);
&gt; +        if (m == ARM64Registers::sp)
&gt; +            std::swap(n, m);

ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:572
&gt; +        if (m == ARM64Registers::sp)
&gt; +            std::swap(n, m);

ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:580
&gt; +        if (m == ARM64Registers::sp)
&gt; +            std::swap(n, m);

ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:588
&gt; +        if (m == ARM64Registers::sp)
&gt; +            std::swap(n, m);

ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:596
&gt; +        if (m == ARM64Registers::sp)
&gt; +            std::swap(n, m);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775462</commentid>
    <comment_count>11</comment_count>
      <attachid>433077</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-07 14:18:18 -0700</bug_when>
    <thetext>Created attachment 433077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775481</commentid>
    <comment_count>12</comment_count>
      <attachid>433077</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-07 15:08:25 -0700</bug_when>
    <thetext>Comment on attachment 433077
Patch

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

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2608
&gt; +                    return Air::Nop;

nit: I&apos;d return Oops to be consistent with tryOpcodeForType

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2614
&gt; +                if (!isValidForm(opcode, Arg::Tmp, Arg::Imm, Arg::Imm, Arg::Tmp)) 

Am I missing something, or is this patch doing anything? Aren&apos;t all your instructions you added of the form: &quot;Tmp, Tmp, Imm, Tmp&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775494</commentid>
    <comment_count>13</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-07 15:45:11 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #12)
&gt; Comment on attachment 433077 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433077&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2608
&gt; &gt; +                    return Air::Nop;
&gt; 
&gt; nit: I&apos;d return Oops to be consistent with tryOpcodeForType

Air::Opcode only has Nop. And JSC::B3::Opcode has Oops.

&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2614
&gt; &gt; +                if (!isValidForm(opcode, Arg::Tmp, Arg::Imm, Arg::Imm, Arg::Tmp)) 
&gt; 
&gt; Am I missing something, or is this patch doing anything? Aren&apos;t all your
&gt; instructions you added of the form: &quot;Tmp, Tmp, Imm, Tmp&quot;?

My bad. Will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775498</commentid>
    <comment_count>14</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-07 15:46:33 -0700</bug_when>
    <thetext>(In reply to Yijia Huang from comment #13)
&gt; (In reply to Saam Barati from comment #12)
&gt; &gt; Comment on attachment 433077 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=433077&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2608
&gt; &gt; &gt; +                    return Air::Nop;
&gt; &gt; 
&gt; &gt; nit: I&apos;d return Oops to be consistent with tryOpcodeForType
&gt; 
&gt; Air::Opcode only has Nop. And JSC::B3::Opcode has Oops.

Found it. Sorry, ignore this.

&gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2614
&gt; &gt; &gt; +                if (!isValidForm(opcode, Arg::Tmp, Arg::Imm, Arg::Imm, Arg::Tmp)) 
&gt; &gt; 
&gt; &gt; Am I missing something, or is this patch doing anything? Aren&apos;t all your
&gt; &gt; instructions you added of the form: &quot;Tmp, Tmp, Imm, Tmp&quot;?
&gt; 
&gt; My bad. Will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775608</commentid>
    <comment_count>15</comment_count>
      <attachid>433118</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-07 21:52:51 -0700</bug_when>
    <thetext>Created attachment 433118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775715</commentid>
    <comment_count>16</comment_count>
      <attachid>433118</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-08 10:34:50 -0700</bug_when>
    <thetext>Comment on attachment 433118
Patch

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

Nice. r=me

&gt; Source/JavaScriptCore/b3/testb3_2.cpp:4148
&gt; +            checkUsesInstruction(*code, toCString(&quot;add      w0, w0, w1, lsl #&quot;, amount).data());

I&apos;d be a bit wary of relying on the register allocator always allocating in these registers. Can&apos;t we just use a regexp here instead? I think Keith added a way to do that at some point.

Ditto to all the checks below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775754</commentid>
    <comment_count>17</comment_count>
      <attachid>433154</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-08 12:21:29 -0700</bug_when>
    <thetext>Created attachment 433154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775783</commentid>
    <comment_count>18</comment_count>
      <attachid>433154</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-08 13:52:07 -0700</bug_when>
    <thetext>Comment on attachment 433154
Patch

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

&gt; Tools/Scripts/webkitpy/common/config/contributors.json:5980
&gt; +   &quot;Yijia Huang&quot; : {
&gt; +      &quot;emails&quot; : [
&gt; +         &quot;yijia_huang@apple.com&quot;
&gt; +      ],
&gt; +      &quot;nicks&quot; : [
&gt; +         &quot;yijia&quot;
&gt; +      ],
&gt; +      &quot;status&quot; : &quot;committer&quot;
&gt; +   },

Let&apos;s do this in its own patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775791</commentid>
    <comment_count>19</comment_count>
      <attachid>433161</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-08 13:59:58 -0700</bug_when>
    <thetext>Created attachment 433161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775859</commentid>
    <comment_count>20</comment_count>
      <attachid>433184</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-08 16:32:27 -0700</bug_when>
    <thetext>Created attachment 433184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775877</commentid>
    <comment_count>21</comment_count>
      <attachid>433188</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-08 17:19:21 -0700</bug_when>
    <thetext>Created attachment 433188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775925</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-08 22:55:35 -0700</bug_when>
    <thetext>Committed r279773 (239542@main): &lt;https://commits.webkit.org/239542@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433188.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432963</attachid>
            <date>2021-07-06 12:55:40 -0700</date>
            <delta_ts>2021-07-06 15:37:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210706145539.patch</filename>
            <type>text/plain</type>
            <size>43808</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDU4OTE1NmU0YTMxYTg1MzgxYjUxYTE1OGFjNGU4ZWRmODdhNWRlLi5jY2ZhOWY3ZDgzOTRjZjlj
MDkzNzU2YjFmNDJjYTQ2YTNmYmYzOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFpcjo6QXJnIGtpbmQgU2hpZnRUeXBlIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIGFkZCBBZGQvU3ViLUFuZC1TaGlmdCB0byBBaXJPcGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRp
b246CisKKyAgICAgICAgICAgIGFkZC9zdWIgUmQsIFJuLCBSbSwgU2hpZnRUeXBlLCBhbW91bnQK
KworICAgICAgICBBREQvU1VCIChzaGlmdGVkIHJlZ2lzdGVyKSwgYWRkcy9zdWJzIGEgcmVnaXN0
ZXIgdmFsdWUgUm4gYW5kIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciAKKyAgICAgICAg
dmFsdWUgUm0sIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0
ZXIgUmQuIFRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciAKKyAgICAgICAgY2FuIHV0aWxpemUgdGhp
cyB0byBsb3dlcmluZyBjZXJ0YWluIHBhdHRlcm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFp
ciBvcHRpbWl6YXRpb24uIAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gd291bGQg
YmU6CisKKyAgICAgICAgICAgIGQgPSBuICsvLSAobSBTaGlmdFR5cGUgYW1vdW50KQorCisgICAg
ICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAg
ICAgIEludCBAMSA9IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gYW1vdW50Cisg
ICAgICAgIEludCBAMyA9IFpTaHIoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQvU3ViKEAw
LCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAv
LyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBTaGlmdCAgICV4MSwgYW1vdW50LCAleDEsIEAz
CisgICAgICAgIEFkZC9TdWIgJXgwLCAgICAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAl
eDAsICAgICAgICAgICAgICBANQorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAg
ICAgIEFkZChTdWIpU2hpZnQgJXgwLCAleDEsIGFtb3VudCwgJXgwLCBANAorICAgICAgICBSZXQg
ICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmFkZExlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
YWRkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRk
VW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphZGRMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFk
ZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVu
c2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3ViTGVmdFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJS
aWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJVbnNp
Z25lZFJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1
YkxlZnRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmln
aHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWdu
ZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAg
ICAgIChKU0M6OnRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RBZGRSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjp0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0QWRk
UmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6dGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVz
dFN1YlJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6
OnRlc3RTdWJSaWdodFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAq
IGIzL3Rlc3RiM18yLmNwcDoKKyAgICAgICAgKHRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAg
ICh0ZXN0QWRkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgICh0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFJp
Z2h0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAg
ICAgICAodGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAodGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RT
dWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0U3ViUmlnaHRTaGlmdDY0KToKKyAgICAgICAg
KHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisK
IDIwMjEtMDctMDYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBpbnN0cnVjdGlvbiBjaGVjayBmYWlsdXJlIG9mIFVCRlggYW5kIFNCRklaIGluIHRl
c3RiMyBkdWUgdG8gdGhlIHNwZWN1bGF0aXZlIGZpeCBpbiBidWcgMjI3NTU0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmlu
ZGV4IGE2YTRlZGY4OTc1MDc1ZDU5OTQxNzQ4ZGFmOTAzNDlkNjdkYjFjOWMuLmQ1NWZjNTBhZGQ4
NmU2MDZmN2QxYWY0NTMxYzdiYWNjYzRjOTViZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC01NDksNiArNTQ5
LDg0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZXh0cjw2ND4oZCwgbiwgbSwgbHNi
Lm1fdmFsdWUpOwogICAgIH0gCiAKKyAgICB2b2lkIGFkZExlZnRTaGlmdDMyKFJlZ2lzdGVySUQg
biwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAg
eworICAgICAgICBBU1NFUlQobiAhPSBBUk02NFJlZ2lzdGVyczo6c3AgfHwgbSAhPSBBUk02NFJl
Z2lzdGVyczo6c3ApOworICAgICAgICBpZiAobSA9PSBBUk02NFJlZ2lzdGVyczo6c3ApCisgICAg
ICAgICAgICBzdGQ6OnN3YXAobiwgbSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZCwg
biwgbSwgQXNzZW1ibGVyOjpMU0wsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFkZFJpZ2h0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRS
ZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0g
PT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6QVNSLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMihSZWdp
c3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBk
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRSZWdpc3RlcnM6OnNwIHx8IG0gIT0g
QVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0gPT0gQVJNNjRSZWdpc3RlcnM6OnNw
KQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8
MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCBhZGRMZWZ0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3Rl
ZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0g
QVJNNjRSZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAg
aWYgKG0gPT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0p
OworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBh
bW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0NjQoUmVnaXN0
ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFS
TTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkK
KyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0s
IFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCk7Cisg
ICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAgICAgICAgIHN0ZDo6c3dh
cChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6
OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViTGVmdFNoaWZ0MzIo
UmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVy
SUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1i
bGVyOjpMU0wsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlJpZ2h0U2hp
ZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVn
aXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyPihkLCBuLCBtLCBB
c3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViVW5z
aWduZWRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0z
MiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yjwz
Mj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN1YkxlZnRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQor
CisgICAgdm9pZCBzdWJSaWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRy
dXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1Yjw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVn
aXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9D
bGVhciwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxp
ZEdQUlJlZykKICAgICB7CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BS
UmVnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRl
eCAwYThiZDhlZWMwOTdmNmU0NGE2ZDIwNzk2N2UxOGE3MmYyNzhjNjRjLi5hM2UxZjkzNjg2ODE4
ZWYxNmM3ZGVmNzdiMmIxZGVlNjc4YmIxZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTY0MCw2ICsxNjQwLDMxOCBAQCB2b2lkIHRlc3RF
eHRyYWN0UmVnaXN0ZXI2NCgpCiAgICAgICAgIH0KICAgICB9CiB9CisKK3ZvaWQgdGVzdEFkZExl
ZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMx
IH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBhZGQzMiA9IGNvbXBpbGUoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMZWZ0U2hpZnQzMihHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tlPGludDMyX3Q+KGFkZDMyLCBu
LCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4gKyAobSA8PCBhbW91bnQpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0
b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBhZGQzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdC5hZGRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAg
ICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IGxocyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAg
aW50MzJfdCByaHMgPSBuICsgKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
UShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFt
b3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRk
MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBs
aHMgPSBpbnZva2U8dWludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgKyAoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hp
ZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9Owor
ICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBt
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGVmdFNoaWZ0NjQoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihhZGQ2NCwgbiwgbSk7
CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IGF1dG8gYWRkNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0
LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBs
aHMgPSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0
X3QgcmhzID0gbiArIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhz
LCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RB
ZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRz
ID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9y
IChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0g
Y29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFVu
c2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgbGhzID0g
aW52b2tlPHVpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgdWludDY0X3Qg
cmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pICsgKHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
KSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0MzIo
KQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YkxlZnRTaGlmdDMyKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1v
dW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAg
ICAgICAgICAgICAgIGludDMyX3QgcmhzID0gbiAtIChtIDw8IGFtb3VudCk7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90
PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHN1YjMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LnN1YlJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0g
aW52b2tlPGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJo
cyA9IG4gLSAobSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViVW5z
aWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsg
MCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBp
bGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJVbnNpZ25l
ZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRG
dW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHVpbnQzMl90IGxocyA9IGludm9r
ZTx1aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHJocyA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSAtIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obSkgPj4g
YW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDY0KCkKK3sK
KyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChh
dXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBzdWI2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5zdWJMZWZ0U2hpZnQ2NChHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KHN1YjY0LCBuLCBtKTsKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IHJocyA9IG4gLSAobSA8PCBhbW91bnQpOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWI2
NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5z
dWJSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9r
ZTxpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBu
IC0gKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVk
UmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0
LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBsaHMgPSBpbnZva2U8dWlu
dDY0X3Q+KHN1YjY0LCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obikgLSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG0pID4+IGFtb3Vu
dCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KSB8fCBDUFUoQVJNNjQpCkBAIC0zODMyLDYgKzQxNDQsMTkgQEAgdm9pZCBydW4oY29uc3QgY2hh
ciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRl
c3RFeHRyYWN0U2lnbmVkQml0ZmllbGQ2NCgpKTsKICAgICBSVU4odGVzdEV4dHJhY3RSZWdpc3Rl
cjMyKCkpOwogICAgIFJVTih0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKSk7CisKKyAgICBSVU4odGVz
dEFkZExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkUmlnaHRTaGlmdDMyKCkpOworICAg
IFJVTih0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRMZWZ0
U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVz
dEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViTGVmdFNoaWZ0MzIo
KSk7CisgICAgUlVOKHRlc3RTdWJSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDY0KCkpOworICAg
IFJVTih0ZXN0U3ViUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQ
VShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXgg
MDk2NTg0MDRmNDgzMTRlNDE3NTkxMzgzYTFjY2E1Nzg4YmVjZTZkYy4uYzU3MjA0YmUzMTk0MWYx
OGY0YjQ2MzNmMzZmZmE3YjU0NDM0ZmRjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKQEAgLTI1NDUsMTIgKzI1NDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAg
ICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1
ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKKwogICAgICAgICAgICAgQVNTRVJUKGlzVmFs
aWRGb3JtKE11bHRpcGx5QWRkNjQsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6
VG1wKSAKICAgICAgICAgICAgICAgICA9PSBpc1ZhbGlkRm9ybShNdWx0aXBseUFkZFNpZ25FeHRl
bmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKTsKICAgICAgICAg
ICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5QWRkT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0
aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAg
aWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5QWRkT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFs
dWUtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNo
aWxkKDEpOwogICAgICAgICAgICAgICAgIGlmICghaW1tKHJpZ2h0KSB8fCBtX3ZhbHVlVG9UbXBb
cmlnaHRdKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZh
bHVlKiB2KSAtPiBib29sIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bjb2Rl
KCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQpAQCAtMjU3MSw3ICsyNTcyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBsZWZ0
LT5jaGlsZCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0
ID0gbGVmdC0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURETDog
ZCA9IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBhCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBhCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobXVsdGlwbHlBZGRPcGNvZGUgPT0gTXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0
MzIobXVsdGlwbHlMZWZ0KSAmJiB0cnlTRXh0MzIobXVsdGlwbHlSaWdodCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSks
IApAQCAtMjU5NCwxNiArMjU5NSw1MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGRE
b3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUt
PmNoaWxkKDEpKTsKKyAgICAgICAgICAgIC8vIGFkZC1hbmQtc2hpZnQgUGF0dGVybjogbiArICht
IFNoaWZ0VHlwZSBhbW91bnQpCisgICAgICAgICAgICBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlND
OjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZExlZnRTaGlmdDMyLCBBZGRMZWZ0U2hp
ZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFNTaHI6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwg
QWRkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGNhc2Ug
WlNocjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoQWRkVW5z
aWduZWRSaWdodFNoaWZ0MzIsIEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBl
KCkpOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBBaXI6Ok5vcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZEFkZEFuZFNoaWZ0ID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0
cnlPcGNvZGUocmlnaHQtPm9wY29kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW9wY29kZSB8
fCAhY2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAoIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0LT5j
aGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+YXNJ
bnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5cGUo
KSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBkYXRh
c2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAg
ICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1tKHJp
Z2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50
ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8
fCB0cnlBcHBlbmRBZGRBbmRTaGlmdChyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwg
QWRkRmxvYXQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFN1YjogeworICAgICAgICAgICAgVmFsdWUqIGxl
ZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFs
dWUtPmNoaWxkKDEpOworCiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29k
ZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1
ZS0+dHlwZSgpKTsKICAgICAgICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9v
cHMKICAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJn
OjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAg
VmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSog
cmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBhdXRvIHRyeU11bHRp
cGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2
LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjUyLDcgKzI2ODgsNDEgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZEJpbk9w
PFN1YjMyLCBTdWI2NCwgU3ViRG91YmxlLCBTdWJGbG9hdD4obV92YWx1ZS0+Y2hpbGQoMCksIG1f
dmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIC8vIHN1Yi1hbmQtc2hpZnQgUGF0dGVybjog
biAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCisgICAgICAgICAgICBhdXRvIHRyeU9wY29kZSA9IFsm
XSAoSlNDOjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTaGw6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJM
ZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFNTaHI6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hp
ZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAg
IGNhc2UgWlNocjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUo
U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIsIFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVl
LT50eXBlKCkpOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBBaXI6Ok5vcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wgewor
ICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bj
b2RlKCkpOworICAgICAgICAgICAgICAgIGlmICghb3Bjb2RlIHx8ICFjYW5CZUludGVybmFsKHJp
Z2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IGlmICghaW1tKHJpZ2h0LT5jaGlsZCgxKSkgfHwgcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpIDwg
MCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
dWludDY0X3QgYW1vdW50ID0gcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IGRhdGFzaXplID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gMzIgOiA2
NDsKKyAgICAgICAgICAgICAgICBpZiAoYW1vdW50ID49IGRhdGFzaXplKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0
bXAobGVmdCksIHRtcChyaWdodC0+Y2hpbGQoMCkpLCBpbW0ocmlnaHQtPmNoaWxkKDEpKSwgdG1w
KG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBp
ZiAodHJ5QXBwZW5kU3ViQW5kU2hpZnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGFwcGVuZEJpbk9wPFN1YjMyLCBTdWI2NCwgU3ViRG91YmxlLCBTdWJGbG9hdD4o
bGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IGQ0N2ZhM2Vj
YjM4YjI2MTQ1NWQ2OTA1YTQ2OWZmNzg0YzFmYWY5NTEuLjA1ZGMzYTlmZWM0Njk2ODQwMzFkODhk
NzNlYzM3Y2MwNThiZTFmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcGNvZGUub3Bjb2RlcwpAQCAtODcyLDYgKzg3Miw0MiBAQCBhcm02NDogRXh0cmFjdFJlZ2lz
dGVyMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogYXJtNjQ6IEV4dHJhY3RSZWdp
c3RlcjY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBJbW0s
IFRtcAogCithcm02NDogQWRkTGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogQWRkUmlnaHRTaGlmdDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKwor
YXJtNjQ6IEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZExlZnRTaGlmdDY0IFU6
Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCith
cm02NDogQWRkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAg
IFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogQWRkVW5zaWduZWRSaWdodFNoaWZ0NjQgVTpH
OjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2Fy
bTY0OiBTdWJMZWZ0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBTdWJSaWdodFNoaWZ0MzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3Vi
VW5zaWduZWRSaWdodFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAg
IFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViTGVmdFNoaWZ0NjQgVTpHOjY0LCBVOkc6
NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBTdWJS
aWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAs
IEltbSwgVG1wCisKK2FybTY0OiBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKwogIyBUaGUgZmlyc3Qg
b3BlcmFuZCBpcyByYXguCiAjIEZJWE1FOiBUaGlzIGZvcm11bGF0aW9uIG1lYW5zIHRoYXQgdGhl
IGJvb2xlYW4gcmVzdWx0IGNhbm5vdCBiZSBwdXQgaW4gZWF4LCBldmVuIHRob3VnaCBhbGwgdXNl
cnMKICMgb2YgdGhpcyB3b3VsZCBiZSBPSyB3aXRoIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmgKaW5kZXggNzQ0NTRhMGJiN2NkMjNkMjY2ODI4ODY4YzM0NDg0ZmRjOWZhMjVjYi4uOWM1
NGZhOTdkMzY5NDIwZDY2YjFjYzdhYmUzMmZiNmFjNTY1NTIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuaApAQCAtNDQ4LDYgKzQ0OCwxOCBAQCB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRS
aWdodEFyZ0ltbU1hc2szMigpOwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1N
YXNrNjQoKTsKIHZvaWQgdGVzdEJhc2ljU2VsZWN0KCk7CiB2b2lkIHRlc3RTZWxlY3RUZXN0KCk7
Cit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDMyKCk7
Cit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkTGVmdFNo
aWZ0NjQoKTsKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQ2NCgpOwordm9pZCB0ZXN0QWRkVW5zaWdu
ZWRSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCk7Cit2b2lkIHRlc3RT
dWJSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCk7Cit2
b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpOwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDY0KCk7Cit2
b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFy
ZURvdWJsZSgpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0LCBmbG9hdCk7CiB2
b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZShmbG9hdCwgZmxvYXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggODgwNDVmMTVkY2VhNGYwMmQxZDExYjky
YTAyM2I0ZmI3ZTAxYjYwZS4uMzk3Nzg0OTE4OGI2YjIzZWExNjIyNTRiMGJkZDMzNmU1N2JiYzM4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC00MTE5LDYgKzQxMTks
NDI2IEBAIHZvaWQgdGVzdEV4dHJhY3RSZWdpc3RlcjY0KCkKICAgICB9CiB9CiAKK3ZvaWQgdGVz
dEFkZExlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPDwgYW1vdW50KQor
ICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50
KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3Vu
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFt
b3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4s
IG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGlu
dDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50
KSwgbiArIChtIDw8IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RBZGRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBh
bW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAo
bSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwg
aW50MzJfdCBhbW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1
ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBW
YWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAg
ICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFs
dWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50
MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAg
ICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRl
c3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7
CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8v
IFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZd
ICh1aW50MzJfdCBuLCB1aW50MzJfdCBtLCB1aW50MzJfdCBhbW91bnQpIC0+IHVpbnQzMl90IHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAg
ICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIs
IE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1
ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsK
KworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBm
b3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbiA9IG5P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1
ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA+
PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0QWRkTGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQ2NF90PiBhbW91bnRzID0geyAw
LCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA8PCBhbW91bnQp
CisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50NjRfdCBhbW91
bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBh
bW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKwor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3Bl
cmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBp
bnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRz
KSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQ2NCgpCit7
CisgICAgVmVjdG9yPGludDY0X3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8g
VGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0g
KGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQ2NF90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91
bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwg
biwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAg
aW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0g
bU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91
bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8
dWludDY0X3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJu
OiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IG4s
IHVpbnQ2NF90IG0sIHVpbnQ2NF90IGFtb3VudCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1
ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsK
KworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDY0X3Q+KCpjb2RlLCBuLCBtKTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICB1aW50NjRf
dCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbSA9IG1PcGVy
YW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwg
biArIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3Vu
dHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtIDw8
IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtLCBpbnQz
Ml90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBu
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVl
KiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZh
bHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+
KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4s
IG0sIGFtb3VudCksIG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8
aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46
IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJfdCBuLCBp
bnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFsdWUs
IGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOwor
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4g
aW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5P
cGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6
IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3Vu
dHMpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAg
ICAgICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBD
SEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNo
aWZ0MzIoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07
CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8g
dGVzdCA9IFsmXSAodWludDMyX3QgbiwgdWludDMyX3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1
aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQp
OworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50MzJfdD4oKmNvZGUsIG4sIG0p
OworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIHVpbnQz
Ml90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBtID0gbU9w
ZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQp
LCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50NjRfdD4gYW1v
dW50cyA9IHsgMCwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0g
PDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGlu
dDY0X3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUq
IHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCks
IG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZh
bHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAg
IHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3Ig
KGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1P
cGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50
IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVl
OworICAgICAgICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtIDw8IGFtb3VudCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJSaWdodFNo
aWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQ2NF90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsK
KworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91bnQpCisgICAgYXV0byB0
ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50NjRfdCBhbW91bnQpIC0+IGludDY0
X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBW
YWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUp
OworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRf
dD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2
NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAg
ICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGlu
dDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3Qo
biwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7Cisg
ICAgVmVjdG9yPHVpbnQ2NF90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRl
c3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1
aW50NjRfdCBuLCB1aW50NjRfdCBtLCB1aW50NjRfdCBhbW91bnQpIC0+IHVpbnQ2NF90IHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFt
b3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1
YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQ2NF90PigqY29k
ZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAg
ICAgdWludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQ2NF90
IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0s
IGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKQog
ewogICAgIC8vIFR1cm4gdGhpczogKHRtcCA+PiBpbW0pICYgbWFzayAKQEAgLTUwMjcsNiArNTQ0
NywxOCBAQCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRy
PFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU4odGVzdEluc2VydFNpZ25lZEJp
dGZpZWxkSW5aZXJvNjQoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0ZmllbGQzMigp
KTsKICAgICBSVU4odGVzdEV4dHJhY3RTaWduZWRCaXRmaWVsZDY0KCkpOworICAgIFJVTih0ZXN0
QWRkTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRSaWdodFNoaWZ0MzIoKSk7CisgICAg
UlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZExlZnRT
aGlmdDY0KCkpOworICAgIFJVTih0ZXN0QWRkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0
QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RTdWJMZWZ0U2hpZnQzMigp
KTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YlVuc2ln
bmVkUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViTGVmdFNoaWZ0NjQoKSk7CisgICAg
UlVOKHRlc3RTdWJSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RTdWJVbnNpZ25lZFJpZ2h0
U2hpZnQ2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMy
KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKSk7CiAg
ICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432983</attachid>
            <date>2021-07-06 15:37:43 -0700</date>
            <delta_ts>2021-07-06 17:35:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210706173741.patch</filename>
            <type>text/plain</type>
            <size>43830</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDU4OTE1NmU0YTMxYTg1MzgxYjUxYTE1OGFjNGU4ZWRmODdhNWRlLi5jY2ZhOWY3ZDgzOTRjZjlj
MDkzNzU2YjFmNDJjYTQ2YTNmYmYzOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFpcjo6QXJnIGtpbmQgU2hpZnRUeXBlIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIGFkZCBBZGQvU3ViLUFuZC1TaGlmdCB0byBBaXJPcGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRp
b246CisKKyAgICAgICAgICAgIGFkZC9zdWIgUmQsIFJuLCBSbSwgU2hpZnRUeXBlLCBhbW91bnQK
KworICAgICAgICBBREQvU1VCIChzaGlmdGVkIHJlZ2lzdGVyKSwgYWRkcy9zdWJzIGEgcmVnaXN0
ZXIgdmFsdWUgUm4gYW5kIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciAKKyAgICAgICAg
dmFsdWUgUm0sIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0
ZXIgUmQuIFRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciAKKyAgICAgICAgY2FuIHV0aWxpemUgdGhp
cyB0byBsb3dlcmluZyBjZXJ0YWluIHBhdHRlcm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFp
ciBvcHRpbWl6YXRpb24uIAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gd291bGQg
YmU6CisKKyAgICAgICAgICAgIGQgPSBuICsvLSAobSBTaGlmdFR5cGUgYW1vdW50KQorCisgICAg
ICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAg
ICAgIEludCBAMSA9IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gYW1vdW50Cisg
ICAgICAgIEludCBAMyA9IFpTaHIoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQvU3ViKEAw
LCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAv
LyBPbGQgb3B0aW1pemVkIEFJUgorICAgICAgICBTaGlmdCAgICV4MSwgYW1vdW50LCAleDEsIEAz
CisgICAgICAgIEFkZC9TdWIgJXgwLCAgICAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAl
eDAsICAgICAgICAgICAgICBANQorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAg
ICAgIEFkZChTdWIpU2hpZnQgJXgwLCAleDEsIGFtb3VudCwgJXgwLCBANAorICAgICAgICBSZXQg
ICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmFkZExlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
YWRkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRk
VW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphZGRMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFk
ZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVu
c2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3ViTGVmdFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJS
aWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJVbnNp
Z25lZFJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1
YkxlZnRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmln
aHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWdu
ZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAg
ICAgIChKU0M6OnRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RBZGRSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjp0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0QWRk
UmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6dGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVz
dFN1YlJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6
OnRlc3RTdWJSaWdodFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAq
IGIzL3Rlc3RiM18yLmNwcDoKKyAgICAgICAgKHRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAg
ICh0ZXN0QWRkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgICh0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFJp
Z2h0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAg
ICAgICAodGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAodGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RT
dWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0U3ViUmlnaHRTaGlmdDY0KToKKyAgICAgICAg
KHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisK
IDIwMjEtMDctMDYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBpbnN0cnVjdGlvbiBjaGVjayBmYWlsdXJlIG9mIFVCRlggYW5kIFNCRklaIGluIHRl
c3RiMyBkdWUgdG8gdGhlIHNwZWN1bGF0aXZlIGZpeCBpbiBidWcgMjI3NTU0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmlu
ZGV4IGE2YTRlZGY4OTc1MDc1ZDU5OTQxNzQ4ZGFmOTAzNDlkNjdkYjFjOWMuLmQ1NWZjNTBhZGQ4
NmU2MDZmN2QxYWY0NTMxYzdiYWNjYzRjOTViZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC01NDksNiArNTQ5
LDg0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZXh0cjw2ND4oZCwgbiwgbSwgbHNi
Lm1fdmFsdWUpOwogICAgIH0gCiAKKyAgICB2b2lkIGFkZExlZnRTaGlmdDMyKFJlZ2lzdGVySUQg
biwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAg
eworICAgICAgICBBU1NFUlQobiAhPSBBUk02NFJlZ2lzdGVyczo6c3AgfHwgbSAhPSBBUk02NFJl
Z2lzdGVyczo6c3ApOworICAgICAgICBpZiAobSA9PSBBUk02NFJlZ2lzdGVyczo6c3ApCisgICAg
ICAgICAgICBzdGQ6OnN3YXAobiwgbSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZCwg
biwgbSwgQXNzZW1ibGVyOjpMU0wsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFkZFJpZ2h0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRS
ZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0g
PT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6QVNSLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMihSZWdp
c3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBk
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRSZWdpc3RlcnM6OnNwIHx8IG0gIT0g
QVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0gPT0gQVJNNjRSZWdpc3RlcnM6OnNw
KQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8
MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCBhZGRMZWZ0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3Rl
ZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0g
QVJNNjRSZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAg
aWYgKG0gPT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0p
OworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBh
bW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0NjQoUmVnaXN0
ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFS
TTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkK
KyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0s
IFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCk7Cisg
ICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAgICAgICAgIHN0ZDo6c3dh
cChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6
OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViTGVmdFNoaWZ0MzIo
UmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVy
SUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1i
bGVyOjpMU0wsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlJpZ2h0U2hp
ZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVn
aXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyPihkLCBuLCBtLCBB
c3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViVW5z
aWduZWRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0z
MiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yjwz
Mj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN1YkxlZnRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQor
CisgICAgdm9pZCBzdWJSaWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRy
dXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1Yjw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVn
aXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9D
bGVhciwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxp
ZEdQUlJlZykKICAgICB7CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BS
UmVnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRl
eCAwYThiZDhlZWMwOTdmNmU0NGE2ZDIwNzk2N2UxOGE3MmYyNzhjNjRjLi5hM2UxZjkzNjg2ODE4
ZWYxNmM3ZGVmNzdiMmIxZGVlNjc4YmIxZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTY0MCw2ICsxNjQwLDMxOCBAQCB2b2lkIHRlc3RF
eHRyYWN0UmVnaXN0ZXI2NCgpCiAgICAgICAgIH0KICAgICB9CiB9CisKK3ZvaWQgdGVzdEFkZExl
ZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMx
IH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBhZGQzMiA9IGNvbXBpbGUoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMZWZ0U2hpZnQzMihHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tlPGludDMyX3Q+KGFkZDMyLCBu
LCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4gKyAobSA8PCBhbW91bnQpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0
b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBhZGQzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdC5hZGRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAg
ICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IGxocyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAg
aW50MzJfdCByaHMgPSBuICsgKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
UShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFt
b3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRk
MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBs
aHMgPSBpbnZva2U8dWludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgKyAoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hp
ZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9Owor
ICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBt
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGVmdFNoaWZ0NjQoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihhZGQ2NCwgbiwgbSk7
CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IGF1dG8gYWRkNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0
LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBs
aHMgPSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0
X3QgcmhzID0gbiArIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhz
LCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RB
ZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRz
ID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9y
IChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0g
Y29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFVu
c2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgbGhzID0g
aW52b2tlPHVpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgdWludDY0X3Qg
cmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pICsgKHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
KSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0MzIo
KQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YkxlZnRTaGlmdDMyKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1v
dW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAg
ICAgICAgICAgICAgIGludDMyX3QgcmhzID0gbiAtIChtIDw8IGFtb3VudCk7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90
PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHN1YjMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LnN1YlJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0g
aW52b2tlPGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJo
cyA9IG4gLSAobSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViVW5z
aWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsg
MCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBp
bGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJVbnNpZ25l
ZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRG
dW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHVpbnQzMl90IGxocyA9IGludm9r
ZTx1aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHJocyA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSAtIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obSkgPj4g
YW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDY0KCkKK3sK
KyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChh
dXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBzdWI2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5zdWJMZWZ0U2hpZnQ2NChHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KHN1YjY0LCBuLCBtKTsKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IHJocyA9IG4gLSAobSA8PCBhbW91bnQpOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWI2
NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5z
dWJSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9r
ZTxpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBu
IC0gKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVk
UmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0
LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBsaHMgPSBpbnZva2U8dWlu
dDY0X3Q+KHN1YjY0LCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obikgLSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG0pID4+IGFtb3Vu
dCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KSB8fCBDUFUoQVJNNjQpCkBAIC0zODMyLDYgKzQxNDQsMTkgQEAgdm9pZCBydW4oY29uc3QgY2hh
ciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRl
c3RFeHRyYWN0U2lnbmVkQml0ZmllbGQ2NCgpKTsKICAgICBSVU4odGVzdEV4dHJhY3RSZWdpc3Rl
cjMyKCkpOwogICAgIFJVTih0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKSk7CisKKyAgICBSVU4odGVz
dEFkZExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkUmlnaHRTaGlmdDMyKCkpOworICAg
IFJVTih0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRMZWZ0
U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVz
dEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViTGVmdFNoaWZ0MzIo
KSk7CisgICAgUlVOKHRlc3RTdWJSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDY0KCkpOworICAg
IFJVTih0ZXN0U3ViUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQ
VShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXgg
MDk2NTg0MDRmNDgzMTRlNDE3NTkxMzgzYTFjY2E1Nzg4YmVjZTZkYy4uMWIzNTY2YWVhNDEzZDkz
ZjA1NzQzZmU3MDA2YmI1NjVjNmY1Zjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKQEAgLTI1NDUsMTIgKzI1NDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAg
ICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1
ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKKwogICAgICAgICAgICAgQVNTRVJUKGlzVmFs
aWRGb3JtKE11bHRpcGx5QWRkNjQsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6
VG1wKSAKICAgICAgICAgICAgICAgICA9PSBpc1ZhbGlkRm9ybShNdWx0aXBseUFkZFNpZ25FeHRl
bmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKTsKICAgICAgICAg
ICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5QWRkT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0
aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAg
aWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5QWRkT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFy
Zzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFs
dWUtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNo
aWxkKDEpOwogICAgICAgICAgICAgICAgIGlmICghaW1tKHJpZ2h0KSB8fCBtX3ZhbHVlVG9UbXBb
cmlnaHRdKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZh
bHVlKiB2KSAtPiBib29sIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bjb2Rl
KCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQpAQCAtMjU3MSw3ICsyNTcyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBsZWZ0
LT5jaGlsZCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0
ID0gbGVmdC0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURETDog
ZCA9IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBhCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBhCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobXVsdGlwbHlBZGRPcGNvZGUgPT0gTXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0
MzIobXVsdGlwbHlMZWZ0KSAmJiB0cnlTRXh0MzIobXVsdGlwbHlSaWdodCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSks
IApAQCAtMjU5NCwxNiArMjU5NSw1MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGRE
b3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUt
PmNoaWxkKDEpKTsKKyAgICAgICAgICAgIC8vIGFkZC1hbmQtc2hpZnQgUGF0dGVybjogbiArICht
IFNoaWZ0VHlwZSBhbW91bnQpCisgICAgICAgICAgICBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlND
OjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZExlZnRTaGlmdDMyLCBBZGRMZWZ0U2hp
ZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFNTaHI6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFJpZ2h0U2hpZnQzMiwg
QWRkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGNhc2Ug
WlNocjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoQWRkVW5z
aWduZWRSaWdodFNoaWZ0MzIsIEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBl
KCkpOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBBaXI6Ok5vcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAg
ICAgICBhdXRvIHRyeUFwcGVuZEFkZEFuZFNoaWZ0ID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0
cnlPcGNvZGUocmlnaHQtPm9wY29kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09
IEFpcjo6Tm9wIHx8ICFjYW5CZUludGVybmFsKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICghaW1tKHJpZ2h0LT5jaGlsZCgxKSkg
fHwgcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgYW1vdW50ID0gcmlnaHQtPmNo
aWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGFzaXplID0gbV92
YWx1ZS0+dHlwZSgpID09IEludDMyID8gMzIgOiA2NDsKKyAgICAgICAgICAgICAgICBpZiAoYW1v
dW50ID49IGRhdGFzaXplKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAobGVmdCksIHRtcChyaWdodC0+Y2hpbGQo
MCkpLCBpbW0ocmlnaHQtPmNoaWxkKDEpKSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQWRkQW5kU2hpZnQobGVm
dCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZEFuZFNoaWZ0KHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwg
QWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3ViOiB7CisgICAgICAgICAg
ICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJp
Z2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG11bHRp
cGx5U3ViT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1YjMyLCBNdWx0aXBseVN1
YjY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKG11bHRpcGx5U3ViT3Bjb2Rl
ICE9IEFpcjo6T29wcwogICAgICAgICAgICAgICAgICYmIGlzVmFsaWRGb3JtKG11bHRpcGx5U3Vi
T3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAg
ICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwotICAgICAgICAgICAg
ICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAgICAgICAgICAgICAgIGF1
dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NTIsNyArMjY4OCw0MSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
YXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGUsIFN1YkZsb2F0PihtX3ZhbHVlLT5j
aGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgLy8gc3ViLWFuZC1zaGlm
dCBQYXR0ZXJuOiBuIC0gKG0gU2hpZnRUeXBlIGFtb3VudCkKKyAgICAgICAgICAgIGF1dG8gdHJ5
T3Bjb2RlID0gWyZdIChKU0M6OkIzOjpPcGNvZGUgb3Bjb2RlKSAtPiBBaXI6Ok9wY29kZSB7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNo
bDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViTGVmdFNo
aWZ0MzIsIFN1YkxlZnRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAg
IGNhc2UgU1NocjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUo
U3ViUmlnaHRTaGlmdDMyLCBTdWJSaWdodFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBaU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bj
b2RlRm9yVHlwZShTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiwgU3ViVW5zaWduZWRSaWdodFNoaWZ0
NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEFpcjo6Tm9wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kU3ViQW5kU2hpZnQgPSBbJl0gKCkg
LT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
KHJpZ2h0LT5vcGNvZGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok5v
cCB8fCAhY2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0
LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+
YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBk
YXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1t
KHJpZ2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFN1YkFuZFNoaWZ0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3ViNjQs
IFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcwppbmRleCBkNDdmYTNlY2IzOGIyNjE0NTVkNjkwNWE0NjlmZjc4NGMxZmFmOTUxLi4w
NWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDczZWMzN2NjMDU4YmUxZjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg3Miw2ICs4NzIsNDIg
QEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3RlcjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXI2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6
NjQKICAgICBUbXAsIFRtcCwgSW1tLCBUbXAKIAorYXJtNjQ6IEFkZExlZnRTaGlmdDMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJt
NjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2Fy
bTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBU
bXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFVu
c2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRt
cCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViTGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViUmln
aHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwg
SW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1Ykxl
ZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJ
bW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQs
IEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIElt
bSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3Jt
dWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVh
eCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDc0NDU0YTBiYjdjZDIzZDI2NjgyODg2
OGMzNDQ4NGZkYzlmYTI1Y2IuLjljNTRmYTk3ZDM2OTQyMGQ2NmIxY2M3YWJlMzJmYjZhYzU2NTUy
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTQ0OCw2ICs0NDgsMTggQEAgdm9p
ZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKTsKIHZvaWQgdGVzdEJpdEFu
ZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCk7CiB2b2lkIHRlc3RCYXNpY1NlbGVjdCgpOwog
dm9pZCB0ZXN0U2VsZWN0VGVzdCgpOwordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0MzIoKTsKK3ZvaWQg
dGVzdEFkZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIo
KTsKK3ZvaWQgdGVzdEFkZExlZnRTaGlmdDY0KCk7Cit2b2lkIHRlc3RBZGRSaWdodFNoaWZ0NjQo
KTsKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCk7Cit2b2lkIHRlc3RTdWJMZWZ0
U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDMyKCk7Cit2b2lkIHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0NjQoKTsKK3ZvaWQgdGVz
dFN1YlJpZ2h0U2hpZnQ2NCgpOwordm9pZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoKTsK
IHZvaWQgdGVzdFNlbGVjdENvbXBhcmVEb3VibGUoKTsKIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVG
bG9hdChmbG9hdCwgZmxvYXQpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGUo
ZmxvYXQsIGZsb2F0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDg4
MDQ1ZjE1ZGNlYTRmMDJkMWQxMWI5MmEwMjNiNGZiN2UwMWI2MGUuLjM5Nzc4NDkxODhiNmIyM2Vh
MTYyMjU0YjBiZGQzMzZlNTdiYmMzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18y
LmNwcApAQCAtNDExOSw2ICs0MTE5LDQyNiBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0ZXI2NCgp
CiAgICAgfQogfQogCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiArIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50
MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFt
b3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52
b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVy
YW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDMyKCkKK3sK
KyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBU
ZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAo
aW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFs
dWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdp
bigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hp
ZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAg
Zm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0
byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFt
b3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52
YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA+PiBhbW91bnQp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5z
aWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsg
MCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50
KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDMyX3QgbiwgdWludDMyX3QgbSwgdWludDMyX3Qg
YW1vdW50KSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBt
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVl
KiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50MzJfdD4o
KmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChu
LCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZExlZnRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8
aW50NjRfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46
IGQgPSBuICsgKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBp
bnQ2NF90IG0sIGludDY0X3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAg
ICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNo
bCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07
CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVl
OworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8
IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RBZGRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQ2NF90PiBhbW91bnRzID0geyAw
LCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQp
CisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50NjRfdCBhbW91
bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwg
YW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBp
bnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9w
ZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDog
aW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50
cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAg
ICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENI
RUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsK
KworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0
ZXN0ID0gWyZdICh1aW50NjRfdCBuLCB1aW50NjRfdCBtLCB1aW50NjRfdCBhbW91bnQpIC0+IHVp
bnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAg
ICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPHVp
bnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgdWludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
USh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0MzIoKQoreworICAg
IFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3Qg
UGF0dGVybjogZCA9IG4gLSAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQz
Ml90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSog
c2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwg
bVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFs
dWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAg
cmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9w
ZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPDwgYW1vdW50KSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hp
ZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9Owor
CisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRl
c3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJf
dCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisg
ICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
U2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBu
VmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAg
fTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0g
bk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFs
dWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0g
Pj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFt
b3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtICht
ID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IG4sIHVpbnQzMl90IG0s
IHVpbnQzMl90IGFtb3VudCkgLT4gdWludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAg
ICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAg
ICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50
VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8
dWludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5k
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsK
KyAgICAgICAgICAgICAgICB1aW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNL
X0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpCit7Cisg
ICAgVmVjdG9yPGludDY0X3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVz
dCBQYXR0ZXJuOiBkID0gbiAtIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGlu
dDY0X3QgbiwgaW50NjRfdCBtLCBpbnQ2NF90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91
bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3Jp
Z2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBt
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7
CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2
NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCks
IG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50NjRfdD4gYW1v
dW50cyA9IHsgMCwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0g
Pj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGlu
dDY0X3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUq
IHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigp
LCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRW
YWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAg
ICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9y
IChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBt
T3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3Vu
dCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1
ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViVW5zaWdu
ZWRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3Rvcjx1aW50NjRfdD4gYW1vdW50cyA9IHsgMCwg
MTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQor
ICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDY0X3QgbiwgdWludDY0X3QgbSwgdWludDY0X3QgYW1v
dW50KSAtPiB1aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVl
LCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJu
IGludm9rZTx1aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8g
bk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5k
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAg
ICAgICAgICAgICAgICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAg
ICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlm
dFJpZ2h0QXJnSW1tTWFzazMyKCkKIHsKICAgICAvLyBUdXJuIHRoaXM6ICh0bXAgPj4gaW1tKSAm
IG1hc2sgCkBAIC01MDI3LDYgKzU0NDcsMTggQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFy
KiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAg
UlVOKHRlc3RJbnNlcnRTaWduZWRCaXRmaWVsZEluWmVybzY0KCkpOwogICAgIFJVTih0ZXN0RXh0
cmFjdFNpZ25lZEJpdGZpZWxkMzIoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0Zmll
bGQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRk
UmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7
CisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0U2hp
ZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJV
Tih0ZXN0U3ViTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJSaWdodFNoaWZ0MzIoKSk7
CisgICAgUlVOKHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1
YkxlZnRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlmdDY0KCkpOworICAgIFJV
Tih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJv
U2hpZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJp
Z2h0QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsK
</data>
<flag name="commit-queue"
          id="455094"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432991</attachid>
            <date>2021-07-06 17:27:07 -0700</date>
            <delta_ts>2021-07-06 20:15:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210706192706.patch</filename>
            <type>text/plain</type>
            <size>43828</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi4xYjA1MjExYzUyODU0NDli
ODNjYTNlNTAxNzEzOTI4NzVlYzBkZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAg
ICAgICAgIGFkZC9zdWIgUmQsIFJuLCBSbSwgU2hpZnRUeXBlLCBhbW91bnQKKworICAgICAgICBB
REQvU1VCIChzaGlmdGVkIHJlZ2lzdGVyKSwgYWRkcy9zdWJzIGEgcmVnaXN0ZXIgdmFsdWUgUm4g
YW5kIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciAKKyAgICAgICAgdmFsdWUgUm0sIGFu
ZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgUmQuIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciAKKyAgICAgICAgY2FuIHV0aWxpemUgdGhpcyB0byBsb3dlcmlu
ZyBjZXJ0YWluIHBhdHRlcm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRp
b24uIAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gd291bGQgYmU6CisKKyAgICAg
ICAgICAgIGQgPSBuICsvLSAobSBTaGlmdFR5cGUgYW1vdW50KQorCisgICAgICAgIEdpdmVuIEIz
IElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9
IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gYW1vdW50CisgICAgICAgIEludCBA
MyA9IFpTaHIoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQvU3ViKEAwLCBAMykKKyAgICAg
ICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBPbGQgb3B0aW1p
emVkIEFJUgorICAgICAgICBTaGlmdCAgICV4MSwgYW1vdW50LCAleDEsIEAzCisgICAgICAgIEFk
ZC9TdWIgJXgwLCAgICAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAg
ICAgICBANQorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEFkZChTdWIp
U2hpZnQgJXgwLCAleDEsIGFtb3VudCwgJXgwLCBANAorICAgICAgICBSZXQgICAgICAgICAgICV4
MCwgICAgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZExlZnRT
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkVW5zaWduZWRSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hp
ZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRT
aGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViTGVmdFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0
NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RBZGRSaWdodFNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjp0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlND
Ojp0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAg
KEpTQzo6dGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFN1YlJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgIChKU0M6OnRlc3RTdWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJSaWdo
dFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgICh0ZXN0QWRkUmln
aHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgICh0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFJpZ2h0U2hpZnQ2NCk6
CisgICAgICAgICh0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAodGVzdFN1
YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJSaWdodFNoaWZ0MzIpOgorICAgICAgICAo
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJMZWZ0U2hpZnQ2
NCk6CisgICAgICAgICh0ZXN0U3ViUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDctMDYg
IFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBl
IGVycm9yIGluIHRlc3RiMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBhNmE0ZWRmODk3NTA3NWQ1OTk0MTc0OGRh
ZjkwMzQ5ZDY3ZGIxYzljLi5kNTVmYzUwYWRkODZlNjA2ZjdkMWFmNDUzMWM3YmFjY2M0Yzk1YmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtNTQ5LDYgKzU0OSw4NCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmV4dHI8NjQ+KGQsIG4sIG0sIGxzYi5tX3ZhbHVlKTsKICAgICB9IAogCisgICAgdm9p
ZCBhZGRMZWZ0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRS
ZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0g
PT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBu
LCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVn
aXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAg
ICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBu
LCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQg
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0
ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuICE9
IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAg
IGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBt
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwg
YW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkTGVmdFNoaWZ0NjQoUmVnaXN0
ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFS
TTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkK
KyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBB
Uk02NFJlZ2lzdGVyczo6c3AgfHwgbSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBp
ZiAobSA9PSBBUk02NFJlZ2lzdGVyczo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFt
b3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0
KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3Rl
cklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBBUk02NFJlZ2lzdGVyczo6c3AgfHwg
bSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBpZiAobSA9PSBBUk02NFJlZ2lzdGVy
czo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YkxlZnRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWJSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklE
IG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQg
biwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBh
bW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJMZWZ0U2hpZnQ2NChSZWdpc3Rl
cklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxT
TCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViUmlnaHRTaGlmdDY0KFJl
Z2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklE
IGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxl
cjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJVbnNpZ25lZFJp
Z2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3Vu
dCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBu
LCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQg
Y2xlYXJCaXQ2NChSZWdpc3RlcklEIGJpdFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0
ZXJJRCBzY3JhdGNoRm9yTWFzayA9IEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBpZiAo
c2NyYXRjaEZvck1hc2sgPT0gSW52YWxpZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggMGE4YmQ4ZWVjMDk3ZjZlNDRhNmQyMDc5Njdl
MThhNzJmMjc4YzY0Yy4uYTNlMWY5MzY4NjgxOGVmMTZjN2RlZjc3YjJiMWRlZTY3OGJiMWU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTE2
NDAsNiArMTY0MCwzMTggQEAgdm9pZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQogICAgICAgICB9
CiAgICAgfQogfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxo
cyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJf
dCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMs
IHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFk
ZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUmlnaHRTaGlmdDMy
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oYWRk
MzIsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDMyX3QgcmhzID0gbiArIChtID4+IGFtb3Vu
dCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigp
Cit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gaW52b2tlPHVpbnQzMl90PihhZGQzMiwg
biwgbSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG4pICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtKSA+PiBhbW91bnQpOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90
PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LmFkZExlZnRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBp
bnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0X3Qgcmhz
ID0gbiArIChtIDw8IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRSaWdo
dFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMg
fTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFJpZ2h0U2hpZnQ2NChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KGFkZDY0LCBu
LCBtKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKQorewor
ICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChh
dXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5hZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9IGludm9rZTx1aW50NjRfdD4oYWRkNjQsIG4sIG0p
OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihu
KSArIChzdGF0aWNfY2FzdDx1aW50NjRfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAg
ICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIz
MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5z
dWJMZWZ0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRG
dW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tl
PGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4g
LSAobSA8PCBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07Cisg
ICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0g
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91
bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShq
aXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJSaWdodFNoaWZ0MzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihzdWIzMiwgbiwgbSk7
CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuIC0gKG0gPj4gYW1vdW50KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBW
ZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBu
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAg
ICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91
bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICB1aW50MzJfdCBsaHMgPSBpbnZva2U8dWludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgLSAo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMg
PSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVm
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2
NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0g
PDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgp
Cit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZv
ciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1v
dW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oc3ViNjQsIG4sIG0pOworICAg
ICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9y
PHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAg
ICAgdWludDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAg
ICAgICAgICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pIC0gKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgog
CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMzgzMiw2ICs0
MTQ0LDE5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQoKSk7
CiAgICAgUlVOKHRlc3RFeHRyYWN0UmVnaXN0ZXIzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RS
ZWdpc3RlcjY0KCkpOworCisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4o
dGVzdEFkZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRS
aWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVO
KHRlc3RTdWJMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOwogI2VuZGlmCiAKICNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDA5NjU4NDA0ZjQ4MzE0ZTQxNzU5MTM4M2ExY2Nh
NTc4OGJlY2U2ZGMuLjFiNWE2NzA5OThlZDFlMzMyYjA3NDgyNmRhNzQyODA3ZTA1ZDNjN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ1LDEyICsy
NTQ1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUt
PmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7
CisKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkRm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkgCiAgICAgICAgICAgICAgICAgPT0gaXNW
YWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSk7CiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9w
Y29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAg
ICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBpZiAo
IWltbShyaWdodCkgfHwgbV92YWx1ZVRvVG1wW3JpZ2h0XSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7IAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2
KSkKQEAgLTI1NzEsNyArMjU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVmdC0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlSaWdodCA9IGxlZnQtPmNoaWxkKDEpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsg
YQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gU01BRERMOiBkID0gU0V4dDMyKG4pICogU0V4
dDMyKG0pICsgYQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGx5QWRkT3Bjb2Rl
ID09IE11bHRpcGx5QWRkNjQgJiYgdHJ5U0V4dDMyKG11bHRpcGx5TGVmdCkgJiYgdHJ5U0V4dDMy
KG11bHRpcGx5UmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKQEAgLTI1OTQsMTYgKzI1OTUsNTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFw
cGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAvLyBh
ZGQtYW5kLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAg
ICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6
T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bj
b2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25l
ZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRBZGRBbmRTaGlm
dCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok5vcCB8fCAhY2FuQmVJbnRlcm5hbChy
aWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8
IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAg
IHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKTsKKyAgICAgICAgICAg
ICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IDMyIDog
NjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBkYXRhc2l6ZSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwg
dG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1tKHJpZ2h0LT5jaGlsZCgxKSksIHRt
cChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
aWYgKHRyeUFwcGVuZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRT
aGlmdChyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwgQWRkRmxvYXQsIENvbW11dGF0
aXZlPihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIFN1YjogeworICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKKyAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOworCiAg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAg
ICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9vcHMKICAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3Zh
bHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5j
aGlsZCgxKTsKICAgICAgICAgICAgICAgICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSog
dikgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2LT5vcGNvZGUoKSAhPSBNdWwg
fHwgIWNhbkJlSW50ZXJuYWwodikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yNjUyLDcgKzI2ODgsNDEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPFN1YjMyLCBTdWI2NCwgU3Vi
RG91YmxlLCBTdWJGbG9hdD4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsK
KyAgICAgICAgICAgIC8vIHN1Yi1hbmQtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBh
bW91bnQpCisgICAgICAgICAgICAvLyBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6T3Bj
b2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgLy8gICAgIHN3aXRjaCAo
b3Bjb2RlKSB7CisgICAgICAgICAgICAvLyAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAvLyAg
ICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hp
ZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgIC8vICAgICBjYXNlIFNTaHI6Cisg
ICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hp
ZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgLy8g
ICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZv
clR5cGUoU3ViVW5zaWduZWRSaWdodFNoaWZ0MzIsIFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0LCBt
X3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgLy8gICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAvLyAgICAgICAgIHJldHVybiBBaXI6Ok5vcDsKKyAgICAgICAgICAgIC8vICAgICB9CisgICAg
ICAgICAgICAvLyB9OworCisgICAgICAgICAgICAvLyBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0
ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICAgICAgLy8gICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2RlKCkpOworICAgICAgICAgICAgLy8gICAgIGlmIChv
cGNvZGUgPT0gQWlyOjpOb3AgfHwgIWNhbkJlSW50ZXJuYWwocmlnaHQpKQorICAgICAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvLyAgICAgaWYgKCFpbW0ocmln
aHQtPmNoaWxkKDEpKSB8fCByaWdodC0+Y2hpbGQoMSktPmFzSW50KCkgPCAwKQorICAgICAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vICAgICB1aW50NjRf
dCBhbW91bnQgPSByaWdodC0+Y2hpbGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAvLyAgICAg
dWludDY0X3QgZGF0YXNpemUgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyAzMiA6IDY0Owor
ICAgICAgICAgICAgLy8gICAgIGlmIChhbW91bnQgPj0gZGF0YXNpemUpCisgICAgICAgICAgICAv
LyAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gICAgIGFwcGVuZChvcGNv
ZGUsIHRtcChsZWZ0KSwgdG1wKHJpZ2h0LT5jaGlsZCgwKSksIGltbShyaWdodC0+Y2hpbGQoMSkp
LCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgLy8gICAgIGNvbW1pdEludGVybmFsKHJpZ2h0
KTsKKyAgICAgICAgICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIC8vIH07CisK
KyAgICAgICAgICAgIC8vIGlmICh0cnlBcHBlbmRTdWJBbmRTaGlmdCgpKQorICAgICAgICAgICAg
Ly8gICAgIHJldHVybjsKKworICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBT
dWJEb3VibGUsIFN1YkZsb2F0PihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMKaW5kZXggZDQ3ZmEzZWNiMzhiMjYxNDU1ZDY5MDVhNDY5ZmY3ODRjMWZhZjk1MS4uMDVk
YzNhOWZlYzQ2OTY4NDAzMWQ4OGQ3M2VjMzdjYzA1OGJlMWY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC04NzIsNiArODcyLDQyIEBA
IGFybTY0OiBFeHRyYWN0UmVnaXN0ZXIzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMy
CiBhcm02NDogRXh0cmFjdFJlZ2lzdGVyNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0
CiAgICAgVG1wLCBUbXAsIEltbSwgVG1wCiAKK2FybTY0OiBBZGRMZWZ0U2hpZnQzMiBVOkc6MzIs
IFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0
OiBBZGRSaWdodFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRt
cCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogQWRkVW5zaWduZWRSaWdodFNoaWZ0MzIgVTpHOjMy
LCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02
NDogQWRkTGVmdFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1w
LCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRSaWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAs
IFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YkxlZnRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlJpZ2h0
U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIElt
bSwgVG1wCisKK2FybTY0OiBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwg
VTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBTdWJMZWZ0
U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1t
LCBUbXAKKworYXJtNjQ6IFN1YlJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBE
Okc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRT
aGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0s
IFRtcAorCiAjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KICMgRklYTUU6IFRoaXMgZm9ybXVs
YXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgs
IGV2ZW4gdGhvdWdoIGFsbCB1c2VycwogIyBvZiB0aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCA3NDQ1NGEwYmI3Y2QyM2QyNjY4Mjg4Njhj
MzQ0ODRmZGM5ZmEyNWNiLi45YzU0ZmE5N2QzNjk0MjBkNjZiMWNjN2FiZTMyZmI2YWM1NjU1MjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC00NDgsNiArNDQ4LDE4IEBAIHZvaWQg
dGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCk7CiB2b2lkIHRlc3RCaXRBbmRa
ZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwogdm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKIHZv
aWQgdGVzdFNlbGVjdFRlc3QoKTsKK3ZvaWQgdGVzdEFkZExlZnRTaGlmdDMyKCk7Cit2b2lkIHRl
c3RBZGRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCk7
Cit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQ2NCgpOwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDY0KCk7
Cit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpOwordm9pZCB0ZXN0U3ViTGVmdFNo
aWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViVW5zaWdu
ZWRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDY0KCk7Cit2b2lkIHRlc3RT
dWJSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCk7CiB2
b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91YmxlKCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxv
YXQoZmxvYXQsIGZsb2F0KTsKIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZs
b2F0LCBmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
XzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCA4ODA0
NWYxNWRjZWE0ZjAyZDFkMTFiOTJhMDIzYjRmYjdlMDFiNjBlLi5mODFjZTBlMmFlOTU3NTNlYTA4
OTFjM2VhMjJkNzVmMzAwNWVjMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5j
cHAKQEAgLTQxMTksNiArNDExOSw0MjYgQEAgdm9pZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQog
ICAgIH0KIH0KIAordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQz
Ml90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gKyAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMy
X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAg
ICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
ICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwor
ICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91
bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9r
ZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFu
ZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7
CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tf
RVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQzMigpCit7Cisg
ICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVz
dCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGlu
dDMyX3QgbiwgaW50MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVl
KiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4o
KSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0
VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAg
ICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZv
ciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91
bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFs
dWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFVuc2ln
bmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAs
IDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkK
KyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IG4sIHVpbnQzMl90IG0sIHVpbnQzMl90IGFt
b3VudCkgLT4gdWludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSog
YW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAg
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpj
b2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICB1aW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMy
X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3Qobiwg
bSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiArIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50
NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFs
dWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAg
ICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGws
IE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1
ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9Owor
CisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChh
dXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA8PCBh
bW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0
QWRkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQor
ICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50
KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFt
b3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52
b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVy
YW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0
NjQoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisK
KyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVz
dCA9IFsmXSAodWludDY0X3QgbiwgdWludDY0X3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50
NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1
ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBh
dXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50
NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBp
bnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVy
YW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEo
dGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCkKK3sKKyAgICBW
ZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBh
dHRlcm46IGQgPSBuIC0gKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJf
dCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNo
aWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG1W
YWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVl
KSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJl
dHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1
dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVy
YW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDog
YW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOwor
ICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtIDw8IGFtb3VudCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0
MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKwor
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0
ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAg
ICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1No
ciwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07
CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVl
OworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+
IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91
bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+
PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBuLCB1aW50MzJfdCBtLCB1
aW50MzJfdCBhbW91bnQpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFs
dWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAg
VmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAg
ICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPHVp
bnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6
IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
USh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0NjQoKQoreworICAg
IFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3Qg
UGF0dGVybjogZCA9IG4gLSAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2
NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBW
YWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50
KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7
CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRf
dCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJh
bmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBu
IC0gKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3Vu
dHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+
IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQz
Ml90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBu
VmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBz
aGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwg
bVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFs
dWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAg
cmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9w
ZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVk
UmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAg
ICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IG4sIHVpbnQ2NF90IG0sIHVpbnQzMl90IGFtb3Vu
dCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwg
YW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBp
bnZva2U8dWludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5P
cGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3Vu
dHMpIHsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAg
ICAgICAgICAgICAgdWludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRS
aWdodEFyZ0ltbU1hc2szMigpCiB7CiAgICAgLy8gVHVybiB0aGlzOiAodG1wID4+IGltbSkgJiBt
YXNrIApAQCAtNTAyNyw2ICs1NDQ3LDE4IEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciog
ZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJV
Tih0ZXN0SW5zZXJ0U2lnbmVkQml0ZmllbGRJblplcm82NCgpKTsKICAgICBSVU4odGVzdEV4dHJh
Y3RTaWduZWRCaXRmaWVsZDMyKCkpOwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxk
NjQoKSk7CisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFJp
Z2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkpOwor
ICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRSaWdodFNoaWZ0
NjQoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4o
dGVzdFN1YkxlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlmdDMyKCkpOwor
ICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJM
ZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4o
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1No
aWZ0UmlnaHRBcmdJbW1NYXNrMzIoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdo
dEFyZ0ltbU1hc2s2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433001</attachid>
            <date>2021-07-06 20:15:09 -0700</date>
            <delta_ts>2021-07-06 23:05:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210706221508.patch</filename>
            <type>text/plain</type>
            <size>43912</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi4xYjA1MjExYzUyODU0NDli
ODNjYTNlNTAxNzEzOTI4NzVlYzBkZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAg
ICAgICAgIGFkZC9zdWIgUmQsIFJuLCBSbSwgU2hpZnRUeXBlLCBhbW91bnQKKworICAgICAgICBB
REQvU1VCIChzaGlmdGVkIHJlZ2lzdGVyKSwgYWRkcy9zdWJzIGEgcmVnaXN0ZXIgdmFsdWUgUm4g
YW5kIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciAKKyAgICAgICAgdmFsdWUgUm0sIGFu
ZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgUmQuIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciAKKyAgICAgICAgY2FuIHV0aWxpemUgdGhpcyB0byBsb3dlcmlu
ZyBjZXJ0YWluIHBhdHRlcm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRp
b24uIAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gd291bGQgYmU6CisKKyAgICAg
ICAgICAgIGQgPSBuICsvLSAobSBTaGlmdFR5cGUgYW1vdW50KQorCisgICAgICAgIEdpdmVuIEIz
IElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9
IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gYW1vdW50CisgICAgICAgIEludCBA
MyA9IFpTaHIoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQvU3ViKEAwLCBAMykKKyAgICAg
ICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBPbGQgb3B0aW1p
emVkIEFJUgorICAgICAgICBTaGlmdCAgICV4MSwgYW1vdW50LCAleDEsIEAzCisgICAgICAgIEFk
ZC9TdWIgJXgwLCAgICAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAg
ICAgICBANQorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEFkZChTdWIp
U2hpZnQgJXgwLCAleDEsIGFtb3VudCwgJXgwLCBANAorICAgICAgICBSZXQgICAgICAgICAgICV4
MCwgICAgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZExlZnRT
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkVW5zaWduZWRSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hp
ZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRT
aGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViTGVmdFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0
NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RBZGRSaWdodFNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjp0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlND
Ojp0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAg
KEpTQzo6dGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFN1YlJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgIChKU0M6OnRlc3RTdWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJSaWdo
dFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgICh0ZXN0QWRkUmln
aHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgICh0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFJpZ2h0U2hpZnQ2NCk6
CisgICAgICAgICh0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAodGVzdFN1
YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJSaWdodFNoaWZ0MzIpOgorICAgICAgICAo
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJMZWZ0U2hpZnQ2
NCk6CisgICAgICAgICh0ZXN0U3ViUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDctMDYg
IFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBl
IGVycm9yIGluIHRlc3RiMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBhNmE0ZWRmODk3NTA3NWQ1OTk0MTc0OGRh
ZjkwMzQ5ZDY3ZGIxYzljLi5kNTVmYzUwYWRkODZlNjA2ZjdkMWFmNDUzMWM3YmFjY2M0Yzk1YmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtNTQ5LDYgKzU0OSw4NCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmV4dHI8NjQ+KGQsIG4sIG0sIGxzYi5tX3ZhbHVlKTsKICAgICB9IAogCisgICAgdm9p
ZCBhZGRMZWZ0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRS
ZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0g
PT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBu
LCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVn
aXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAg
ICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBu
LCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQg
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0
ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuICE9
IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAg
IGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBt
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwg
YW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkTGVmdFNoaWZ0NjQoUmVnaXN0
ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFS
TTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkK
KyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBB
Uk02NFJlZ2lzdGVyczo6c3AgfHwgbSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBp
ZiAobSA9PSBBUk02NFJlZ2lzdGVyczo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFt
b3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0
KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3Rl
cklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBBUk02NFJlZ2lzdGVyczo6c3AgfHwg
bSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBpZiAobSA9PSBBUk02NFJlZ2lzdGVy
czo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YkxlZnRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWJSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklE
IG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQg
biwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBh
bW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJMZWZ0U2hpZnQ2NChSZWdpc3Rl
cklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxT
TCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViUmlnaHRTaGlmdDY0KFJl
Z2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklE
IGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxl
cjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJVbnNpZ25lZFJp
Z2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3Vu
dCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBu
LCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQg
Y2xlYXJCaXQ2NChSZWdpc3RlcklEIGJpdFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0
ZXJJRCBzY3JhdGNoRm9yTWFzayA9IEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBpZiAo
c2NyYXRjaEZvck1hc2sgPT0gSW52YWxpZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggMGE4YmQ4ZWVjMDk3ZjZlNDRhNmQyMDc5Njdl
MThhNzJmMjc4YzY0Yy4uYTNlMWY5MzY4NjgxOGVmMTZjN2RlZjc3YjJiMWRlZTY3OGJiMWU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTE2
NDAsNiArMTY0MCwzMTggQEAgdm9pZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQogICAgICAgICB9
CiAgICAgfQogfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxo
cyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJf
dCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMs
IHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFk
ZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUmlnaHRTaGlmdDMy
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oYWRk
MzIsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDMyX3QgcmhzID0gbiArIChtID4+IGFtb3Vu
dCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigp
Cit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gaW52b2tlPHVpbnQzMl90PihhZGQzMiwg
biwgbSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG4pICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtKSA+PiBhbW91bnQpOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90
PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LmFkZExlZnRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBp
bnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0X3Qgcmhz
ID0gbiArIChtIDw8IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRSaWdo
dFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMg
fTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFJpZ2h0U2hpZnQ2NChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KGFkZDY0LCBu
LCBtKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKQorewor
ICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChh
dXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5hZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9IGludm9rZTx1aW50NjRfdD4oYWRkNjQsIG4sIG0p
OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihu
KSArIChzdGF0aWNfY2FzdDx1aW50NjRfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAg
ICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIz
MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5z
dWJMZWZ0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRG
dW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tl
PGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4g
LSAobSA8PCBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07Cisg
ICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0g
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91
bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShq
aXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJSaWdodFNoaWZ0MzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihzdWIzMiwgbiwgbSk7
CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuIC0gKG0gPj4gYW1vdW50KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBW
ZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBu
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAg
ICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91
bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICB1aW50MzJfdCBsaHMgPSBpbnZva2U8dWludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgLSAo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMg
PSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVm
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2
NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0g
PDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgp
Cit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZv
ciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1v
dW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oc3ViNjQsIG4sIG0pOworICAg
ICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9y
PHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAg
ICAgdWludDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAg
ICAgICAgICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pIC0gKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgog
CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMzgzMiw2ICs0
MTQ0LDE5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQoKSk7
CiAgICAgUlVOKHRlc3RFeHRyYWN0UmVnaXN0ZXIzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RS
ZWdpc3RlcjY0KCkpOworCisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4o
dGVzdEFkZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRS
aWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVO
KHRlc3RTdWJMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOwogI2VuZGlmCiAKICNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDA5NjU4NDA0ZjQ4MzE0ZTQxNzU5MTM4M2ExY2Nh
NTc4OGJlY2U2ZGMuLjU3YjIzMGU5Zjk1ZTZmNjlmZGJmYTE1NWY0ZGE2MzA1YWNiMTkzYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ1LDEyICsy
NTQ1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUt
PmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7
CisKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkRm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkgCiAgICAgICAgICAgICAgICAgPT0gaXNW
YWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSk7CiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9w
Y29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAg
ICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBpZiAo
IWltbShyaWdodCkgfHwgbV92YWx1ZVRvVG1wW3JpZ2h0XSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7IAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2
KSkKQEAgLTI1NzEsNyArMjU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVmdC0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlSaWdodCA9IGxlZnQtPmNoaWxkKDEpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsg
YQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gU01BRERMOiBkID0gU0V4dDMyKG4pICogU0V4
dDMyKG0pICsgYQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGx5QWRkT3Bjb2Rl
ID09IE11bHRpcGx5QWRkNjQgJiYgdHJ5U0V4dDMyKG11bHRpcGx5TGVmdCkgJiYgdHJ5U0V4dDMy
KG11bHRpcGx5UmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKQEAgLTI1OTQsMTYgKzI1OTUsNTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFw
cGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAvLyBh
ZGQtYW5kLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAg
ICAgLy8gYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFp
cjo6T3Bjb2RlIHsKKyAgICAgICAgICAgIC8vICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgLy8gICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgLy8gICAgICAgICByZXR1cm4gdHJ5
T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5
cGUoKSk7CisgICAgICAgICAgICAvLyAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgLy8gICAg
ICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hp
ZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgIC8vICAgICBjYXNlIFpTaHI6Cisg
ICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVk
UmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
KyAgICAgICAgICAgIC8vICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gICAgICAgICByZXR1
cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAvLyAgICAgfQorICAgICAgICAgICAgLy8gfTsKKwor
ICAgICAgICAgICAgLy8gYXV0byB0cnlBcHBlbmRBZGRBbmRTaGlmdCA9IFsmXSAoVmFsdWUqIGxl
ZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAvLyAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7CisgICAgICAgICAgICAvLyAg
ICAgaWYgKG9wY29kZSA9PSBBaXI6Ok5vcCB8fCAhY2FuQmVJbnRlcm5hbChyaWdodCkpCisgICAg
ICAgICAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8vICAgICBpZiAo
IWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisg
ICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gICAg
IHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKTsKKyAgICAgICAgICAg
IC8vICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IDMy
IDogNjQ7CisgICAgICAgICAgICAvLyAgICAgaWYgKGFtb3VudCA+PSBkYXRhc2l6ZSkKKyAgICAg
ICAgICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAvLyAgICAgYXBw
ZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1tKHJpZ2h0LT5j
aGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAvLyAgICAgY29tbWl0SW50ZXJu
YWwocmlnaHQpOworICAgICAgICAgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
Ly8gfTsKKworICAgICAgICAgICAgLy8gaWYgKHRyeUFwcGVuZEFkZEFuZFNoaWZ0KGxlZnQsIHJp
Z2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRTaGlmdChyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAv
LyAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFk
ZERvdWJsZSwgQWRkRmxvYXQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFN1YjogeworICAgICAgICAgICAg
VmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgIFZhbHVlKiByaWdo
dCA9IG1fdmFsdWUtPmNoaWxkKDEpOworCiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBs
eVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2
NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAh
PSBBaXI6Ok9vcHMKICAgICAgICAgICAgICAgICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9w
Y29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAg
ICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBhdXRv
IHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICh2LT5vcGNvZGUoKSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjUyLDcgKzI2ODgsNDEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFw
cGVuZEJpbk9wPFN1YjMyLCBTdWI2NCwgU3ViRG91YmxlLCBTdWJGbG9hdD4obV92YWx1ZS0+Y2hp
bGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIC8vIHN1Yi1hbmQtc2hpZnQg
UGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCisgICAgICAgICAgICAvLyBhdXRvIHRy
eU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgewor
ICAgICAgICAgICAgLy8gICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAgICAvLyAgICAg
Y2FzZSBTaGw6CisgICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBl
KFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAg
ICAgICAgIC8vICAgICBjYXNlIFNTaHI6CisgICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hpZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBtX3ZhbHVl
LT50eXBlKCkpOworICAgICAgICAgICAgLy8gICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgIC8v
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViVW5zaWduZWRSaWdodFNoaWZ0MzIs
IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAg
Ly8gICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiBBaXI6Ok5vcDsK
KyAgICAgICAgICAgIC8vICAgICB9CisgICAgICAgICAgICAvLyB9OworCisgICAgICAgICAgICAv
LyBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICAg
ICAgLy8gICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2RlKCkp
OworICAgICAgICAgICAgLy8gICAgIGlmIChvcGNvZGUgPT0gQWlyOjpOb3AgfHwgIWNhbkJlSW50
ZXJuYWwocmlnaHQpKQorICAgICAgICAgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAvLyAgICAgaWYgKCFpbW0ocmlnaHQtPmNoaWxkKDEpKSB8fCByaWdodC0+Y2hpbGQo
MSktPmFzSW50KCkgPCAwKQorICAgICAgICAgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIC8vICAgICB1aW50NjRfdCBhbW91bnQgPSByaWdodC0+Y2hpbGQoMSktPmFz
SW50KCk7CisgICAgICAgICAgICAvLyAgICAgdWludDY0X3QgZGF0YXNpemUgPSBtX3ZhbHVlLT50
eXBlKCkgPT0gSW50MzIgPyAzMiA6IDY0OworICAgICAgICAgICAgLy8gICAgIGlmIChhbW91bnQg
Pj0gZGF0YXNpemUpCisgICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgLy8gICAgIGFwcGVuZChvcGNvZGUsIHRtcChsZWZ0KSwgdG1wKHJpZ2h0LT5jaGls
ZCgwKSksIGltbShyaWdodC0+Y2hpbGQoMSkpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAg
Ly8gICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgIC8vICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIC8vIH07CisKKyAgICAgICAgICAgIC8vIGlmICh0cnlBcHBlbmRT
dWJBbmRTaGlmdCgpKQorICAgICAgICAgICAgLy8gICAgIHJldHVybjsKKworICAgICAgICAgICAg
YXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGUsIFN1YkZsb2F0PihsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggZDQ3ZmEzZWNiMzhiMjYxNDU1
ZDY5MDVhNDY5ZmY3ODRjMWZhZjk1MS4uMDVkYzNhOWZlYzQ2OTY4NDAzMWQ4OGQ3M2VjMzdjYzA1
OGJlMWY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzCkBAIC04NzIsNiArODcyLDQyIEBAIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXIzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiBhcm02NDogRXh0cmFjdFJlZ2lzdGVyNjQgVTpH
OjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIEltbSwgVG1wCiAKK2Fy
bTY0OiBBZGRMZWZ0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRSaWdodFNoaWZ0MzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogQWRk
VW5zaWduZWRSaWdodFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAg
IFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogQWRkTGVmdFNoaWZ0NjQgVTpHOjY0LCBVOkc6
NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRS
aWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAs
IEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1Ykxl
ZnRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwg
SW1tLCBUbXAKKworYXJtNjQ6IFN1YlJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMy
LCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBTdWJVbnNpZ25lZFJp
Z2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAs
IEltbSwgVG1wCisKK2FybTY0OiBTdWJMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0
LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlJpZ2h0U2hpZnQ2
NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAK
KworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQs
IEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCiAjIFRoZSBmaXJzdCBvcGVyYW5kIGlz
IHJheC4KICMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiBy
ZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycwogIyBvZiB0
aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRl
eCA3NDQ1NGEwYmI3Y2QyM2QyNjY4Mjg4NjhjMzQ0ODRmZGM5ZmEyNWNiLi45YzU0ZmE5N2QzNjk0
MjBkNjZiMWNjN2FiZTMyZmI2YWM1NjU1MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
CkBAIC00NDgsNiArNDQ4LDE4IEBAIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1t
TWFzazMyKCk7CiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwog
dm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKIHZvaWQgdGVzdFNlbGVjdFRlc3QoKTsKK3ZvaWQgdGVz
dEFkZExlZnRTaGlmdDMyKCk7Cit2b2lkIHRlc3RBZGRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVz
dEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCk7Cit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQ2NCgpOwor
dm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDY0KCk7Cit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQ2NCgpOwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hp
ZnQzMigpOwordm9pZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1
YkxlZnRTaGlmdDY0KCk7Cit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1
YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91YmxlKCk7
CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQoZmxvYXQsIGZsb2F0KTsKIHZvaWQgdGVzdFNl
bGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZsb2F0LCBmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18yLmNwcAppbmRleCA4ODA0NWYxNWRjZWE0ZjAyZDFkMTFiOTJhMDIzYjRmYjdl
MDFiNjBlLi5mODFjZTBlMmFlOTU3NTNlYTA4OTFjM2VhMjJkNzVmMzAwNWVjMDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKQEAgLTQxMTksNiArNDExOSw0MjYgQEAgdm9p
ZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQogICAgIH0KIH0KIAordm9pZCB0ZXN0QWRkTGVmdFNo
aWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsK
KworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA8PCBhbW91bnQpCisgICAgYXV0byB0
ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMy
X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKwor
ICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBu
VmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAg
fTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0g
bk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFs
dWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0g
PDwgYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdEFkZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7
IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3Vu
dCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtLCBpbnQzMl90IGFt
b3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBh
bW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29k
ZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAg
ICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBt
ID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBh
bW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0
b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0
ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90
IG4sIHVpbnQzMl90IG0sIHVpbnQzMl90IGFtb3VudCkgLT4gdWludDMyX3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSog
c2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCks
IG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZh
bHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAg
IHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9y
IChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBt
T3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3Vu
dCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBuID0gbk9wZXJhbmQudmFs
dWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRMZWZ0
U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9
OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtIDw8IGFtb3VudCkKKyAgICBhdXRv
IHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50
NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVl
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0
X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAg
ICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBp
bnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0
KG4sIG0sIGFtb3VudCksIG4gKyAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0
b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRl
cm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBu
LCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisK
KyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAg
ICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAg
Zm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4g
PSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52
YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAo
bSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4g
YW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsg
KG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDY0X3QgbiwgdWludDY0X3Qg
bSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAg
IFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBP
cmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUs
IHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisK
KyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4g
YW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVz
dFN1YkxlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPDwgYW1vdW50KQor
ICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50
KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3Vu
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFt
b3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBP
cmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4s
IG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGlu
dDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50
KSwgbiAtIChtIDw8IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBh
bW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAo
bSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwg
aW50MzJfdCBhbW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1
ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBW
YWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAg
ICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFs
dWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50
MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAg
ICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRl
c3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7
CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8v
IFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZd
ICh1aW50MzJfdCBuLCB1aW50MzJfdCBtLCB1aW50MzJfdCBhbW91bnQpIC0+IHVpbnQzMl90IHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAg
ICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIs
IE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1
ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsK
KworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBm
b3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbiA9IG5P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1
ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+
PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0U3ViTGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAw
LCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA8PCBhbW91bnQp
CisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91
bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBh
bW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKwor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3Bl
cmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBp
bnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRz
KSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgpCit7
CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8g
VGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0g
KGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91
bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIs
IE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwg
biwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAg
aW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0g
bU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91
bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8
dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJu
OiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IG4s
IHVpbnQ2NF90IG0sIHVpbnQzMl90IGFtb3VudCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1
ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsK
KworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDY0X3Q+KCpjb2RlLCBuLCBtKTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICB1aW50NjRf
dCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbSA9IG1PcGVy
YW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwg
biAtIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
CiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpCiB7CiAgICAgLy8g
VHVybiB0aGlzOiAodG1wID4+IGltbSkgJiBtYXNrIApAQCAtNTAyNyw2ICs1NDQ3LDE4IEBAIHZv
aWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFz
azx2b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJVTih0ZXN0SW5zZXJ0U2lnbmVkQml0ZmllbGRJblpl
cm82NCgpKTsKICAgICBSVU4odGVzdEV4dHJhY3RTaWduZWRCaXRmaWVsZDMyKCkpOwogICAgIFJV
Tih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQoKSk7CisgICAgUlVOKHRlc3RBZGRMZWZ0U2hp
ZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFk
ZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0NjQoKSk7
CisgICAgUlVOKHRlc3RBZGRSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25l
ZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDMyKCkpOworICAgIFJV
Tih0ZXN0U3ViUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNo
aWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1
YlJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkp
OwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKSk7CiAgICAg
UlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpKTsKICAgICBSVU4odGVz
dEJpdEFuZEFyZ3MoNDMsIDQzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433015</attachid>
            <date>2021-07-06 23:05:53 -0700</date>
            <delta_ts>2021-07-06 23:13:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210707010552.patch</filename>
            <type>text/plain</type>
            <size>43828</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi4xYjA1MjExYzUyODU0NDli
ODNjYTNlNTAxNzEzOTI4NzVlYzBkZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAg
ICAgICAgIGFkZC9zdWIgUmQsIFJuLCBSbSwgU2hpZnRUeXBlLCBhbW91bnQKKworICAgICAgICBB
REQvU1VCIChzaGlmdGVkIHJlZ2lzdGVyKSwgYWRkcy9zdWJzIGEgcmVnaXN0ZXIgdmFsdWUgUm4g
YW5kIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciAKKyAgICAgICAgdmFsdWUgUm0sIGFu
ZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgUmQuIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciAKKyAgICAgICAgY2FuIHV0aWxpemUgdGhpcyB0byBsb3dlcmlu
ZyBjZXJ0YWluIHBhdHRlcm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRp
b24uIAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gd291bGQgYmU6CisKKyAgICAg
ICAgICAgIGQgPSBuICsvLSAobSBTaGlmdFR5cGUgYW1vdW50KQorCisgICAgICAgIEdpdmVuIEIz
IElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9
IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gYW1vdW50CisgICAgICAgIEludCBA
MyA9IFpTaHIoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQvU3ViKEAwLCBAMykKKyAgICAg
ICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBPbGQgb3B0aW1p
emVkIEFJUgorICAgICAgICBTaGlmdCAgICV4MSwgYW1vdW50LCAleDEsIEAzCisgICAgICAgIEFk
ZC9TdWIgJXgwLCAgICAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAg
ICAgICBANQorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEFkZChTdWIp
U2hpZnQgJXgwLCAleDEsIGFtb3VudCwgJXgwLCBANAorICAgICAgICBSZXQgICAgICAgICAgICV4
MCwgICAgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZExlZnRT
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkVW5zaWduZWRSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hp
ZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRT
aGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViTGVmdFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0
NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RBZGRSaWdodFNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjp0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlND
Ojp0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAg
KEpTQzo6dGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFN1YlJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgIChKU0M6OnRlc3RTdWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJSaWdo
dFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgICh0ZXN0QWRkUmln
aHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgICh0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFJpZ2h0U2hpZnQ2NCk6
CisgICAgICAgICh0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAodGVzdFN1
YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJSaWdodFNoaWZ0MzIpOgorICAgICAgICAo
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJMZWZ0U2hpZnQ2
NCk6CisgICAgICAgICh0ZXN0U3ViUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDctMDYg
IFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBl
IGVycm9yIGluIHRlc3RiMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBhNmE0ZWRmODk3NTA3NWQ1OTk0MTc0OGRh
ZjkwMzQ5ZDY3ZGIxYzljLi5kNTVmYzUwYWRkODZlNjA2ZjdkMWFmNDUzMWM3YmFjY2M0Yzk1YmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtNTQ5LDYgKzU0OSw4NCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmV4dHI8NjQ+KGQsIG4sIG0sIGxzYi5tX3ZhbHVlKTsKICAgICB9IAogCisgICAgdm9p
ZCBhZGRMZWZ0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRS
ZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0g
PT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBu
LCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVn
aXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAg
ICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBu
LCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQg
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0
ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuICE9
IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAg
IGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBt
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwg
YW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkTGVmdFNoaWZ0NjQoUmVnaXN0
ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFS
TTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkK
KyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBB
Uk02NFJlZ2lzdGVyczo6c3AgfHwgbSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBp
ZiAobSA9PSBBUk02NFJlZ2lzdGVyczo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFt
b3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0
KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3Rl
cklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBBUk02NFJlZ2lzdGVyczo6c3AgfHwg
bSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBpZiAobSA9PSBBUk02NFJlZ2lzdGVy
czo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YkxlZnRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWJSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklE
IG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQg
biwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBh
bW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJMZWZ0U2hpZnQ2NChSZWdpc3Rl
cklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxT
TCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViUmlnaHRTaGlmdDY0KFJl
Z2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklE
IGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxl
cjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJVbnNpZ25lZFJp
Z2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3Vu
dCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBu
LCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQg
Y2xlYXJCaXQ2NChSZWdpc3RlcklEIGJpdFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0
ZXJJRCBzY3JhdGNoRm9yTWFzayA9IEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBpZiAo
c2NyYXRjaEZvck1hc2sgPT0gSW52YWxpZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggMGE4YmQ4ZWVjMDk3ZjZlNDRhNmQyMDc5Njdl
MThhNzJmMjc4YzY0Yy4uYTNlMWY5MzY4NjgxOGVmMTZjN2RlZjc3YjJiMWRlZTY3OGJiMWU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTE2
NDAsNiArMTY0MCwzMTggQEAgdm9pZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQogICAgICAgICB9
CiAgICAgfQogfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxo
cyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJf
dCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMs
IHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFk
ZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUmlnaHRTaGlmdDMy
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oYWRk
MzIsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDMyX3QgcmhzID0gbiArIChtID4+IGFtb3Vu
dCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigp
Cit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gaW52b2tlPHVpbnQzMl90PihhZGQzMiwg
biwgbSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG4pICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtKSA+PiBhbW91bnQpOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90
PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LmFkZExlZnRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBp
bnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0X3Qgcmhz
ID0gbiArIChtIDw8IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRSaWdo
dFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMg
fTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFJpZ2h0U2hpZnQ2NChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KGFkZDY0LCBu
LCBtKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKQorewor
ICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChh
dXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5hZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9IGludm9rZTx1aW50NjRfdD4oYWRkNjQsIG4sIG0p
OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihu
KSArIChzdGF0aWNfY2FzdDx1aW50NjRfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAg
ICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIz
MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5z
dWJMZWZ0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRG
dW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tl
PGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4g
LSAobSA8PCBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07Cisg
ICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0g
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91
bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShq
aXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJSaWdodFNoaWZ0MzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihzdWIzMiwgbiwgbSk7
CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuIC0gKG0gPj4gYW1vdW50KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBW
ZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBu
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAg
ICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91
bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICB1aW50MzJfdCBsaHMgPSBpbnZva2U8dWludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgLSAo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMg
PSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVm
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2
NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0g
PDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgp
Cit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZv
ciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1v
dW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oc3ViNjQsIG4sIG0pOworICAg
ICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9y
PHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAg
ICAgdWludDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAg
ICAgICAgICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pIC0gKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgog
CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMzgzMiw2ICs0
MTQ0LDE5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQoKSk7
CiAgICAgUlVOKHRlc3RFeHRyYWN0UmVnaXN0ZXIzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RS
ZWdpc3RlcjY0KCkpOworCisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4o
dGVzdEFkZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRS
aWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVO
KHRlc3RTdWJMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOwogI2VuZGlmCiAKICNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDA5NjU4NDA0ZjQ4MzE0ZTQxNzU5MTM4M2ExY2Nh
NTc4OGJlY2U2ZGMuLjFiNWE2NzA5OThlZDFlMzMyYjA3NDgyNmRhNzQyODA3ZTA1ZDNjN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ1LDEyICsy
NTQ1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUt
PmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7
CisKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkRm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkgCiAgICAgICAgICAgICAgICAgPT0gaXNW
YWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSk7CiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9w
Y29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAg
ICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBpZiAo
IWltbShyaWdodCkgfHwgbV92YWx1ZVRvVG1wW3JpZ2h0XSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7IAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2
KSkKQEAgLTI1NzEsNyArMjU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVmdC0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlSaWdodCA9IGxlZnQtPmNoaWxkKDEpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsg
YQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gU01BRERMOiBkID0gU0V4dDMyKG4pICogU0V4
dDMyKG0pICsgYQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGx5QWRkT3Bjb2Rl
ID09IE11bHRpcGx5QWRkNjQgJiYgdHJ5U0V4dDMyKG11bHRpcGx5TGVmdCkgJiYgdHJ5U0V4dDMy
KG11bHRpcGx5UmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKQEAgLTI1OTQsMTYgKzI1OTUsNTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFw
cGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAvLyBh
ZGQtYW5kLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAg
ICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6
T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bj
b2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25l
ZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRBZGRBbmRTaGlm
dCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok5vcCB8fCAhY2FuQmVJbnRlcm5hbChy
aWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8
IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAg
IHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKTsKKyAgICAgICAgICAg
ICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IDMyIDog
NjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBkYXRhc2l6ZSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwg
dG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1tKHJpZ2h0LT5jaGlsZCgxKSksIHRt
cChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
aWYgKHRyeUFwcGVuZEFkZEFuZFNoaWZ0KGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRBZGRBbmRT
aGlmdChyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwgQWRkRmxvYXQsIENvbW11dGF0
aXZlPihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIFN1YjogeworICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKKyAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOworCiAg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseVN1Yk9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTXVsdGlwbHlTdWIzMiwgTXVsdGlwbHlTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAg
ICAgICAgIGlmIChtdWx0aXBseVN1Yk9wY29kZSAhPSBBaXI6Ok9vcHMKICAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShtdWx0aXBseVN1Yk9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3Zh
bHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5j
aGlsZCgxKTsKICAgICAgICAgICAgICAgICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSog
dikgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2LT5vcGNvZGUoKSAhPSBNdWwg
fHwgIWNhbkJlSW50ZXJuYWwodikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yNjUyLDcgKzI2ODgsNDEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPFN1YjMyLCBTdWI2NCwgU3Vi
RG91YmxlLCBTdWJGbG9hdD4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsK
KyAgICAgICAgICAgIC8vIHN1Yi1hbmQtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBh
bW91bnQpCisgICAgICAgICAgICAvLyBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6T3Bj
b2RlIG9wY29kZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgLy8gICAgIHN3aXRjaCAo
b3Bjb2RlKSB7CisgICAgICAgICAgICAvLyAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAvLyAg
ICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hp
ZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgIC8vICAgICBjYXNlIFNTaHI6Cisg
ICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hp
ZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgLy8g
ICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZv
clR5cGUoU3ViVW5zaWduZWRSaWdodFNoaWZ0MzIsIFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0LCBt
X3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgLy8gICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAvLyAgICAgICAgIHJldHVybiBBaXI6Ok5vcDsKKyAgICAgICAgICAgIC8vICAgICB9CisgICAg
ICAgICAgICAvLyB9OworCisgICAgICAgICAgICAvLyBhdXRvIHRyeUFwcGVuZFN1YkFuZFNoaWZ0
ID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICAgICAgLy8gICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2RlKCkpOworICAgICAgICAgICAgLy8gICAgIGlmIChv
cGNvZGUgPT0gQWlyOjpOb3AgfHwgIWNhbkJlSW50ZXJuYWwocmlnaHQpKQorICAgICAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvLyAgICAgaWYgKCFpbW0ocmln
aHQtPmNoaWxkKDEpKSB8fCByaWdodC0+Y2hpbGQoMSktPmFzSW50KCkgPCAwKQorICAgICAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vICAgICB1aW50NjRf
dCBhbW91bnQgPSByaWdodC0+Y2hpbGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAvLyAgICAg
dWludDY0X3QgZGF0YXNpemUgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyAzMiA6IDY0Owor
ICAgICAgICAgICAgLy8gICAgIGlmIChhbW91bnQgPj0gZGF0YXNpemUpCisgICAgICAgICAgICAv
LyAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gICAgIGFwcGVuZChvcGNv
ZGUsIHRtcChsZWZ0KSwgdG1wKHJpZ2h0LT5jaGlsZCgwKSksIGltbShyaWdodC0+Y2hpbGQoMSkp
LCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgLy8gICAgIGNvbW1pdEludGVybmFsKHJpZ2h0
KTsKKyAgICAgICAgICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIC8vIH07CisK
KyAgICAgICAgICAgIC8vIGlmICh0cnlBcHBlbmRTdWJBbmRTaGlmdCgpKQorICAgICAgICAgICAg
Ly8gICAgIHJldHVybjsKKworICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBT
dWJEb3VibGUsIFN1YkZsb2F0PihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMKaW5kZXggZDQ3ZmEzZWNiMzhiMjYxNDU1ZDY5MDVhNDY5ZmY3ODRjMWZhZjk1MS4uMDVk
YzNhOWZlYzQ2OTY4NDAzMWQ4OGQ3M2VjMzdjYzA1OGJlMWY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC04NzIsNiArODcyLDQyIEBA
IGFybTY0OiBFeHRyYWN0UmVnaXN0ZXIzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMy
CiBhcm02NDogRXh0cmFjdFJlZ2lzdGVyNjQgVTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0
CiAgICAgVG1wLCBUbXAsIEltbSwgVG1wCiAKK2FybTY0OiBBZGRMZWZ0U2hpZnQzMiBVOkc6MzIs
IFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0
OiBBZGRSaWdodFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRt
cCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogQWRkVW5zaWduZWRSaWdodFNoaWZ0MzIgVTpHOjMy
LCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02
NDogQWRkTGVmdFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1w
LCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRSaWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAs
IFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YkxlZnRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlJpZ2h0
U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIElt
bSwgVG1wCisKK2FybTY0OiBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwg
VTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBTdWJMZWZ0
U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1t
LCBUbXAKKworYXJtNjQ6IFN1YlJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBE
Okc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRT
aGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0s
IFRtcAorCiAjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KICMgRklYTUU6IFRoaXMgZm9ybXVs
YXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgs
IGV2ZW4gdGhvdWdoIGFsbCB1c2VycwogIyBvZiB0aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCA3NDQ1NGEwYmI3Y2QyM2QyNjY4Mjg4Njhj
MzQ0ODRmZGM5ZmEyNWNiLi45YzU0ZmE5N2QzNjk0MjBkNjZiMWNjN2FiZTMyZmI2YWM1NjU1MjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC00NDgsNiArNDQ4LDE4IEBAIHZvaWQg
dGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCk7CiB2b2lkIHRlc3RCaXRBbmRa
ZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2NCgpOwogdm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKIHZv
aWQgdGVzdFNlbGVjdFRlc3QoKTsKK3ZvaWQgdGVzdEFkZExlZnRTaGlmdDMyKCk7Cit2b2lkIHRl
c3RBZGRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCk7
Cit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQ2NCgpOwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDY0KCk7
Cit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpOwordm9pZCB0ZXN0U3ViTGVmdFNo
aWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViVW5zaWdu
ZWRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDY0KCk7Cit2b2lkIHRlc3RT
dWJSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCk7CiB2
b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91YmxlKCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxv
YXQoZmxvYXQsIGZsb2F0KTsKIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZs
b2F0LCBmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
XzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCA4ODA0
NWYxNWRjZWE0ZjAyZDFkMTFiOTJhMDIzYjRmYjdlMDFiNjBlLi5mODFjZTBlMmFlOTU3NTNlYTA4
OTFjM2VhMjJkNzVmMzAwNWVjMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5j
cHAKQEAgLTQxMTksNiArNDExOSw0MjYgQEAgdm9pZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQog
ICAgIH0KIH0KIAordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQz
Ml90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gKyAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMy
X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAg
ICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
ICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwor
ICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91
bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9r
ZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFu
ZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7
CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tf
RVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQzMigpCit7Cisg
ICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVz
dCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGlu
dDMyX3QgbiwgaW50MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVl
KiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4o
KSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0
VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAg
ICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZv
ciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91
bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFs
dWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFVuc2ln
bmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAs
IDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkK
KyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IG4sIHVpbnQzMl90IG0sIHVpbnQzMl90IGFt
b3VudCkgLT4gdWludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSog
YW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAg
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpj
b2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICB1aW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMy
X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3Qobiwg
bSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiArIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50
NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFs
dWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAg
ICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGws
IE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1
ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9Owor
CisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChh
dXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA8PCBh
bW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0
QWRkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQor
ICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50
KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFt
b3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52
b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVy
YW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0
NjQoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisK
KyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVz
dCA9IFsmXSAodWludDY0X3QgbiwgdWludDY0X3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50
NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1
ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBh
dXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50
NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBp
bnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVy
YW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEo
dGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCkKK3sKKyAgICBW
ZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBh
dHRlcm46IGQgPSBuIC0gKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJf
dCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNo
aWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG1W
YWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVl
KSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJl
dHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1
dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVy
YW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDog
YW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOwor
ICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtIDw8IGFtb3VudCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0
MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKwor
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0
ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAg
ICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1No
ciwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07
CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVl
OworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+
IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91
bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+
PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBuLCB1aW50MzJfdCBtLCB1
aW50MzJfdCBhbW91bnQpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFs
dWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAg
VmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAg
ICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPHVp
bnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6
IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
USh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0NjQoKQoreworICAg
IFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3Qg
UGF0dGVybjogZCA9IG4gLSAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2
NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBW
YWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50
KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7
CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRf
dCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJh
bmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBu
IC0gKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3Vu
dHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+
IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQz
Ml90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBu
VmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBz
aGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwg
bVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFs
dWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAg
cmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9w
ZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVk
UmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAg
ICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IG4sIHVpbnQ2NF90IG0sIHVpbnQzMl90IGFtb3Vu
dCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwg
YW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBp
bnZva2U8dWludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5P
cGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3Vu
dHMpIHsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAg
ICAgICAgICAgICAgdWludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRS
aWdodEFyZ0ltbU1hc2szMigpCiB7CiAgICAgLy8gVHVybiB0aGlzOiAodG1wID4+IGltbSkgJiBt
YXNrIApAQCAtNTAyNyw2ICs1NDQ3LDE4IEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciog
ZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJV
Tih0ZXN0SW5zZXJ0U2lnbmVkQml0ZmllbGRJblplcm82NCgpKTsKICAgICBSVU4odGVzdEV4dHJh
Y3RTaWduZWRCaXRmaWVsZDMyKCkpOwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxk
NjQoKSk7CisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFJp
Z2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkpOwor
ICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRSaWdodFNoaWZ0
NjQoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4o
dGVzdFN1YkxlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlmdDMyKCkpOwor
ICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJM
ZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4o
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1No
aWZ0UmlnaHRBcmdJbW1NYXNrMzIoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdo
dEFyZ0ltbU1hc2s2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433016</attachid>
            <date>2021-07-06 23:13:17 -0700</date>
            <delta_ts>2021-07-07 14:17:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210707011315.patch</filename>
            <type>text/plain</type>
            <size>43830</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi4xYjA1MjExYzUyODU0NDli
ODNjYTNlNTAxNzEzOTI4NzVlYzBkZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAg
ICAgICAgIGFkZC9zdWIgUmQsIFJuLCBSbSwgU2hpZnRUeXBlLCBhbW91bnQKKworICAgICAgICBB
REQvU1VCIChzaGlmdGVkIHJlZ2lzdGVyKSwgYWRkcy9zdWJzIGEgcmVnaXN0ZXIgdmFsdWUgUm4g
YW5kIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciAKKyAgICAgICAgdmFsdWUgUm0sIGFu
ZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgUmQuIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciAKKyAgICAgICAgY2FuIHV0aWxpemUgdGhpcyB0byBsb3dlcmlu
ZyBjZXJ0YWluIHBhdHRlcm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRp
b24uIAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gd291bGQgYmU6CisKKyAgICAg
ICAgICAgIGQgPSBuICsvLSAobSBTaGlmdFR5cGUgYW1vdW50KQorCisgICAgICAgIEdpdmVuIEIz
IElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9
IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gYW1vdW50CisgICAgICAgIEludCBA
MyA9IFpTaHIoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQvU3ViKEAwLCBAMykKKyAgICAg
ICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBPbGQgb3B0aW1p
emVkIEFJUgorICAgICAgICBTaGlmdCAgICV4MSwgYW1vdW50LCAleDEsIEAzCisgICAgICAgIEFk
ZC9TdWIgJXgwLCAgICAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAg
ICAgICBANQorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEFkZChTdWIp
U2hpZnQgJXgwLCAleDEsIGFtb3VudCwgJXgwLCBANAorICAgICAgICBSZXQgICAgICAgICAgICV4
MCwgICAgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZExlZnRT
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkVW5zaWduZWRSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hp
ZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRT
aGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViTGVmdFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0
NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RBZGRSaWdodFNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjp0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlND
Ojp0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAg
KEpTQzo6dGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFN1YlJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgIChKU0M6OnRlc3RTdWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJSaWdo
dFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgICh0ZXN0QWRkUmln
aHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgICh0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFJpZ2h0U2hpZnQ2NCk6
CisgICAgICAgICh0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAodGVzdFN1
YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJSaWdodFNoaWZ0MzIpOgorICAgICAgICAo
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJMZWZ0U2hpZnQ2
NCk6CisgICAgICAgICh0ZXN0U3ViUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDctMDYg
IFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBl
IGVycm9yIGluIHRlc3RiMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBhNmE0ZWRmODk3NTA3NWQ1OTk0MTc0OGRh
ZjkwMzQ5ZDY3ZGIxYzljLi5kNTVmYzUwYWRkODZlNjA2ZjdkMWFmNDUzMWM3YmFjY2M0Yzk1YmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtNTQ5LDYgKzU0OSw4NCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmV4dHI8NjQ+KGQsIG4sIG0sIGxzYi5tX3ZhbHVlKTsKICAgICB9IAogCisgICAgdm9p
ZCBhZGRMZWZ0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gQVJNNjRS
ZWdpc3RlcnM6OnNwIHx8IG0gIT0gQVJNNjRSZWdpc3RlcnM6OnNwKTsKKyAgICAgICAgaWYgKG0g
PT0gQVJNNjRSZWdpc3RlcnM6OnNwKQorICAgICAgICAgICAgc3RkOjpzd2FwKG4sIG0pOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQu
bV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBu
LCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVn
aXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAg
ICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBu
LCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQg
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0
ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuICE9
IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAg
IGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkKKyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBt
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwg
YW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkTGVmdFNoaWZ0NjQoUmVnaXN0
ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChuICE9IEFSTTY0UmVnaXN0ZXJzOjpzcCB8fCBtICE9IEFS
TTY0UmVnaXN0ZXJzOjpzcCk7CisgICAgICAgIGlmIChtID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkK
KyAgICAgICAgICAgIHN0ZDo6c3dhcChuLCBtKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBB
Uk02NFJlZ2lzdGVyczo6c3AgfHwgbSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBp
ZiAobSA9PSBBUk02NFJlZ2lzdGVyczo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFt
b3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0
KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3Rl
cklEIGQpCisgICAgeworICAgICAgICBBU1NFUlQobiAhPSBBUk02NFJlZ2lzdGVyczo6c3AgfHwg
bSAhPSBBUk02NFJlZ2lzdGVyczo6c3ApOworICAgICAgICBpZiAobSA9PSBBUk02NFJlZ2lzdGVy
czo6c3ApCisgICAgICAgICAgICBzdGQ6OnN3YXAobiwgbSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YkxlZnRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWJSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklE
IG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQg
biwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBh
bW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJMZWZ0U2hpZnQ2NChSZWdpc3Rl
cklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxT
TCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViUmlnaHRTaGlmdDY0KFJl
Z2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklE
IGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxl
cjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJVbnNpZ25lZFJp
Z2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3Vu
dCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBu
LCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQg
Y2xlYXJCaXQ2NChSZWdpc3RlcklEIGJpdFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0
ZXJJRCBzY3JhdGNoRm9yTWFzayA9IEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBpZiAo
c2NyYXRjaEZvck1hc2sgPT0gSW52YWxpZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggMGE4YmQ4ZWVjMDk3ZjZlNDRhNmQyMDc5Njdl
MThhNzJmMjc4YzY0Yy4uYTNlMWY5MzY4NjgxOGVmMTZjN2RlZjc3YjJiMWRlZTY3OGJiMWU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTE2
NDAsNiArMTY0MCwzMTggQEAgdm9pZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQogICAgICAgICB9
CiAgICAgfQogfQorCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxo
cyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJf
dCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMs
IHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFk
ZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUmlnaHRTaGlmdDMy
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oYWRk
MzIsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDMyX3QgcmhzID0gbiArIChtID4+IGFtb3Vu
dCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigp
Cit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gaW52b2tlPHVpbnQzMl90PihhZGQzMiwg
biwgbSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG4pICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtKSA+PiBhbW91bnQpOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90
PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LmFkZExlZnRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBp
bnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0X3Qgcmhz
ID0gbiArIChtIDw8IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRSaWdo
dFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMg
fTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFJpZ2h0U2hpZnQ2NChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KGFkZDY0LCBu
LCBtKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKQorewor
ICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChh
dXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5hZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9IGludm9rZTx1aW50NjRfdD4oYWRkNjQsIG4sIG0p
OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihu
KSArIChzdGF0aWNfY2FzdDx1aW50NjRfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAg
ICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIz
MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5z
dWJMZWZ0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRG
dW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tl
PGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4g
LSAobSA8PCBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07Cisg
ICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0g
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91
bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShq
aXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJSaWdodFNoaWZ0MzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihzdWIzMiwgbiwgbSk7
CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuIC0gKG0gPj4gYW1vdW50KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBW
ZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBu
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAg
ICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91
bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICB1aW50MzJfdCBsaHMgPSBpbnZva2U8dWludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgLSAo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMg
PSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVm
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2
NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0g
PDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgp
Cit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZv
ciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1v
dW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oc3ViNjQsIG4sIG0pOworICAg
ICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9y
PHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAg
ICAgdWludDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAg
ICAgICAgICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pIC0gKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgog
CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMzgzMiw2ICs0
MTQ0LDE5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQoKSk7
CiAgICAgUlVOKHRlc3RFeHRyYWN0UmVnaXN0ZXIzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RS
ZWdpc3RlcjY0KCkpOworCisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4o
dGVzdEFkZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRS
aWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVO
KHRlc3RTdWJMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOwogI2VuZGlmCiAKICNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDA5NjU4NDA0ZjQ4MzE0ZTQxNzU5MTM4M2ExY2Nh
NTc4OGJlY2U2ZGMuLjRmM2FhY2IwNmMwNTQ5ZTgzMDU0NmEyYTQwY2Y3MjY1MGRmOWUxZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ1LDEyICsy
NTQ1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUt
PmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7
CisKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkRm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRt
cCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkgCiAgICAgICAgICAgICAgICAgPT0gaXNW
YWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSk7CiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92
YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9w
Y29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAg
ICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBpZiAo
IWltbShyaWdodCkgfHwgbV92YWx1ZVRvVG1wW3JpZ2h0XSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7IAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2
KSkKQEAgLTI1NzEsNyArMjU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVmdC0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlSaWdodCA9IGxlZnQtPmNoaWxkKDEpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsg
YQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gU01BRERMOiBkID0gU0V4dDMyKG4pICogU0V4
dDMyKG0pICsgYQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGx5QWRkT3Bjb2Rl
ID09IE11bHRpcGx5QWRkNjQgJiYgdHJ5U0V4dDMyKG11bHRpcGx5TGVmdCkgJiYgdHJ5U0V4dDMy
KG11bHRpcGx5UmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11
bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKQEAgLTI1OTQsMTYgKzI1OTUsNTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFw
cGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAvLyBh
ZGQtYW5kLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAg
ICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6
T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bj
b2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25l
ZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRBZGRBbmRTaGlm
dCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6Oklt
bSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwocmlnaHQpIHx8ICFpbW0ocmln
aHQtPmNoaWxkKDEpKSB8fCByaWdodC0+Y2hpbGQoMSktPmFzSW50KCkgPCAwKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBhbW91
bnQgPSByaWdodC0+Y2hpbGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAgICAgdWludDY0X3Qg
ZGF0YXNpemUgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyAzMiA6IDY0OworICAgICAgICAg
ICAgICAgIGlmIChhbW91bnQgPj0gZGF0YXNpemUpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChsZWZ0KSwgdG1w
KHJpZ2h0LT5jaGlsZCgwKSksIGltbShyaWdodC0+Y2hpbGQoMSkpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRB
ZGRBbmRTaGlmdChsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kQWRkQW5kU2hpZnQocmlnaHQsIGxl
ZnQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXBwZW5kQmluT3A8
QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmln
aHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTdWI6
IHsKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAg
ICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKKwogICAgICAgICAgICAgQWly
OjpPcGNvZGUgbXVsdGlwbHlTdWJPcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE11bHRpcGx5U3Vi
MzIsIE11bHRpcGx5U3ViNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICBpZiAobXVs
dGlwbHlTdWJPcGNvZGUgIT0gQWlyOjpPb3BzCiAgICAgICAgICAgICAgICAgJiYgaXNWYWxpZEZv
cm0obXVsdGlwbHlTdWJPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6
VG1wKSkgewotICAgICAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7
Ci0gICAgICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAgICAg
ICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewog
ICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVy
bmFsKHYpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY1Miw3
ICsyNjg4LDQxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3ViNjQsIFN1YkRvdWJsZSwgU3ViRmxv
YXQ+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAv
LyBzdWItYW5kLXNoaWZ0IFBhdHRlcm46IG4gLSAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAg
ICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFp
cjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9y
VHlwZShTdWJMZWZ0U2hpZnQzMiwgU3ViTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5
T3Bjb2RlRm9yVHlwZShTdWJSaWdodFNoaWZ0MzIsIFN1YlJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRTdWJBbmRT
aGlmdCA9IFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSB0cnlPcGNvZGUocmlnaHQtPm9wY29kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlz
VmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OkltbSwgQXJnOjpUbXAp
KSAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlm
ICghY2FuQmVJbnRlcm5hbChyaWdodCkgfHwgIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0
LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+
YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBk
YXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1t
KHJpZ2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFN1YkFuZFNoaWZ0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3ViNjQs
IFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcwppbmRleCBkNDdmYTNlY2IzOGIyNjE0NTVkNjkwNWE0NjlmZjc4NGMxZmFmOTUxLi4w
NWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDczZWMzN2NjMDU4YmUxZjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg3Miw2ICs4NzIsNDIg
QEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3RlcjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXI2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6
NjQKICAgICBUbXAsIFRtcCwgSW1tLCBUbXAKIAorYXJtNjQ6IEFkZExlZnRTaGlmdDMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJt
NjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2Fy
bTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBU
bXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFVu
c2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRt
cCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViTGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViUmln
aHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwg
SW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1Ykxl
ZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJ
bW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQs
IEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIElt
bSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3Jt
dWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVh
eCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDc0NDU0YTBiYjdjZDIzZDI2NjgyODg2
OGMzNDQ4NGZkYzlmYTI1Y2IuLjljNTRmYTk3ZDM2OTQyMGQ2NmIxY2M3YWJlMzJmYjZhYzU2NTUy
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTQ0OCw2ICs0NDgsMTggQEAgdm9p
ZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKTsKIHZvaWQgdGVzdEJpdEFu
ZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCk7CiB2b2lkIHRlc3RCYXNpY1NlbGVjdCgpOwog
dm9pZCB0ZXN0U2VsZWN0VGVzdCgpOwordm9pZCB0ZXN0QWRkTGVmdFNoaWZ0MzIoKTsKK3ZvaWQg
dGVzdEFkZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIo
KTsKK3ZvaWQgdGVzdEFkZExlZnRTaGlmdDY0KCk7Cit2b2lkIHRlc3RBZGRSaWdodFNoaWZ0NjQo
KTsKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCk7Cit2b2lkIHRlc3RTdWJMZWZ0
U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDMyKCk7Cit2b2lkIHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0NjQoKTsKK3ZvaWQgdGVz
dFN1YlJpZ2h0U2hpZnQ2NCgpOwordm9pZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoKTsK
IHZvaWQgdGVzdFNlbGVjdENvbXBhcmVEb3VibGUoKTsKIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVG
bG9hdChmbG9hdCwgZmxvYXQpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGUo
ZmxvYXQsIGZsb2F0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDg4
MDQ1ZjE1ZGNlYTRmMDJkMWQxMWI5MmEwMjNiNGZiN2UwMWI2MGUuLmY4MWNlMGUyYWU5NTc1M2Vh
MDg5MWMzZWEyMmQ3NWYzMDA1ZWMwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18y
LmNwcApAQCAtNDExOSw2ICs0MTE5LDQyNiBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0ZXI2NCgp
CiAgICAgfQogfQogCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiArIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50
MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFt
b3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52
b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVy
YW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDMyKCkKK3sK
KyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBU
ZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAo
aW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFs
dWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdp
bigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hp
ZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAg
Zm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0
byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFt
b3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52
YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA+PiBhbW91bnQp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5z
aWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsg
MCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50
KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDMyX3QgbiwgdWludDMyX3QgbSwgdWludDMyX3Qg
YW1vdW50KSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBt
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVl
KiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50MzJfdD4o
KmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChu
LCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZExlZnRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8
aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46
IGQgPSBuICsgKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBp
bnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAg
ICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNo
bCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07
CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVl
OworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8
IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RBZGRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAw
LCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQp
CisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91
bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwg
YW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBp
bnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9w
ZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDog
aW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50
cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAg
ICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENI
RUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsK
KworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0
ZXN0ID0gWyZdICh1aW50NjRfdCBuLCB1aW50NjRfdCBtLCB1aW50MzJfdCBhbW91bnQpIC0+IHVp
bnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAg
ICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPHVp
bnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgdWludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
USh0ZXN0KG4sIG0sIGFtb3VudCksIG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViTGVmdFNoaWZ0MzIoKQoreworICAg
IFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3Qg
UGF0dGVybjogZCA9IG4gLSAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQz
Ml90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSog
c2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwg
bVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFs
dWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAg
cmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9w
ZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPDwgYW1vdW50KSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hp
ZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9Owor
CisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRl
c3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJf
dCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisg
ICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
U2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBu
VmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAg
fTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0g
bk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFs
dWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0g
Pj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFt
b3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtICht
ID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IG4sIHVpbnQzMl90IG0s
IHVpbnQzMl90IGFtb3VudCkgLT4gdWludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAg
ICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAg
ICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50
VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8
dWludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5k
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsK
KyAgICAgICAgICAgICAgICB1aW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgdWludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNL
X0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpCit7Cisg
ICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVz
dCBQYXR0ZXJuOiBkID0gbiAtIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGlu
dDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91
bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3Jp
Z2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBt
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7
CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2
NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCks
IG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0g
Pj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGlu
dDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUq
IHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigp
LCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRW
YWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAg
ICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9y
IChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBt
T3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3Vu
dCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1
ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViVW5zaWdu
ZWRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQor
ICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDY0X3QgbiwgdWludDY0X3QgbSwgdWludDMyX3QgYW1v
dW50KSAtPiB1aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVl
LCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJu
IGludm9rZTx1aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8g
bk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5k
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAg
ICAgICAgICAgICAgICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAg
ICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlm
dFJpZ2h0QXJnSW1tTWFzazMyKCkKIHsKICAgICAvLyBUdXJuIHRoaXM6ICh0bXAgPj4gaW1tKSAm
IG1hc2sgCkBAIC01MDI3LDYgKzU0NDcsMTggQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFy
KiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAg
UlVOKHRlc3RJbnNlcnRTaWduZWRCaXRmaWVsZEluWmVybzY0KCkpOwogICAgIFJVTih0ZXN0RXh0
cmFjdFNpZ25lZEJpdGZpZWxkMzIoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0Zmll
bGQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRk
UmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7
CisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0U2hp
ZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJV
Tih0ZXN0U3ViTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJSaWdodFNoaWZ0MzIoKSk7
CisgICAgUlVOKHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1
YkxlZnRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlmdDY0KCkpOworICAgIFJV
Tih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJv
U2hpZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJp
Z2h0QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433077</attachid>
            <date>2021-07-07 14:18:18 -0700</date>
            <delta_ts>2021-07-07 21:52:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210707161815.patch</filename>
            <type>text/plain</type>
            <size>43008</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi4xYjA1MjExYzUyODU0NDli
ODNjYTNlNTAxNzEzOTI4NzVlYzBkZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoZSBvcGVyYXRpb246CisKKyAgICAg
ICAgICAgIGFkZC9zdWIgUmQsIFJuLCBSbSwgU2hpZnRUeXBlLCBhbW91bnQKKworICAgICAgICBB
REQvU1VCIChzaGlmdGVkIHJlZ2lzdGVyKSwgYWRkcy9zdWJzIGEgcmVnaXN0ZXIgdmFsdWUgUm4g
YW5kIGFuIG9wdGlvbmFsbHktc2hpZnRlZCByZWdpc3RlciAKKyAgICAgICAgdmFsdWUgUm0sIGFu
ZCB3cml0ZXMgdGhlIHJlc3VsdCB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgUmQuIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciAKKyAgICAgICAgY2FuIHV0aWxpemUgdGhpcyB0byBsb3dlcmlu
ZyBjZXJ0YWluIHBhdHRlcm5zIGluIEIzIElSIGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRp
b24uIAorCisgICAgICAgIFRoZSBlcXVpdmFsZW50IHBhdHRlcm4gd291bGQgYmU6CisKKyAgICAg
ICAgICAgIGQgPSBuICsvLSAobSBTaGlmdFR5cGUgYW1vdW50KQorCisgICAgICAgIEdpdmVuIEIz
IElSOgorICAgICAgICBJbnQgQDAgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMSA9
IEFyZ3VtZW50UmVnKCV4MSkKKyAgICAgICAgSW50IEAyID0gYW1vdW50CisgICAgICAgIEludCBA
MyA9IFpTaHIoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQvU3ViKEAwLCBAMykKKyAgICAg
ICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBPbGQgb3B0aW1p
emVkIEFJUgorICAgICAgICBTaGlmdCAgICV4MSwgYW1vdW50LCAleDEsIEAzCisgICAgICAgIEFk
ZC9TdWIgJXgwLCAgICAleDEsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAg
ICAgICBANQorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIEFkZChTdWIp
U2hpZnQgJXgwLCAleDEsIGFtb3VudCwgJXgwLCBANAorICAgICAgICBSZXQgICAgICAgICAgICV4
MCwgICAgICAgICAgICAgICAgICAgQDUKKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZExlZnRT
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkVW5zaWduZWRSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hp
ZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRT
aGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViTGVmdFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJVbnNpZ25lZFJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0
NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RBZGRSaWdodFNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjp0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlND
Ojp0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAg
KEpTQzo6dGVzdFN1YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFN1YlJpZ2h0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgIChKU0M6OnRlc3RTdWJMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJSaWdo
dFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RBZGRMZWZ0U2hpZnQzMik6CisgICAgICAgICh0ZXN0QWRkUmln
aHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgICh0ZXN0QWRkTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFJpZ2h0U2hpZnQ2NCk6
CisgICAgICAgICh0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAodGVzdFN1
YkxlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJSaWdodFNoaWZ0MzIpOgorICAgICAgICAo
dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJMZWZ0U2hpZnQ2
NCk6CisgICAgICAgICh0ZXN0U3ViUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDctMDYg
IFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBl
IGVycm9yIGluIHRlc3RiMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBhNmE0ZWRmODk3NTA3NWQ1OTk0MTc0OGRh
ZjkwMzQ5ZDY3ZGIxYzljLi5kZjY1Y2I2MzYxZjRhYjA1YTA1NTBlMzBlMzRhODU3NzlhZWRhZjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtNTQ5LDYgKzU0OSw2NiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmV4dHI8NjQ+KGQsIG4sIG0sIGxzYi5tX3ZhbHVlKTsKICAgICB9IAogCisgICAgdm9p
ZCBhZGRMZWZ0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMy
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQor
CisgICAgdm9pZCBhZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVy
SUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFs
dWUpOworICAgIH0KKworICAgIHZvaWQgYWRkTGVmdFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdp
c3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU0wsIGFtb3VudC5t
X3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4s
IFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1v
dW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkVW5zaWduZWRSaWdodFNoaWZ0NjQo
UmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVy
SUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1i
bGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YkxlZnRTaGlm
dDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdp
c3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGQsIG4sIG0sIEFz
c2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJSaWdo
dFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQs
IFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwg
bSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1
YlVuc2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVk
SW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQor
CisgICAgdm9pZCBzdWJMZWZ0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1
c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3ViPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAg
IH0KKworICAgIHZvaWQgc3ViUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBt
LCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6QVNSLCBhbW91bnQubV92YWx1ZSk7
CisgICAgfQorCisgICAgdm9pZCBzdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4s
IFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1v
dW50Lm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQgY2xlYXJCaXQ2NChSZWdpc3RlcklEIGJp
dFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoRm9yTWFzayA9IElu
dmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBpZiAoc2NyYXRjaEZvck1hc2sgPT0gSW52YWxp
ZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVz
dG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
aW5kZXggMGE4YmQ4ZWVjMDk3ZjZlNDRhNmQyMDc5NjdlMThhNzJmMjc4YzY0Yy4uYTNlMWY5MzY4
NjgxOGVmMTZjN2RlZjc3YjJiMWRlZTY3OGJiMWU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTE2NDAsNiArMTY0MCwzMTggQEAgdm9pZCB0
ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQogICAgICAgICB9CiAgICAgfQogfQorCit2b2lkIHRlc3RB
ZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIo
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1
ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihhZGQz
MiwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuICsgKG0gPDwgYW1vdW50
KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQzMigpCit7CisgICAg
VmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBu
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAg
ICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICBqaXQuYWRkUmlnaHRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAg
aW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oYWRkMzIsIG4sIG0pOworICAgICAgICAgICAg
ICAgIGludDMyX3QgcmhzID0gbiArIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPHVpbnQzMl90
PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAg
ICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAg
aml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWludDMy
X3QgbGhzID0gaW52b2tlPHVpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG4pICsgKHN0YXRpY19jYXN0PHVp
bnQzMl90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkTGVm
dFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMg
fTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZExlZnRTaGlmdDY0KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4s
IG0pOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiArIChtIDw8IGFtb3VudCk7Cisg
ICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3Rv
cjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaml0LmFkZFJpZ2h0U2hpZnQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAg
ICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAg
IGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDY0
X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KGFkZDY0LCBuLCBtKTsKKyAgICAgICAgICAgICAgICBp
bnQ2NF90IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBhZGQ2
NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5y
ZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxo
cyA9IGludm9rZTx1aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIHVpbnQ2
NF90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihuKSArIChzdGF0aWNfY2FzdDx1aW50NjRf
dD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlm
dDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07Cisg
ICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0g
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91
bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShq
aXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJMZWZ0U2hpZnQzMihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tlPGludDMyX3Q+KHN1YjMyLCBuLCBtKTsK
KyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4gLSAobSA8PCBhbW91bnQpOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50
MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAg
YXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAg
ICAgIGppdC5zdWJSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxo
cyA9IGludm9rZTxpbnQzMl90PihzdWIzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJf
dCByaHMgPSBuIC0gKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMs
IHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1
YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMg
PSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViMzIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViVW5z
aWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBsaHMgPSBp
bnZva2U8dWludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBy
aHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgLSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG0p
ID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgp
Cit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZv
ciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVmdFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91
bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAg
ICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0gPDwgYW1vdW50KTsKKyAgICAgICAgICAg
ICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+
IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5k
cygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8g
c3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBq
aXQuc3ViUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBp
bnZva2U8aW50NjRfdD4oc3ViNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0X3Qgcmhz
ID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAw
LCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRv
IGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjY0ID0gY29tcGls
ZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YlVuc2lnbmVk
UmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAg
ICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAg
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgbGhzID0gaW52b2tl
PHVpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgcmhzID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pIC0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtKSA+PiBh
bW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMzgzMiw2ICs0MTQ0LDE5IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogICAgIFJV
Tih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0UmVn
aXN0ZXIzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RSZWdpc3RlcjY0KCkpOworCisgICAgUlVO
KHRlc3RBZGRMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0U2hpZnQzMigpKTsK
KyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRk
TGVmdFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVO
KHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YkxlZnRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3Vi
VW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJMZWZ0U2hpZnQ2NCgpKTsK
KyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YlVuc2lnbmVk
UmlnaHRTaGlmdDY0KCkpOwogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmlu
ZGV4IDA5NjU4NDA0ZjQ4MzE0ZTQxNzU5MTM4M2ExY2NhNTc4OGJlY2U2ZGMuLjRmM2FhY2IwNmMw
NTQ5ZTgzMDU0NmEyYTQwY2Y3MjY1MGRmOWUxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ1LDEyICsyNTQ1LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisg
ICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAg
VmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKICAgICAgICAgICAgIEFTU0VSVChp
c1ZhbGlkRm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCkgCiAgICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWdu
RXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7CiAgICAg
ICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUo
TXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAgICAg
ICAgIGlmIChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBt
X3ZhbHVlLT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVl
LT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltbShyaWdodCkgfHwgbV92YWx1ZVRv
VG1wW3JpZ2h0XSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU11bHRpcGx5ID0gWyZd
IChWYWx1ZSogdikgLT4gYm9vbCB7IAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYtPm9w
Y29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKQEAgLTI1NzEsNyArMjU3Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0g
bGVmdC0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlS
aWdodCA9IGxlZnQtPmNoaWxkKDEpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFE
REw6IGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gU01BRERMOiBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG11bHRpcGx5QWRkT3Bjb2RlID09IE11bHRpcGx5QWRkNjQgJiYgdHJ5
U0V4dDMyKG11bHRpcGx5TGVmdCkgJiYgdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQo
MCkpLCAKQEAgLTI1OTQsMTYgKzI1OTUsNTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwg
QWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3Zh
bHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAvLyBhZGQtYW5kLXNoaWZ0IFBhdHRlcm46IG4g
KyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0g
KEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2hsOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVm
dFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0
MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBj
YXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFk
ZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAg
ICAgICAgICAgYXV0byB0cnlBcHBlbmRBZGRBbmRTaGlmdCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZh
bHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gdHJ5T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFpc1Zh
bGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkg
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAo
IWNhbkJlSW50ZXJuYWwocmlnaHQpIHx8ICFpbW0ocmlnaHQtPmNoaWxkKDEpKSB8fCByaWdodC0+
Y2hpbGQoMSktPmFzSW50KCkgPCAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBhbW91bnQgPSByaWdodC0+Y2hpbGQoMSktPmFz
SW50KCk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBtX3ZhbHVlLT50eXBl
KCkgPT0gSW50MzIgPyAzMiA6IDY0OworICAgICAgICAgICAgICAgIGlmIChhbW91bnQgPj0gZGF0
YXNpemUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
ICAgIGFwcGVuZChvcGNvZGUsIHRtcChsZWZ0KSwgdG1wKHJpZ2h0LT5jaGlsZCgwKSksIGltbShy
aWdodC0+Y2hpbGQoMSkpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdElu
dGVybmFsKHJpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRBZGRBbmRTaGlmdChsZWZ0LCByaWdodCkg
fHwgdHJ5QXBwZW5kQWRkQW5kU2hpZnQocmlnaHQsIGxlZnQpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUs
IEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTdWI6IHsKKyAgICAgICAgICAgIFZhbHVlKiBs
ZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3Zh
bHVlLT5jaGlsZCgxKTsKKwogICAgICAgICAgICAgQWlyOjpPcGNvZGUgbXVsdGlwbHlTdWJPcGNv
ZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE11bHRpcGx5U3ViMzIsIE11bHRpcGx5U3ViNjQsIG1fdmFs
dWUtPnR5cGUoKSk7CiAgICAgICAgICAgICBpZiAobXVsdGlwbHlTdWJPcGNvZGUgIT0gQWlyOjpP
b3BzCiAgICAgICAgICAgICAgICAgJiYgaXNWYWxpZEZvcm0obXVsdGlwbHlTdWJPcGNvZGUsIEFy
Zzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewotICAgICAgICAgICAgICAg
IFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7Ci0gICAgICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0
aXBseSA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAgICBpZiAo
di0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY1Miw3ICsyNjg4LDQxIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRCaW5P
cDxTdWIzMiwgU3ViNjQsIFN1YkRvdWJsZSwgU3ViRmxvYXQ+KG1fdmFsdWUtPmNoaWxkKDApLCBt
X3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAvLyBzdWItYW5kLXNoaWZ0IFBhdHRlcm46
IG4gLSAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBb
Jl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2hsOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShTdWJMZWZ0U2hpZnQzMiwgU3Vi
TGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgY2FzZSBTU2hy
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShTdWJSaWdodFNo
aWZ0MzIsIFN1YlJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBl
KFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1
ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRTdWJBbmRTaGlmdCA9IFsmXSAoKSAtPiBib29sIHsK
KyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGUocmlnaHQtPm9w
Y29kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpU
bXAsIEFyZzo6SW1tLCBBcmc6OkltbSwgQXJnOjpUbXApKSAKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChyaWdodCkg
fHwgIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDAp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIHVp
bnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7
CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBkYXRhc2l6ZSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1w
KGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1tKHJpZ2h0LT5jaGlsZCgxKSksIHRtcCht
X3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYg
KHRyeUFwcGVuZFN1YkFuZFNoaWZ0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3ViNjQsIFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxl
ZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBkNDdmYTNlY2Iz
OGIyNjE0NTVkNjkwNWE0NjlmZjc4NGMxZmFmOTUxLi4wNWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDcz
ZWMzN2NjMDU4YmUxZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3Bjb2RlLm9wY29kZXMKQEAgLTg3Miw2ICs4NzIsNDIgQEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3Rl
cjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0
ZXI2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKICAgICBUbXAsIFRtcCwgSW1tLCBU
bXAKIAorYXJtNjQ6IEFkZExlZnRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2Fy
bTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6
NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJt
NjQ6IEFkZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBU
bXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2
NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02
NDogU3ViTGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRt
cCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBU
bXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YkxlZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0
LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViUmln
aHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJ
bW0sIFRtcAorCithcm02NDogU3ViVW5zaWduZWRSaWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKICMgVGhlIGZpcnN0IG9w
ZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBi
b29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJz
CiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5oCmluZGV4IDc0NDU0YTBiYjdjZDIzZDI2NjgyODg2OGMzNDQ4NGZkYzlmYTI1Y2IuLjljNTRm
YTk3ZDM2OTQyMGQ2NmIxY2M3YWJlMzJmYjZhYzU2NTUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmgKQEAgLTQ0OCw2ICs0NDgsMTggQEAgdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0Umln
aHRBcmdJbW1NYXNrMzIoKTsKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFz
azY0KCk7CiB2b2lkIHRlc3RCYXNpY1NlbGVjdCgpOwogdm9pZCB0ZXN0U2VsZWN0VGVzdCgpOwor
dm9pZCB0ZXN0QWRkTGVmdFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQzMigpOwor
dm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZExlZnRTaGlm
dDY0KCk7Cit2b2lkIHRlc3RBZGRSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdEFkZFVuc2lnbmVk
UmlnaHRTaGlmdDY0KCk7Cit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQzMigpOwordm9pZCB0ZXN0U3Vi
UmlnaHRTaGlmdDMyKCk7Cit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMigpOwordm9p
ZCB0ZXN0U3ViTGVmdFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQ2NCgpOwordm9p
ZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoKTsKIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVE
b3VibGUoKTsKIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdChmbG9hdCwgZmxvYXQpOwogdm9p
ZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGUoZmxvYXQsIGZsb2F0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDg4MDQ1ZjE1ZGNlYTRmMDJkMWQxMWI5MmEw
MjNiNGZiN2UwMWI2MGUuLmY4MWNlMGUyYWU5NTc1M2VhMDg5MWMzZWEyMmQ3NWYzMDA1ZWMwNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtNDExOSw2ICs0MTE5LDQy
NiBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0ZXI2NCgpCiAgICAgfQogfQogCit2b2lkIHRlc3RB
ZGRMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3
LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtIDw8IGFtb3VudCkKKyAg
ICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtLCBpbnQzMl90IGFtb3VudCkg
LT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91
bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBt
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCks
IG4gKyAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0g
Pj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0sIGlu
dDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFs
dWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAg
VmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVl
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMy
X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50
MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAg
ICAgICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBp
bnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0
KG4sIG0sIGFtb3VudCksIG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoKQorewor
ICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBU
ZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAo
dWludDMyX3QgbiwgdWludDMyX3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50MzJfdCB7Cisg
ICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAg
IFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBP
cmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUs
IHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisK
KyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IG4gPSBuT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4g
YW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVz
dEFkZExlZnRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPDwgYW1vdW50KQor
ICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50
KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1v
dW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZv
a2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJh
bmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAg
ICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNL
X0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8IGFtb3VudCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRSaWdodFNoaWZ0NjQoKQorewor
ICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKworICAgIC8vIFRl
c3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChp
bnQ2NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1v
dW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4s
IG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGlu
dDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbSA9IG1P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50
KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVp
bnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjog
ZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50NjRfdCBuLCB1
aW50NjRfdCBtLCB1aW50MzJfdCBhbW91bnQpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisK
KyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQ2NF90PigqY29kZSwgbiwgbSk7Cisg
ICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAg
ICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgdWludDY0X3Qg
biA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG0gPSBtT3BlcmFu
ZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4g
KyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCB0ZXN0U3ViTGVmdFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRz
ID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA8PCBh
bW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJf
dCBhbW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSog
bVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1
ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90Pigq
Y29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAg
ICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50MzJf
dCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBt
LCBhbW91bnQpLCBuIC0gKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50
MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBh
bW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKwor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGlu
dm9rZTxpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3Bl
cmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRz
KSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgaW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlm
dDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9Owor
CisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRl
c3QgPSBbJl0gKHVpbnQzMl90IG4sIHVpbnQzMl90IG0sIHVpbnQzMl90IGFtb3VudCkgLT4gdWlu
dDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsK
KworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDMyX3Q+KCpjb2RlLCBuLCBtKTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJf
dCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbSA9IG1PcGVy
YW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwg
biAtIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3Vu
dHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtIDw8
IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQz
Ml90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBu
VmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBz
aGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBt
VmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1
ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBy
ZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChh
dXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3Bl
cmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsK
KyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAg
ICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA8PCBhbW91bnQpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlm
dDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisK
KyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVz
dCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFs
dWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+
KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMo
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2
NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4s
IG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoKQoreworICAg
IFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0
IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWlu
dDY0X3QgbiwgdWludDY0X3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50NjRfdCB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91
bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIs
IE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50NjRfdD4oKmNvZGUs
IG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IHVpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBt
ID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBh
bW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIHZvaWQgdGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCkKIHsK
ICAgICAvLyBUdXJuIHRoaXM6ICh0bXAgPj4gaW1tKSAmIG1hc2sgCkBAIC01MDI3LDYgKzU0NDcs
MTggQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxT
aGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOKHRlc3RJbnNlcnRTaWduZWRCaXRm
aWVsZEluWmVybzY0KCkpOwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkMzIoKSk7
CiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0ZmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdEFk
ZExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkUmlnaHRTaGlmdDMyKCkpOworICAgIFJV
Tih0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRMZWZ0U2hp
ZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFk
ZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViTGVmdFNoaWZ0MzIoKSk7
CisgICAgUlVOKHRlc3RTdWJSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJVbnNpZ25l
ZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YkxlZnRTaGlmdDY0KCkpOworICAgIFJV
Tih0ZXN0U3ViUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNo
aWZ0NjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigp
KTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCkpOwogICAg
IFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433118</attachid>
            <date>2021-07-07 21:52:51 -0700</date>
            <delta_ts>2021-07-08 12:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210707235242.patch</filename>
            <type>text/plain</type>
            <size>47362</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi42ZDVmMDY4MTYwNzIzMzUw
ZTg2ZmY4MTAzMDhmMDBkNTM2Y2JjMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAyMS0wNy0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdHdvIG1vZGlm
aWNhdGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYWRkL3N1Yi13aXRoLXNoaWZ0IHRvIEFpciBv
cGNvZGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHBhdHRlcm4gbWF0Y2ggZm9yIAorICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLgorICAgICAgICAgICAgMi4gTWlub3IgZml4IGlu
IGRpc2Fzc2VtYmxlci4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAg
ICAgICBhZGQvc3ViIFJkLCBSbiwgUm0sIFNoaWZ0VHlwZSwgYW1vdW50CisKKyAgICAgICAgQURE
L1NVQiAoc2hpZnRlZCByZWdpc3RlciksIGFkZHMvc3VicyBhIHJlZ2lzdGVyIHZhbHVlIFJuIGFu
ZCBhbiBvcHRpb25hbGx5LXNoaWZ0ZWQgcmVnaXN0ZXIgCisgICAgICAgIHZhbHVlIFJtLCBhbmQg
d3JpdGVzIHRoZSByZXN1bHQgdG8gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiBUaGUgaW5z
dHJ1Y3Rpb24gc2VsZWN0b3IgCisgICAgICAgIGNhbiB1dGlsaXplIHRoaXMgdG8gbG93ZXJpbmcg
Y2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0aW1pemF0aW9u
LiAKKworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAg
ICAgICBkID0gbiArLy0gKG0gU2hpZnRUeXBlIGFtb3VudCkKKworICAgICAgICBHaXZlbiBCMyBJ
UjoKKyAgICAgICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBB
cmd1bWVudFJlZygleDEpCisgICAgICAgIEludCBAMiA9IGFtb3VudAorICAgICAgICBJbnQgQDMg
PSBaU2hyKEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQWRkL1N1YihAMCwgQDMpCisgICAgICAg
IFZvaWRANSA9IFJldHVybihANCwgVGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgU2hpZnQgICAleDEsIGFtb3VudCwgJXgxLCBAMworICAgICAgICBBZGQv
U3ViICV4MCwgICAgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAgICAgJXgwLCAgICAgICAgICAg
ICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBBZGQoU3ViKVNo
aWZ0ICV4MCwgJXgxLCBhbW91bnQsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAgICAgICAleDAs
ICAgICAgICAgICAgICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRT
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkTGVmdFNoaWZ0
NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRSaWdodFNoaWZ0NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJMZWZ0U2hpZnQ2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlJpZ2h0U2hpZnQ2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0
QWRkV2l0aExlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhSaWdodFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAg
ICAgICAgKEpTQzo6dGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RB
ZGRXaXRoUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhVbnNpZ25lZFJp
Z2h0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIpOgorICAg
ICAgICAoSlNDOjp0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RT
dWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViV2l0aExl
ZnRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdFN1YldpdGhSaWdodFNoaWZ0NjQpOgorICAg
ICAgICAoSlNDOjp0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKiBi
My9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoK
KyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAg
ICAgICh0ZXN0QWRkV2l0aExlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRXaXRoUmlnaHRT
aGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAg
ICAgICAodGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkV2l0aFJpZ2h0
U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAg
ICAgICAgKHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIpOgorICAgICAgICAodGVzdFN1YldpdGhSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAodGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMik6Cisg
ICAgICAgICh0ZXN0U3ViV2l0aExlZnRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoUmln
aHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAoYWRkQml0VGVzdHMpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRE
T3Bjb2RlLmNwcDoKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgor
ICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUFkZFN1YnRyYWN0U2hp
ZnRlZFJlZ2lzdGVyOjppbW1lZGlhdGU2KToKKwogMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5
aWppYV9odWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHR5cGUgZXJyb3IgaW4gdGVzdGIz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCmluZGV4IGE2YTRlZGY4OTc1MDc1ZDU5OTQxNzQ4ZGFmOTAzNDlkNjdkYjFjOWMu
LmRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBA
IC01NDksNiArNTQ5LDY2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZXh0cjw2ND4o
ZCwgbiwgbSwgbHNiLm1fdmFsdWUpOwogICAgIH0gCiAKKyAgICB2b2lkIGFkZExlZnRTaGlmdDMy
KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3Rl
cklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2Vt
Ymxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNo
aWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJl
Z2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZCwgbiwgbSwg
QXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVu
c2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1t
MzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8
MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCBhZGRMZWZ0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3Rl
ZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0K
KworICAgIHZvaWQgYWRkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQ8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6QVNSLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBhZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJl
Z2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50
Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViTGVmdFNoaWZ0MzIoUmVnaXN0ZXJJRCBu
LCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU0wsIGFt
b3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlJpZ2h0U2hpZnQzMihSZWdpc3Rl
cklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkFT
UiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViVW5zaWduZWRSaWdodFNo
aWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJl
Z2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwg
QXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1Ykxl
ZnRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50
LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4s
IG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBz
dWJSaWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBh
bW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yjw2ND4o
ZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVhciwgUmVnaXN0
ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQUlJlZykKICAg
ICB7CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BSUmVnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAwYThiZDhlZWMw
OTdmNmU0NGE2ZDIwNzk2N2UxOGE3MmYyNzhjNjRjLi5lODIxNTM2MmU1ZWZlNWVjODE3YzAzY2I1
NDhlMGVjNTBjYjcxNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcApAQCAtMTY0MCw2ICsxNjQwLDMxOCBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0
ZXI2NCgpCiAgICAgICAgIH0KICAgICB9CiB9CisKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQz
MigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAg
IGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDog
aW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50
cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
bW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
ICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7Cisg
ICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAg
ICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjxp
bnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmFkZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGpp
dC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3Qg
bGhzID0gaW52b2tlPGludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxo
cywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0
QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFt
b3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRk
MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBs
aHMgPSBpbnZva2U8dWludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgKyAoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoTGVm
dFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMg
fTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZExlZnRTaGlmdDY0KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4s
IG0pOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiArIChtIDw8IGFtb3VudCk7Cisg
ICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBW
ZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4g
OiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAg
ICAgICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewor
ICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAg
ICAgICAgICAgICAgIGppdC5hZGRSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAg
ICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBp
bnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAg
ICAgaW50NjRfdCByaHMgPSBuICsgKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgdGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQz
Ml90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisg
ICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWlu
dDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAg
ICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pICsgKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywg
cmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3Vi
V2l0aExlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBh
bW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUo
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJMZWZ0U2hpZnQz
MihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tlPGludDMyX3Q+KHN1
YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4gLSAobSA8PCBhbW91
bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpCit7
CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAo
YXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgewor
ICAgICAgICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKwor
ICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUmlnaHRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50
KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAg
ICAgICAgICAgIGludDMyX3QgcmhzID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAg
ICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rv
cjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdC5zdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxocyA9IGludm9rZTx1aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSAtIChzdGF0
aWNfY2FzdDx1aW50MzJfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
UShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdFN1YldpdGhMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMg
PSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVm
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2
NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0g
PDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhSaWdodFNoaWZ0
NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAg
ICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3Vu
dHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVs
cGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YlJpZ2h0U2hpZnQ2NChHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KHN1YjY0LCBuLCBtKTsK
KyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gLSAobSA+PiBhbW91bnQpOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAg
ICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0
byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVy
YW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAg
ICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAg
ICAgICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
bW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
ICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICB1aW50NjRfdCBsaHMgPSBpbnZva2U8dWludDY0X3Q+KHN1YjY0LCBuLCBtKTsK
KyAgICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obikg
LSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQog
I2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBAIC0z
ODMyLDYgKzQxNDQsMTkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JF
U19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0Zmll
bGQ2NCgpKTsKICAgICBSVU4odGVzdEV4dHJhY3RSZWdpc3RlcjMyKCkpOwogICAgIFJVTih0ZXN0
RXh0cmFjdFJlZ2lzdGVyNjQoKSk7CisKKyAgICBSVU4odGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigp
KTsKKyAgICBSVU4odGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRX
aXRoVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoTGVmdFNoaWZ0
NjQoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0
QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViV2l0aExlZnRT
aGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4o
dGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YldpdGhM
ZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhSaWdodFNoaWZ0NjQoKSk7CisgICAg
UlVOKHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQ
VShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMDk2NTg0MDRmNDgzMTRlNDE3NTkxMzgzYTFjY2E1
Nzg4YmVjZTZkYy4uNTJiYTI5Y2QzZDY3ZDg3OTJjZDA1OTc4MTQ3ZDVmMzBmMmM4MWQ2YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI1NDUsMTIgKzI1
NDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+
Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsK
KwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRGb3JtKE11bHRpcGx5QWRkNjQsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSAKICAgICAgICAgICAgICAgICA9PSBpc1Zh
bGlkRm9ybShNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKTsKICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5QWRkT3Bj
b2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0LCBtX3Zh
bHVlLT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5QWRkT3Bj
b2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAgICAg
ICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwotICAgICAgICAgICAgICAg
IFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAgICAgICAgICAgICAgIGlmICgh
aW1tKHJpZ2h0KSB8fCBtX3ZhbHVlVG9UbXBbcmlnaHRdKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYp
KQpAQCAtMjU3MSw3ICsyNTcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiBtdWx0aXBseUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbGVmdC0+Y2hpbGQoMSk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFNNQURETDogZCA9IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBh
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiBTRXh0
MzIobSkgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbHlBZGRPcGNvZGUg
PT0gTXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSAmJiB0cnlTRXh0MzIo
bXVsdGlwbHlSaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTXVs
dGlwbHlBZGRTaWduRXh0ZW5kMzIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIApAQCAtMjU5NCwxNiArMjU5NSw1MSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBw
ZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4o
bV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIC8vIGFk
ZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAg
ICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6
T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bj
b2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25l
ZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpPb3BzOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkQW5kU2hp
ZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2RlKCkpOwor
ICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpU
bXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKHJpZ2h0KSB8fCAhaW1tKHJp
Z2h0LT5jaGlsZCgxKSkgfHwgcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpIDwgMCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgYW1v
dW50ID0gcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGRhdGFzaXplID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gMzIgOiA2NDsKKyAgICAgICAg
ICAgICAgICBpZiAoYW1vdW50ID49IGRhdGFzaXplKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAobGVmdCksIHRt
cChyaWdodC0+Y2hpbGQoMCkpLCBpbW0ocmlnaHQtPmNoaWxkKDEpKSwgdG1wKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5k
QWRkQW5kU2hpZnQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZEFuZFNoaWZ0KHJpZ2h0LCBs
ZWZ0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGFwcGVuZEJpbk9w
PEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3Vi
OiB7CisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAg
ICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKICAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG11bHRpcGx5U3ViT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1
YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKG11
bHRpcGx5U3ViT3Bjb2RlICE9IEFpcjo6T29wcwogICAgICAgICAgICAgICAgICYmIGlzVmFsaWRG
b3JtKG11bHRpcGx5U3ViT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCkpIHsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAg
ICAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRl
cm5hbCh2KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NTIs
NyArMjY4OCw0MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGUsIFN1YkZs
b2F0PihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAg
Ly8gc3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCisgICAg
ICAgICAgICBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4g
QWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVG
b3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
KyAgICAgICAgICAgICAgICBjYXNlIFNTaHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hpZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBtX3ZhbHVl
LT50eXBlKCkpOworICAgICAgICAgICAgICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViVW5zaWduZWRSaWdodFNoaWZ0MzIsIFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRTdWJB
bmRTaGlmdCA9IFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUgPSB0cnlPcGNvZGUocmlnaHQtPm9wY29kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpU
bXApKSAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IGlmICghY2FuQmVJbnRlcm5hbChyaWdodCkgfHwgIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJp
Z2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgx
KS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUt
PnR5cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+
PSBkYXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwg
aW1tKHJpZ2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29t
bWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFN1YkFuZFNoaWZ0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3Vi
NjQsIFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcwppbmRleCBkNDdmYTNlY2IzOGIyNjE0NTVkNjkwNWE0NjlmZjc4NGMxZmFmOTUx
Li4wNWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDczZWMzN2NjMDU4YmUxZjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg3Miw2ICs4NzIs
NDIgQEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3RlcjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXI2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBE
Okc6NjQKICAgICBUbXAsIFRtcCwgSW1tLCBUbXAKIAorYXJtNjQ6IEFkZExlZnRTaGlmdDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKwor
YXJtNjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisg
ICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMiBV
Okc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisK
K2FybTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAg
ICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6
Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFk
ZFVuc2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAg
IFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViTGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3Vi
UmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRt
cCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1
YkxlZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1w
LCBJbW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6
NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViVW5zaWduZWRS
aWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAs
IEltbSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBm
b3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGlu
IGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0
aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDc0NDU0YTBiYjdjZDIzZDI2Njgy
ODg2OGMzNDQ4NGZkYzlmYTI1Y2IuLmQxNThjNWVjOGRhMzgxNzJlZmVkNmIxNDE0OGZkZTVjMDdi
YWQwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTQ0OCw2ICs0NDgsMTggQEAg
dm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrMzIoKTsKIHZvaWQgdGVzdEJp
dEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazY0KCk7CiB2b2lkIHRlc3RCYXNpY1NlbGVjdCgp
Owogdm9pZCB0ZXN0U2VsZWN0VGVzdCgpOwordm9pZCB0ZXN0QWRkV2l0aExlZnRTaGlmdDMyKCk7
Cit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDMyKCk7Cit2b2lkIHRlc3RBZGRXaXRoVW5zaWdu
ZWRSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCgpOwordm9pZCB0
ZXN0QWRkV2l0aFJpZ2h0U2hpZnQ2NCgpOwordm9pZCB0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRT
aGlmdDY0KCk7Cit2b2lkIHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1Yldp
dGhSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigp
Owordm9pZCB0ZXN0U3ViV2l0aExlZnRTaGlmdDY0KCk7Cit2b2lkIHRlc3RTdWJXaXRoUmlnaHRT
aGlmdDY0KCk7Cit2b2lkIHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQoKTsKIHZvaWQg
dGVzdFNlbGVjdENvbXBhcmVEb3VibGUoKTsKIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdChm
bG9hdCwgZmxvYXQpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGUoZmxvYXQs
IGZsb2F0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDg4MDQ1ZjE1
ZGNlYTRmMDJkMWQxMWI5MmEwMjNiNGZiN2UwMWI2MGUuLjg5ZTJiYWVjZjVmY2I4NzI5YThjZjkz
NzJmMmZiMzhhN2NmZjIxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApA
QCAtNDExOSw2ICs0MTE5LDQ3NCBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0ZXI2NCgpCiAgICAg
fQogfQogCit2b2lkIHRlc3RBZGRXaXRoTGVmdFNoaWZ0MzIoKQoreworICAgIGlmIChKU0M6Ok9w
dGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgVmVj
dG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0
ZXJuOiBkID0gbiArIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3Qg
biwgaW50MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlm
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFs
dWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAo
aXNBUk02NCgpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHRvQ1N0
cmluZygiYWRkICAgICAgdzAsIHcwLCB3MSwgbHNsICMiLCBhbW91bnQpLmRhdGEoKSk7CisgICAg
ICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBm
b3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
IG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZh
bHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8IGFtb3VudCkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRo
UmlnaHRTaGlmdDMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZl
bCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0g
eyAxLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91
bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBh
bW91bnQpIC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSog
YW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAg
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgdG9DU3RyaW5nKCJhZGQgICAgICB3MCwgdzAs
IHcxLCBhc3IgIyIsIGFtb3VudCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQz
Ml90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAg
ICAgICAgICAgICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAg
aW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVz
dChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigp
Cit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAg
ICAgIHJldHVybjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9
OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRv
IHRlc3QgPSBbJl0gKHVpbnQzMl90IG4sIHVpbnQzMl90IG0sIHVpbnQzMl90IGFtb3VudCkgLT4g
dWludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50
KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgdG9DU3RyaW5nKCJhZGQgICAgICB3MCwgdzAsIHcxLCBsc3Ig
IyIsIGFtb3VudCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50MzJfdD4oKmNv
ZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50MzJf
dCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBt
LCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCgpCit7CisgICAgaWYgKEpT
Qzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAg
ICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0
IFBhdHRlcm46IGQgPSBuICsgKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50
NjRfdCBuLCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
VmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3Vu
dCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNobCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgdG9DU3RyaW5nKCJhZGQgICAgICB4MCwgeDAsIHgxLCBsc2wg
IyIsIGFtb3VudCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29k
ZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAg
ICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBt
ID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBh
bW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0NjQoKQoreworICAgIGlmIChKU0M6
Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAg
VmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQ
YXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0
X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQp
OworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdp
bigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCB0b0NTdHJpbmcoImFkZCAgICAgIHgwLCB4MCwgeDEsIGFzciAj
IiwgYW1vdW50KS5kYXRhKCkpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5k
cygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAg
ICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0g
PSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFt
b3VudCksIG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBp
ZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJu
OworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAxLCAzNCwgNjMgfTsKKworICAgIC8v
IFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZd
ICh1aW50NjRfdCBuLCB1aW50NjRfdCBtLCB1aW50MzJfdCBhbW91bnQpIC0+IHVpbnQ2NF90IHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUq
IGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHRvQ1N0cmluZygiYWRkICAgICAgeDAsIHgw
LCB4MSwgbHNyICMiLCBhbW91bnQpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBpbnZva2U8dWlu
dDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDog
aW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3Bl
cmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAg
ICAgICAgICAgICAgICB1aW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAg
ICAgdWludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIoKQorewor
ICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICBy
ZXR1cm47CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAxLCAxNywgMzEgfTsKKwor
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0
ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAg
ICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hs
LCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFs
dWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCB0b0NTdHJpbmcoInN1YiAgICAgIHcwLCB3MCwgdzEsIGxzbCAjIiwgYW1vdW50
KS5kYXRhKCkpOworICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90
IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFu
ZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4g
LSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6
ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50
MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBh
bW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKwor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJN
NjQoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCB0b0NTdHJpbmco
InN1YiAgICAgIHcwLCB3MCwgdzEsIGFzciAjIiwgYW1vdW50KS5kYXRhKCkpOworICAgICAgICBy
ZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChh
dXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3Bl
cmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsK
KyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAg
ICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFVuc2ln
bmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50
cyA9IHsgMSwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4g
YW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDMyX3QgbiwgdWludDMyX3QgbSwgdWlu
dDMyX3QgYW1vdW50KSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVl
KiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZh
bHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAg
IFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1
ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBh
dXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCB0b0NTdHJpbmcoInN1YiAgICAg
IHcwLCB3MCwgdzEsIGxzciAjIiwgYW1vdW50KS5kYXRhKCkpOworICAgICAgICByZXR1cm4gaW52
b2tlPHVpbnQzMl90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3Bl
cmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRz
KSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAg
ICAgICAgICAgIHVpbnQzMl90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBD
SEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aExlZnRTaGlmdDY0
KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAg
ICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAxLCAzNCwgNjMg
fTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA8PCBhbW91bnQpCisgICAgYXV0
byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGlu
dDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1
ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBh
dXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCB0b0NTdHJpbmcoInN1YiAgICAg
IHgwLCB4MCwgeDEsIGxzbCAjIiwgYW1vdW50KS5kYXRhKCkpOworICAgICAgICByZXR1cm4gaW52
b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVy
YW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQ2NCgp
Cit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAg
ICAgIHJldHVybjsKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMzQsIDYzIH07
CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8g
dGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2
NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
VmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVl
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKQorICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHRvQ1N0cmluZygic3ViICAgICAg
eDAsIHgwLCB4MSwgYXNyICMiLCBhbW91bnQpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBpbnZv
a2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJh
bmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50
NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAg
ICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNL
X0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNo
aWZ0NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAy
KQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDM0
LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAg
ICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IG4sIHVpbnQ2NF90IG0sIHVpbnQzMl90IGFtb3Vu
dCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwg
YW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgdG9DU3RyaW5n
KCJzdWIgICAgICB4MCwgeDAsIHgxLCBsc3IgIyIsIGFtb3VudCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIGludm9rZTx1aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3Ig
KGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1P
cGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50
IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1
ZTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEJpdEFuZFpl
cm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMyKCkKIHsKICAgICAvLyBUdXJuIHRoaXM6ICh0bXAgPj4g
aW1tKSAmIG1hc2sgCkBAIC01MDI3LDYgKzU0OTUsMTggQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25z
dCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3Mp
CiAgICAgUlVOKHRlc3RJbnNlcnRTaWduZWRCaXRmaWVsZEluWmVybzY0KCkpOwogICAgIFJVTih0
ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkMzIoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVk
Qml0ZmllbGQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigpKTsKKyAgICBS
VU4odGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoVW5zaWdu
ZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoTGVmdFNoaWZ0NjQoKSk7Cisg
ICAgUlVOKHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0QWRkV2l0aFVu
c2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViV2l0aExlZnRTaGlmdDMyKCkp
OworICAgIFJVTih0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1Yldp
dGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YldpdGhMZWZ0U2hpZnQ2
NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RT
dWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hp
ZnRSaWdodEFyZ0ltbU1hc2szMigpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0
QXJnSW1tTWFzazY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNv
ZGUuY3BwCmluZGV4IGRmZTA5YjY3MTQ3MGRjYmE0YmViNWRiODEzMDFhNzIwMzZkYjM1ZWQuLjhk
NGQxMjk1MTVkNjFjODRmOTdhOWJiYTNlZDM0OGUyYjZmM2I4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlOjpzX29wdGlvbk5h
bWVbOF0gPSB7CiB9OwogCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlOjpzX3NoaWZ0TmFt
ZXNbNF0gPSB7Ci0gICAgImxzbCIsICJsc3IiLCAiYXNsIiwgInJvciIKKyAgICAibHNsIiwgImxz
ciIsICJhc3IiLCAicm9yIgogfTsKIAogY29uc3QgY2hhciBBNjRET3Bjb2RlOjpzX0ZQUmVnaXN0
ZXJQcmVmaXhbNV0gPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNz
ZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCmluZGV4IGRkN2EwYmNiZDRiMTE5NjNlODAwOTc1ZTEx
NDU3OGQ2YWM2NzNmOTEuLjY5NWE1MWEzYTQzMWNlYjJkMWM5OGNhOWI3MjE5NGVmNDVjOWI3NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0
RE9wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNOZWco
KSB7IHJldHVybiAob3AoKSAmJiBybigpID09IDMxKTsgfQogICAgIGNvbnN0IGNoYXIqIG5lZ05h
bWUoKSB7IHJldHVybiBzQml0KCkgPyAibmVncyIgOiAibmVnIjsgfQogICAgIHVuc2lnbmVkIHNo
aWZ0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIyKSAmIDB4MzsgfQotICAgIGludCBpbW1lZGlh
dGU2KCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PGludD4oKG1fb3Bjb2RlID4+IDEwKSAmIDB4M2Yp
IDw8IDI2KSA+PiAyNjsgfQorICAgIGludCBpbW1lZGlhdGU2KCkgeyByZXR1cm4gKHN0YXRpY19j
YXN0PHVpbnQzMl90PigobV9vcGNvZGUgPj4gMTApICYgMHgzZikgPDwgMjYpID4+IDI2OyB9CiB9
OwogCiBjbGFzcyBBNjRET3Bjb2RlQml0ZmllbGQgOiBwdWJsaWMgQTY0RE9wY29kZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433154</attachid>
            <date>2021-07-08 12:21:29 -0700</date>
            <delta_ts>2021-07-08 13:59:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210708142128.patch</filename>
            <type>text/plain</type>
            <size>49877</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi42ZDVmMDY4MTYwNzIzMzUw
ZTg2ZmY4MTAzMDhmMDBkNTM2Y2JjMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAyMS0wNy0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdHdvIG1vZGlm
aWNhdGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYWRkL3N1Yi13aXRoLXNoaWZ0IHRvIEFpciBv
cGNvZGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHBhdHRlcm4gbWF0Y2ggZm9yIAorICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLgorICAgICAgICAgICAgMi4gTWlub3IgZml4IGlu
IGRpc2Fzc2VtYmxlci4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAg
ICAgICBhZGQvc3ViIFJkLCBSbiwgUm0sIFNoaWZ0VHlwZSwgYW1vdW50CisKKyAgICAgICAgQURE
L1NVQiAoc2hpZnRlZCByZWdpc3RlciksIGFkZHMvc3VicyBhIHJlZ2lzdGVyIHZhbHVlIFJuIGFu
ZCBhbiBvcHRpb25hbGx5LXNoaWZ0ZWQgcmVnaXN0ZXIgCisgICAgICAgIHZhbHVlIFJtLCBhbmQg
d3JpdGVzIHRoZSByZXN1bHQgdG8gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiBUaGUgaW5z
dHJ1Y3Rpb24gc2VsZWN0b3IgCisgICAgICAgIGNhbiB1dGlsaXplIHRoaXMgdG8gbG93ZXJpbmcg
Y2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0aW1pemF0aW9u
LiAKKworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAg
ICAgICBkID0gbiArLy0gKG0gU2hpZnRUeXBlIGFtb3VudCkKKworICAgICAgICBHaXZlbiBCMyBJ
UjoKKyAgICAgICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBB
cmd1bWVudFJlZygleDEpCisgICAgICAgIEludCBAMiA9IGFtb3VudAorICAgICAgICBJbnQgQDMg
PSBaU2hyKEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQWRkL1N1YihAMCwgQDMpCisgICAgICAg
IFZvaWRANSA9IFJldHVybihANCwgVGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgU2hpZnQgICAleDEsIGFtb3VudCwgJXgxLCBAMworICAgICAgICBBZGQv
U3ViICV4MCwgICAgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAgICAgJXgwLCAgICAgICAgICAg
ICAgQDUKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBBZGQoU3ViKVNo
aWZ0ICV4MCwgJXgxLCBhbW91bnQsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAgICAgICAleDAs
ICAgICAgICAgICAgICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRT
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkTGVmdFNoaWZ0
NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRSaWdodFNoaWZ0NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJMZWZ0U2hpZnQ2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlJpZ2h0U2hpZnQ2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0
QWRkV2l0aExlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhSaWdodFNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAg
ICAgICAgKEpTQzo6dGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RB
ZGRXaXRoUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhVbnNpZ25lZFJp
Z2h0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIpOgorICAg
ICAgICAoSlNDOjp0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RT
dWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViV2l0aExl
ZnRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdFN1YldpdGhSaWdodFNoaWZ0NjQpOgorICAg
ICAgICAoSlNDOjp0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKiBi
My9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoK
KyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAg
ICAgICh0ZXN0QWRkV2l0aExlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRXaXRoUmlnaHRT
aGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAg
ICAgICAodGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkV2l0aFJpZ2h0
U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAg
ICAgICAgKHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIpOgorICAgICAgICAodGVzdFN1YldpdGhSaWdo
dFNoaWZ0MzIpOgorICAgICAgICAodGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMik6Cisg
ICAgICAgICh0ZXN0U3ViV2l0aExlZnRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoUmln
aHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAoYWRkQml0VGVzdHMpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRE
T3Bjb2RlLmNwcDoKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgor
ICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUFkZFN1YnRyYWN0U2hp
ZnRlZFJlZ2lzdGVyOjppbW1lZGlhdGU2KToKKwogMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5
aWppYV9odWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHR5cGUgZXJyb3IgaW4gdGVzdGIz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCmluZGV4IGE2YTRlZGY4OTc1MDc1ZDU5OTQxNzQ4ZGFmOTAzNDlkNjdkYjFjOWMu
LmRmNjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBA
IC01NDksNiArNTQ5LDY2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZXh0cjw2ND4o
ZCwgbiwgbSwgbHNiLm1fdmFsdWUpOwogICAgIH0gCiAKKyAgICB2b2lkIGFkZExlZnRTaGlmdDMy
KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3Rl
cklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2Vt
Ymxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNo
aWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJl
Z2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZCwgbiwgbSwg
QXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVu
c2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1t
MzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8
MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCBhZGRMZWZ0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3Rl
ZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0K
KworICAgIHZvaWQgYWRkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQ8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6QVNSLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBhZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJl
Z2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50
Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViTGVmdFNoaWZ0MzIoUmVnaXN0ZXJJRCBu
LCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU0wsIGFt
b3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlJpZ2h0U2hpZnQzMihSZWdpc3Rl
cklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkFT
UiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViVW5zaWduZWRSaWdodFNo
aWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJl
Z2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwg
QXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1Ykxl
ZnRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50
LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4s
IG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBz
dWJSaWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBh
bW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yjw2ND4o
ZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBU
cnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVhciwgUmVnaXN0
ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQUlJlZykKICAg
ICB7CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BSUmVnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAwYThiZDhlZWMw
OTdmNmU0NGE2ZDIwNzk2N2UxOGE3MmYyNzhjNjRjLi5lODIxNTM2MmU1ZWZlNWVjODE3YzAzY2I1
NDhlMGVjNTBjYjcxNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcApAQCAtMTY0MCw2ICsxNjQwLDMxOCBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0
ZXI2NCgpCiAgICAgICAgIH0KICAgICB9CiB9CisKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQz
MigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAg
IGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDog
aW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50
cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
bW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
ICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7Cisg
ICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAg
ICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjxp
bnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmFkZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGpp
dC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3Qg
bGhzID0gaW52b2tlPGludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxo
cywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0
QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFt
b3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRk
MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBs
aHMgPSBpbnZva2U8dWludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgKyAoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoTGVm
dFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMg
fTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZExlZnRTaGlmdDY0KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4s
IG0pOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiArIChtIDw8IGFtb3VudCk7Cisg
ICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBW
ZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4g
OiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAg
ICAgICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewor
ICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAg
ICAgICAgICAgICAgIGppdC5hZGRSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAg
ICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBp
bnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAg
ICAgaW50NjRfdCByaHMgPSBuICsgKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgdGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQz
Ml90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisg
ICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWlu
dDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAg
ICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pICsgKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywg
cmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3Vi
V2l0aExlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwg
MTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBh
bW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUo
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJMZWZ0U2hpZnQz
MihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tlPGludDMyX3Q+KHN1
YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4gLSAobSA8PCBhbW91
bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpCit7
CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAo
YXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgewor
ICAgICAgICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKwor
ICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUmlnaHRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50
KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAg
ICAgICAgICAgIGludDMyX3QgcmhzID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAg
ICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rv
cjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdC5zdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxocyA9IGludm9rZTx1aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSAtIChzdGF0
aWNfY2FzdDx1aW50MzJfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
UShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdFN1YldpdGhMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMg
PSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVm
dFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2
NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0g
PDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhSaWdodFNoaWZ0
NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAg
ICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3Vu
dHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVs
cGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YlJpZ2h0U2hpZnQ2NChHUFJJbmZvOjph
cmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KHN1YjY0LCBuLCBtKTsK
KyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gLSAobSA+PiBhbW91bnQpOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAg
ICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0
byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVy
YW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAg
ICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAg
ICAgICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
bW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
ICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICB1aW50NjRfdCBsaHMgPSBpbnZva2U8dWludDY0X3Q+KHN1YjY0LCBuLCBtKTsK
KyAgICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obikg
LSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQog
I2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBAIC0z
ODMyLDYgKzQxNDQsMTkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JF
U19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0Zmll
bGQ2NCgpKTsKICAgICBSVU4odGVzdEV4dHJhY3RSZWdpc3RlcjMyKCkpOwogICAgIFJVTih0ZXN0
RXh0cmFjdFJlZ2lzdGVyNjQoKSk7CisKKyAgICBSVU4odGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigp
KTsKKyAgICBSVU4odGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRX
aXRoVW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoTGVmdFNoaWZ0
NjQoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0
QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViV2l0aExlZnRT
aGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4o
dGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YldpdGhM
ZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhSaWdodFNoaWZ0NjQoKSk7CisgICAg
UlVOKHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQ
VShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMDk2NTg0MDRmNDgzMTRlNDE3NTkxMzgzYTFjY2E1
Nzg4YmVjZTZkYy4uNTJiYTI5Y2QzZDY3ZDg3OTJjZDA1OTc4MTQ3ZDVmMzBmMmM4MWQ2YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI1NDUsMTIgKzI1
NDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+
Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsK
KwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRGb3JtKE11bHRpcGx5QWRkNjQsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSAKICAgICAgICAgICAgICAgICA9PSBpc1Zh
bGlkRm9ybShNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKTsKICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5QWRkT3Bj
b2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0LCBtX3Zh
bHVlLT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5QWRkT3Bj
b2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAgICAg
ICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwotICAgICAgICAgICAgICAg
IFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAgICAgICAgICAgICAgIGlmICgh
aW1tKHJpZ2h0KSB8fCBtX3ZhbHVlVG9UbXBbcmlnaHRdKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYp
KQpAQCAtMjU3MSw3ICsyNTcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiBtdWx0aXBseUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbGVmdC0+Y2hpbGQoMSk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFNNQURETDogZCA9IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBh
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiBTRXh0
MzIobSkgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbHlBZGRPcGNvZGUg
PT0gTXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSAmJiB0cnlTRXh0MzIo
bXVsdGlwbHlSaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTXVs
dGlwbHlBZGRTaWduRXh0ZW5kMzIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIApAQCAtMjU5NCwxNiArMjU5NSw1MSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBw
ZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4o
bV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIC8vIGFk
ZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAg
ICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6
T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlw
ZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bj
b2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25l
ZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpPb3BzOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkQW5kU2hp
ZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2RlKCkpOwor
ICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpU
bXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKHJpZ2h0KSB8fCAhaW1tKHJp
Z2h0LT5jaGlsZCgxKSkgfHwgcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpIDwgMCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgYW1v
dW50ID0gcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGRhdGFzaXplID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gMzIgOiA2NDsKKyAgICAgICAg
ICAgICAgICBpZiAoYW1vdW50ID49IGRhdGFzaXplKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAobGVmdCksIHRt
cChyaWdodC0+Y2hpbGQoMCkpLCBpbW0ocmlnaHQtPmNoaWxkKDEpKSwgdG1wKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5k
QWRkQW5kU2hpZnQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZEFuZFNoaWZ0KHJpZ2h0LCBs
ZWZ0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGFwcGVuZEJpbk9w
PEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3Vi
OiB7CisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAg
ICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKICAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG11bHRpcGx5U3ViT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1
YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKG11
bHRpcGx5U3ViT3Bjb2RlICE9IEFpcjo6T29wcwogICAgICAgICAgICAgICAgICYmIGlzVmFsaWRG
b3JtKG11bHRpcGx5U3ViT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCkpIHsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDAp
OwotICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAg
ICAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRl
cm5hbCh2KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NTIs
NyArMjY4OCw0MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGUsIFN1YkZs
b2F0PihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAg
Ly8gc3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCisgICAg
ICAgICAgICBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4g
QWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVG
b3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
KyAgICAgICAgICAgICAgICBjYXNlIFNTaHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnlPcGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hpZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBtX3ZhbHVl
LT50eXBlKCkpOworICAgICAgICAgICAgICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViVW5zaWduZWRSaWdodFNoaWZ0MzIsIFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRTdWJB
bmRTaGlmdCA9IFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUgPSB0cnlPcGNvZGUocmlnaHQtPm9wY29kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpU
bXApKSAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IGlmICghY2FuQmVJbnRlcm5hbChyaWdodCkgfHwgIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJp
Z2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgx
KS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUt
PnR5cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+
PSBkYXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwg
aW1tKHJpZ2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29t
bWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFN1YkFuZFNoaWZ0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3Vi
NjQsIFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcwppbmRleCBkNDdmYTNlY2IzOGIyNjE0NTVkNjkwNWE0NjlmZjc4NGMxZmFmOTUx
Li4wNWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDczZWMzN2NjMDU4YmUxZjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg3Miw2ICs4NzIs
NDIgQEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3RlcjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXI2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBE
Okc6NjQKICAgICBUbXAsIFRtcCwgSW1tLCBUbXAKIAorYXJtNjQ6IEFkZExlZnRTaGlmdDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKwor
YXJtNjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisg
ICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMiBV
Okc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisK
K2FybTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAg
ICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6
Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFk
ZFVuc2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAg
IFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViTGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3Vi
UmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRt
cCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1
YkxlZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1w
LCBJbW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6
NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViVW5zaWduZWRS
aWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAs
IEltbSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBm
b3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGlu
IGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0
aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDc0NDU0YTBiYjdjZDIzZDI2Njgy
ODg2OGMzNDQ4NGZkYzlmYTI1Y2IuLjljN2QyOTk4ZTJhODkwZjVlZGU3MGViNmI5ZTBmOTkxOTQ3
ZmExMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTcxLDYgKzcxLDcgQEAKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUHVyZU5hTi5oIgogI2luY2x1ZGUgPGNt
YXRoPgorI2luY2x1ZGUgPHJlZ2V4PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYv
RmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgpAQCAtMjQ0LDExICsyNDUsMTMg
QEAgdm9pZCBjaGVja0Rpc2Fzc2VtYmx5KENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgY29uc3Qg
RnVuYyYgZnVuYywgY29uc3QgQ1N0cmluZyYKICAgICBDUkFTSCgpOwogfQogCi1pbmxpbmUgdm9p
ZCBjaGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNo
YXIqIHRleHQpCitpbmxpbmUgdm9pZCBjaGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxhdGlvbiYg
Y29tcGlsYXRpb24sIGNvbnN0IGNoYXIqIHRleHQsIGJvb2wgcmVnZXggPSBmYWxzZSkKIHsKICAg
ICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICBjb21waWxhdGlvbiwKICAgICAgICAgWyZdIChj
b25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CisgICAgICAgICAgICBpZiAocmVnZXgp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cmVnZXhfbWF0Y2goZGlzYXNzZW1ibHksIHN0
ZDo6cmVnZXgodGV4dCwgc3RkOjpyZWdleDo6ZXh0ZW5kZWQpKTsKICAgICAgICAgICAgIHJldHVy
biBzdHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOwogICAgICAgICB9LAogICAgICAgICB0b0NTdHJp
bmcoIkV4cGVjdGVkIHRvIGZpbmQgIiwgdGV4dCwgIiBidXQgZGlkbnQhIikpOwpAQCAtNDQ4LDYg
KzQ1MSwxOCBAQCB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpOwog
dm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKTsKIHZvaWQgdGVzdEJh
c2ljU2VsZWN0KCk7CiB2b2lkIHRlc3RTZWxlY3RUZXN0KCk7Cit2b2lkIHRlc3RBZGRXaXRoTGVm
dFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFk
ZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkV2l0aExlZnRTaGlmdDY0
KCk7Cit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCk7Cit2b2lkIHRlc3RBZGRXaXRoVW5z
aWduZWRSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YldpdGhMZWZ0U2hpZnQzMigpOwordm9p
ZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViV2l0aFVuc2lnbmVkUmln
aHRTaGlmdDMyKCk7Cit2b2lkIHRlc3RTdWJXaXRoTGVmdFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1
YldpdGhSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2
NCgpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpOwogdm9pZCB0ZXN0U2VsZWN0Q29t
cGFyZUZsb2F0KGZsb2F0LCBmbG9hdCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0Rv
dWJsZShmbG9hdCwgZmxvYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5k
ZXggODgwNDVmMTVkY2VhNGYwMmQxZDExYjkyYTAyM2I0ZmI3ZTAxYjYwZS4uNDY3MTk2YmE5YmFk
ODAxZWM3ZTBhNzIzM2U5Nzk0ODY0YzMwMWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzIuY3BwCkBAIC00MTE5LDYgKzQxMTksNTEwIEBAIHZvaWQgdGVzdEV4dHJhY3RSZWdpc3Rl
cjY0KCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigpCit7CisgICAg
aWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVy
bjsKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMTcsIDMxIH07CisKKyAgICAv
LyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsm
XSAoaW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAg
VmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3Jp
Z2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBz
aGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIu
KmFkZC4qLC4qLC4qLC4qbHNsICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6dG9fc3Ry
aW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnZv
a2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJh
bmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50
MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAg
ICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNL
X0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8IGFtb3VudCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDMyKCkK
K3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAg
ICAgcmV0dXJuOworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAxLCAxNywgMzEgfTsK
KworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0
ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMy
X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKwor
ICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwg
blZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IHJlZ2V4KCIuKmFkZC4qLC4qLC4qLC4qYXNyICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0
ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1
dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVy
YW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDog
YW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOwor
ICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoVW5zaWdu
ZWRSaWdodFNoaWZ0MzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExl
dmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRz
ID0geyAxLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBh
bW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBuLCB1aW50MzJfdCBtLCB1aW50
MzJfdCBhbW91bnQpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFs
dWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAg
VmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVl
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7Cisg
ICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLiphZGQuKiwuKiwuKiwuKmxzciAjIik7Cisg
ICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQzMl90PigqY29kZSwgbiwgbSk7
CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgdWludDMy
X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG0gPSBtT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCks
IG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0QWRkV2l0aExlZnRTaGlmdDY0KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25z
OjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3Rvcjxp
bnQzMl90PiBhbW91bnRzID0geyAxLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjog
ZCA9IG4gKyAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGlu
dDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
ICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAg
ICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hs
LCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFs
dWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVn
ZXgoIi4qYWRkLiosLiosLiosLipsc2wgIyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0
b19zdHJpbmcoYW1vdW50KSArICIuKiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBu
T3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQg
OiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91
bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAg
ICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0
NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQor
ICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDM0LCA2
MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBh
dXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4g
aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRW
YWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkg
eworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qYWRkLiosLiosLiosLiphc3IgIyIp
OworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7Cisg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1
ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwg
bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50
NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9w
ZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQp
LCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgaWYgKEpT
Qzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAg
ICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0
IFBhdHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWlu
dDY0X3QgbiwgdWludDY0X3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50NjRfdCB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91
bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAg
c3RkOjpzdHJpbmcgcmVnZXgoIi4qYWRkLiosLiosLiosLipsc3IgIyIpOworICAgICAgICAgICAg
cmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7CisgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisK
KyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4g
YW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVz
dFN1YldpdGhMZWZ0U2hpZnQzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIz
T3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFt
b3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtICht
IDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtLCBp
bnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVl
KiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZh
bHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAg
IFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVl
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7Cisg
ICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmxzbCAjIik7Cisg
ICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90
IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFu
ZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4g
LSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6
ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBk
ID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50
MzJfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBh
bW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKwor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qc3ViLiosLiosLiosLiph
c3IgIyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIu
KiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIo
KSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29k
ZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAg
ICAgaW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBt
ID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBh
bW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7CisgICAg
aWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVy
bjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAg
Ly8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBb
Jl0gKHVpbnQzMl90IG4sIHVpbnQzMl90IG0sIHVpbnQzMl90IGFtb3VudCkgLT4gdWludDMyX3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAg
ICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNo
ciwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJl
Z2V4KCIuKnN1Yi4qLC4qLC4qLC4qbHNyICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6
dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBpbnZva2U8dWludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRv
IG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFu
ZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFt
b3VudHMpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7Cisg
ICAgICAgICAgICAgICAgdWludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRoTGVmdFNo
aWZ0NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAy
KQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDM0
LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtIDw8IGFtb3VudCkKKyAg
ICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkg
LT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Cisg
ICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3Vu
dFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
KSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmxzbCAj
Iik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsK
KyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0
cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBu
LCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBp
bnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBt
T3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3Vu
dCksIG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0
aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0
b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRl
cm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBu
LCBpbnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisK
KyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCks
IG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmFzciAjIik7CisgICAgICAgICAgICByZWdleCArPSBz
dGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChh
dXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3Bl
cmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6
IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsK
KyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAg
ICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFVuc2ln
bmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRz
ID0geyAxLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBh
bW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50NjRfdCBuLCB1aW50NjRfdCBtLCB1aW50
MzJfdCBhbW91bnQpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUq
IHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigp
LCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRW
YWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAg
ICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIu
KiwuKiwuKiwuKmxzciAjIik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhh
bW91bnQpICsgIi4qIjsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCBy
ZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPHVp
bnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgdWludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
USh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJ
bW1NYXNrMzIoKQogewogICAgIC8vIFR1cm4gdGhpczogKHRtcCA+PiBpbW0pICYgbWFzayAKQEAg
LTUwMjcsNiArNTUzMSwxOCBAQCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwg
RGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU4odGVzdElu
c2VydFNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVk
Qml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RTaWduZWRCaXRmaWVsZDY0KCkpOwor
ICAgIFJVTih0ZXN0QWRkV2l0aExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkV2l0aFJp
Z2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigp
KTsKKyAgICBSVU4odGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFdp
dGhSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoVW5zaWduZWRSaWdodFNoaWZ0
NjQoKSk7CisgICAgUlVOKHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RT
dWJXaXRoUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRT
aGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViV2l0aExlZnRTaGlmdDY0KCkpOworICAgIFJVTih0
ZXN0U3ViV2l0aFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhVbnNpZ25lZFJp
Z2h0U2hpZnQ2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFz
azMyKCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKSk7
CiAgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKaW5kZXggZGZl
MDliNjcxNDcwZGNiYTRiZWI1ZGI4MTMwMWE3MjAzNmRiMzVlZC4uOGQ0ZDEyOTUxNWQ2MWM4NGY5
N2E5YmJhM2VkMzQ4ZTJiNmYzYjgzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGU6OnNfb3B0aW9uTmFtZVs4XSA9IHsKIH07CiAK
IGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGU6OnNfc2hpZnROYW1lc1s0XSA9IHsKLSAgICAi
bHNsIiwgImxzciIsICJhc2wiLCAicm9yIgorICAgICJsc2wiLCAibHNyIiwgImFzciIsICJyb3Ii
CiB9OwogCiBjb25zdCBjaGFyIEE2NERPcGNvZGU6OnNfRlBSZWdpc3RlclByZWZpeFs1XSA9IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0
RE9wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRE
T3Bjb2RlLmgKaW5kZXggZGQ3YTBiY2JkNGIxMTk2M2U4MDA5NzVlMTE0NTc4ZDZhYzY3M2Y5MS4u
Njk1YTUxYTNhNDMxY2ViMmQxYzk4Y2E5YjcyMTk0ZWY0NWM5Yjc1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKQEAg
LTI2Myw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc05lZygpIHsgcmV0dXJuIChvcCgp
ICYmIHJuKCkgPT0gMzEpOyB9CiAgICAgY29uc3QgY2hhciogbmVnTmFtZSgpIHsgcmV0dXJuIHNC
aXQoKSA/ICJuZWdzIiA6ICJuZWciOyB9CiAgICAgdW5zaWduZWQgc2hpZnQoKSB7IHJldHVybiAo
bV9vcGNvZGUgPj4gMjIpICYgMHgzOyB9Ci0gICAgaW50IGltbWVkaWF0ZTYoKSB7IHJldHVybiAo
c3RhdGljX2Nhc3Q8aW50PigobV9vcGNvZGUgPj4gMTApICYgMHgzZikgPDwgMjYpID4+IDI2OyB9
CisgICAgaW50IGltbWVkaWF0ZTYoKSB7IHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCht
X29wY29kZSA+PiAxMCkgJiAweDNmKSA8PCAyNikgPj4gMjY7IH0KIH07CiAKIGNsYXNzIEE2NERP
cGNvZGVCaXRmaWVsZCA6IHB1YmxpYyBBNjRET3Bjb2RlIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbiBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgppbmRleCBiZGRl
ZTk1NWExZDQ4YzIwZGVhNzlhNzI3Mzg0YzY1ODcyZjEyYjc1Li41OWU3MDgxMGRlMWI3Yjk5ZTI2
ODNiZWVhYjk4NGJkNWU4NjIzMWI0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uCkBAIC01OTY5LDYgKzU5NjksMTUg
QEAKICAgICAgICAgICJ5aS40LnNoZW5Abm9raWEuY29tIgogICAgICAgXQogICAgfSwKKyAgICJZ
aWppYSBIdWFuZyIgOiB7CisgICAgICAiZW1haWxzIiA6IFsKKyAgICAgICAgICJ5aWppYV9odWFu
Z0BhcHBsZS5jb20iCisgICAgICBdLAorICAgICAgIm5pY2tzIiA6IFsKKyAgICAgICAgICJ5aWpp
YSIKKyAgICAgIF0sCisgICAgICAic3RhdHVzIiA6ICJjb21taXR0ZXIiCisgICB9LAogICAgIllv
YXYgV2Vpc3MiIDogewogICAgICAgImVtYWlscyIgOiBbCiAgICAgICAgICAieW9hdkB5b2F2Lndz
Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433161</attachid>
            <date>2021-07-08 13:59:58 -0700</date>
            <delta_ts>2021-07-08 16:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210708155957.patch</filename>
            <type>text/plain</type>
            <size>49224</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWIzYmExYWIyMmI5NGY5MGFlOGRkNmFjNjFmODUwODY3MTFlYTVmLi40NGM2YzllYTkwMmIzNjc1
Nzk1Y2FmZTQ3ODYwNjIyNzI1MTU0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAyMS0wNy0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdHdvIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYWRkL3N1Yi13aXRoLXNoaWZ0IHRvIEFpciBvcGNv
ZGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHBhdHRlcm4gbWF0Y2ggZm9yIAorICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLgorICAgICAgICAgICAgMi4gTWlub3IgZml4IGluIGRp
c2Fzc2VtYmxlci4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgICAg
ICBhZGQvc3ViIFJkLCBSbiwgUm0sIFNoaWZ0VHlwZSwgYW1vdW50CisKKyAgICAgICAgQUREL1NV
QiAoc2hpZnRlZCByZWdpc3RlciksIGFkZHMvc3VicyBhIHJlZ2lzdGVyIHZhbHVlIFJuIGFuZCBh
biBvcHRpb25hbGx5LXNoaWZ0ZWQgcmVnaXN0ZXIgCisgICAgICAgIHZhbHVlIFJtLCBhbmQgd3Jp
dGVzIHRoZSByZXN1bHQgdG8gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiBUaGUgaW5zdHJ1
Y3Rpb24gc2VsZWN0b3IgCisgICAgICAgIGNhbiB1dGlsaXplIHRoaXMgdG8gbG93ZXJpbmcgY2Vy
dGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0aW1pemF0aW9uLiAK
KworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgICAg
ICBkID0gbiArLy0gKG0gU2hpZnRUeXBlIGFtb3VudCkKKworICAgICAgICBHaXZlbiBCMyBJUjoK
KyAgICAgICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBBcmd1
bWVudFJlZygleDEpCisgICAgICAgIEludCBAMiA9IGFtb3VudAorICAgICAgICBJbnQgQDMgPSBa
U2hyKEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQWRkL1N1YihAMCwgQDMpCisgICAgICAgIFZv
aWRANSA9IFJldHVybihANCwgVGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBB
SVIKKyAgICAgICAgU2hpZnQgICAleDEsIGFtb3VudCwgJXgxLCBAMworICAgICAgICBBZGQvU3Vi
ICV4MCwgICAgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAgICAgJXgwLCAgICAgICAgICAgICAg
QDUKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBBZGQoU3ViKVNoaWZ0
ICV4MCwgJXgxLCBhbW91bnQsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAgICAgICAleDAsICAg
ICAgICAgICAgICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hpZnQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkTGVmdFNoaWZ0NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJMZWZ0U2hpZnQ2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlJpZ2h0U2hpZnQ2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0QWRk
V2l0aExlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjp0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAg
ICAgKEpTQzo6dGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RBZGRX
aXRoUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0
U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIpOgorICAgICAg
ICAoSlNDOjp0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJX
aXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViV2l0aExlZnRT
aGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdFN1YldpdGhSaWdodFNoaWZ0NjQpOgorICAgICAg
ICAoSlNDOjp0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKiBiMy9C
M0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAg
ICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAg
ICh0ZXN0QWRkV2l0aExlZnRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRXaXRoUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKHRlc3RBZGRXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAg
ICAodGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkV2l0aFJpZ2h0U2hp
ZnQ2NCk6CisgICAgICAgICh0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAg
ICAgKHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIpOgorICAgICAgICAodGVzdFN1YldpdGhSaWdodFNo
aWZ0MzIpOgorICAgICAgICAodGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAg
ICAgICh0ZXN0U3ViV2l0aExlZnRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoUmlnaHRT
aGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAg
ICAgICAoYWRkQml0VGVzdHMpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bj
b2RlLmNwcDoKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgorICAg
ICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRl
ZFJlZ2lzdGVyOjppbW1lZGlhdGU2KToKKwogMjAyMS0wNy0wNiAgWWlqaWEgSHVhbmcgIDx5aWpp
YV9odWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHR5cGUgZXJyb3IgaW4gdGVzdGIzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oCmluZGV4IGE2YTRlZGY4OTc1MDc1ZDU5OTQxNzQ4ZGFmOTAzNDlkNjdkYjFjOWMuLmRm
NjVjYjYzNjFmNGFiMDVhMDU1MGUzMGUzNGE4NTc3OWFlZGFmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC01
NDksNiArNTQ5LDY2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZXh0cjw2ND4oZCwg
biwgbSwgbHNiLm1fdmFsdWUpOwogICAgIH0gCiAKKyAgICB2b2lkIGFkZExlZnRTaGlmdDMyKFJl
Z2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklE
IGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxl
cjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0
MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lz
dGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZCwgbiwgbSwgQXNz
ZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVuc2ln
bmVkUmlnaHRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIg
YW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+
KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAg
dm9pZCBhZGRMZWZ0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZElt
bTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKwor
ICAgIHZvaWQgYWRkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVz
dGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hZGQ8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAg
fQorCisgICAgdm9pZCBhZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lz
dGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1f
dmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViTGVmdFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBS
ZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU0wsIGFtb3Vu
dC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlJpZ2h0U2hpZnQzMihSZWdpc3RlcklE
IG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkFTUiwg
YW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViVW5zaWduZWRSaWdodFNoaWZ0
MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lz
dGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNz
ZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YkxlZnRT
aGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBS
ZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0s
IEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJS
aWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91
bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yjw2ND4oZCwg
biwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lk
IHN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVz
dGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAg
fQorCiAgICAgdm9pZCBjbGVhckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJ
RCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQUlJlZykKICAgICB7
CiAgICAgICAgIGlmIChzY3JhdGNoRm9yTWFzayA9PSBJbnZhbGlkR1BSUmVnKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAwYThiZDhlZWMwOTdm
NmU0NGE2ZDIwNzk2N2UxOGE3MmYyNzhjNjRjLi5lODIxNTM2MmU1ZWZlNWVjODE3YzAzY2I1NDhl
MGVjNTBjYjcxNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3Rt
YXNtLmNwcApAQCAtMTY0MCw2ICsxNjQwLDMxOCBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0ZXI2
NCgpCiAgICAgICAgIH0KICAgICB9CiB9CisKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigp
Cit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZv
ciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50
MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykg
eworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
KworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGVmdFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91
bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAg
ICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAgICAg
ICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQz
Ml90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmFkZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAg
ICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5y
ZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhz
ID0gaW52b2tlPGludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90
IHJocyA9IG4gKyAobSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywg
cmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRk
V2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3Vu
dHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBm
b3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIg
PSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRk
VW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0
KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBsaHMg
PSBpbnZva2U8dWludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1aW50MzJf
dCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgKyAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoTGVmdFNo
aWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsK
KyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8g
bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFt
b3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxs
SGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZExlZnRTaGlmdDY0KEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsK
KyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0p
OworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiArIChtIDw8IGFtb3VudCk7CisgICAg
ICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0
b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4gOiBp
bnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdC5hZGRSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAg
ICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2
NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAg
aW50NjRfdCByaHMgPSBuICsgKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
UShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQzMl90
PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAg
ICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAg
aml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWludDY0
X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAg
dWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pICsgKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0
aExlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcs
IDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91
bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJMZWZ0U2hpZnQzMihH
UFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6
YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tlPGludDMyX3Q+KHN1YjMy
LCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4gLSAobSA8PCBhbW91bnQp
OworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpCit7Cisg
ICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0
byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAg
ICAgICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAg
ICAgICAgICAgICAgICAgICBqaXQuc3ViUmlnaHRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAg
ICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAgICAg
ICAgICAgIGludDMyX3QgcmhzID0gbiAtIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjx1
aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgIGppdC5zdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAs
IAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAor
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAg
ICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAg
IHVpbnQzMl90IGxocyA9IGludm9rZTx1aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSAtIChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShs
aHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVz
dFN1YldpdGhMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7
IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21w
aWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVmdFNo
aWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25F
cGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90
PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0gPDwg
YW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhSaWdodFNoaWZ0NjQo
KQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YlJpZ2h0U2hpZnQ2NChHUFJJbmZvOjphcmd1
bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFt
b3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KHN1YjY0LCBuLCBtKTsKKyAg
ICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gLSAobSA+PiBhbW91bnQpOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBW
ZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBu
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5k
cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAg
ICAgICAgICAgIGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91
bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAg
ICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICB1aW50NjRfdCBsaHMgPSBpbnZva2U8dWludDY0X3Q+KHN1YjY0LCBuLCBtKTsKKyAg
ICAgICAgICAgICAgICB1aW50NjRfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obikgLSAo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQogI2Vu
ZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBAIC0zODMy
LDYgKzQxNDQsMTkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0ZmllbGQ2
NCgpKTsKICAgICBSVU4odGVzdEV4dHJhY3RSZWdpc3RlcjMyKCkpOwogICAgIFJVTih0ZXN0RXh0
cmFjdFJlZ2lzdGVyNjQoKSk7CisKKyAgICBSVU4odGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigpKTsK
KyAgICBSVU4odGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRo
VW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoTGVmdFNoaWZ0NjQo
KSk7CisgICAgUlVOKHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0QWRk
V2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViV2l0aExlZnRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVz
dFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YldpdGhMZWZ0
U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVO
KHRlc3RTdWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMDk2NTg0MDRmNDgzMTRlNDE3NTkxMzgzYTFjY2E1Nzg4
YmVjZTZkYy4uNTJiYTI5Y2QzZDY3ZDg3OTJjZDA1OTc4MTQ3ZDVmMzBmMmM4MWQ2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI1NDUsMTIgKzI1NDUs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hp
bGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKKwog
ICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRGb3JtKE11bHRpcGx5QWRkNjQsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSAKICAgICAgICAgICAgICAgICA9PSBpc1ZhbGlk
Rm9ybShNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCwgQXJnOjpUbXApKTsKICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5QWRkT3Bjb2Rl
ID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0LCBtX3ZhbHVl
LT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5QWRkT3Bjb2Rl
LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAgICAgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwotICAgICAgICAgICAgICAgIFZh
bHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAgICAgICAgICAgICAgIGlmICghaW1t
KHJpZ2h0KSB8fCBtX3ZhbHVlVG9UbXBbcmlnaHRdKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQpA
QCAtMjU3MSw3ICsyNTcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiBtdWx0aXBseUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbGVmdC0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFNNQURETDogZCA9IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBhCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiBTRXh0MzIo
bSkgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbHlBZGRPcGNvZGUgPT0g
TXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSAmJiB0cnlTRXh0MzIobXVs
dGlwbHlSaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTXVsdGlw
bHlBZGRTaWduRXh0ZW5kMzIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAo
bXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIApAQCAtMjU5NCwxNiArMjU5NSw1MSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5k
QmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obV92
YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIC8vIGFkZC13
aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAgICAg
YXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bj
b2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgICAg
IGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShB
ZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2Rl
Rm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgp
KTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJp
Z2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpPb3BzOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRkQW5kU2hpZnQg
PSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAgICAg
ICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2RlKCkpOworICAg
ICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6SW1tLCBBcmc6OlRtcCkpIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKHJpZ2h0KSB8fCAhaW1tKHJpZ2h0
LT5jaGlsZCgxKSkgfHwgcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpIDwgMCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgYW1vdW50
ID0gcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRh
dGFzaXplID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gMzIgOiA2NDsKKyAgICAgICAgICAg
ICAgICBpZiAoYW1vdW50ID49IGRhdGFzaXplKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAobGVmdCksIHRtcChy
aWdodC0+Y2hpbGQoMCkpLCBpbW0ocmlnaHQtPmNoaWxkKDEpKSwgdG1wKG1fdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAodHJ5QXBwZW5kQWRk
QW5kU2hpZnQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZEFuZFNoaWZ0KHJpZ2h0LCBsZWZ0
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFk
ZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3ViOiB7
CisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAg
ICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKICAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG11bHRpcGx5U3ViT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseVN1YjMy
LCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKG11bHRp
cGx5U3ViT3Bjb2RlICE9IEFpcjo6T29wcwogICAgICAgICAgICAgICAgICYmIGlzVmFsaWRGb3Jt
KG11bHRpcGx5U3ViT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkpIHsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwot
ICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAgICAg
ICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5h
bCh2KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NTIsNyAr
MjY4OCw0MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGUsIFN1YkZsb2F0
PihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgLy8g
c3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQpCisgICAgICAg
ICAgICBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6T3Bjb2RlIG9wY29kZSkgLT4gQWly
OjpPcGNvZGUgeworICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JU
eXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIFNTaHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlP
cGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hpZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50
eXBlKCkpOworICAgICAgICAgICAgICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViVW5zaWduZWRSaWdodFNoaWZ0MzIsIFN1YlVuc2ln
bmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRTdWJBbmRT
aGlmdCA9IFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSB0cnlPcGNvZGUocmlnaHQtPm9wY29kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlz
VmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpUbXAp
KSAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlm
ICghY2FuQmVJbnRlcm5hbChyaWdodCkgfHwgIWltbShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0
LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+
YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBk
YXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1t
KHJpZ2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFN1YkFuZFNoaWZ0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3ViNjQs
IFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcwppbmRleCBkNDdmYTNlY2IzOGIyNjE0NTVkNjkwNWE0NjlmZjc4NGMxZmFmOTUxLi4w
NWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDczZWMzN2NjMDU4YmUxZjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg3Miw2ICs4NzIsNDIg
QEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3RlcjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXI2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6
NjQKICAgICBUbXAsIFRtcCwgSW1tLCBUbXAKIAorYXJtNjQ6IEFkZExlZnRTaGlmdDMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJt
NjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2Fy
bTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBU
bXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFVu
c2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRt
cCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViTGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViUmln
aHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwg
SW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1Ykxl
ZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJ
bW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQs
IEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViVW5zaWduZWRSaWdo
dFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIElt
bSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3Jt
dWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVh
eCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDc0NDU0YTBiYjdjZDIzZDI2NjgyODg2
OGMzNDQ4NGZkYzlmYTI1Y2IuLjljN2QyOTk4ZTJhODkwZjVlZGU3MGViNmI5ZTBmOTkxOTQ3ZmEx
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUHVyZU5hTi5oIgogI2luY2x1ZGUgPGNtYXRo
PgorI2luY2x1ZGUgPHJlZ2V4PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvRmFz
dFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgpAQCAtMjQ0LDExICsyNDUsMTMgQEAg
dm9pZCBjaGVja0Rpc2Fzc2VtYmx5KENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgY29uc3QgRnVu
YyYgZnVuYywgY29uc3QgQ1N0cmluZyYKICAgICBDUkFTSCgpOwogfQogCi1pbmxpbmUgdm9pZCBj
aGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNoYXIq
IHRleHQpCitpbmxpbmUgdm9pZCBjaGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29t
cGlsYXRpb24sIGNvbnN0IGNoYXIqIHRleHQsIGJvb2wgcmVnZXggPSBmYWxzZSkKIHsKICAgICBj
aGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICBjb21waWxhdGlvbiwKICAgICAgICAgWyZdIChjb25z
dCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CisgICAgICAgICAgICBpZiAocmVnZXgpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cmVnZXhfbWF0Y2goZGlzYXNzZW1ibHksIHN0ZDo6
cmVnZXgodGV4dCwgc3RkOjpyZWdleDo6ZXh0ZW5kZWQpKTsKICAgICAgICAgICAgIHJldHVybiBz
dHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOwogICAgICAgICB9LAogICAgICAgICB0b0NTdHJpbmco
IkV4cGVjdGVkIHRvIGZpbmQgIiwgdGV4dCwgIiBidXQgZGlkbnQhIikpOwpAQCAtNDQ4LDYgKzQ1
MSwxOCBAQCB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2szMigpOwogdm9p
ZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKTsKIHZvaWQgdGVzdEJhc2lj
U2VsZWN0KCk7CiB2b2lkIHRlc3RTZWxlY3RUZXN0KCk7Cit2b2lkIHRlc3RBZGRXaXRoTGVmdFNo
aWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFdp
dGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkV2l0aExlZnRTaGlmdDY0KCk7
Cit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCk7Cit2b2lkIHRlc3RBZGRXaXRoVW5zaWdu
ZWRSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YldpdGhMZWZ0U2hpZnQzMigpOwordm9pZCB0
ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRT
aGlmdDMyKCk7Cit2b2lkIHRlc3RTdWJXaXRoTGVmdFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1Yldp
dGhSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgp
Owogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFy
ZUZsb2F0KGZsb2F0LCBmbG9hdCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJs
ZShmbG9hdCwgZmxvYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXgg
ODgwNDVmMTVkY2VhNGYwMmQxZDExYjkyYTAyM2I0ZmI3ZTAxYjYwZS4uNDY3MTk2YmE5YmFkODAx
ZWM3ZTBhNzIzM2U5Nzk0ODY0YzMwMWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
XzIuY3BwCkBAIC00MTE5LDYgKzQxMTksNTEwIEBAIHZvaWQgdGVzdEV4dHJhY3RSZWdpc3RlcjY0
KCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigpCit7CisgICAgaWYg
KEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsK
KyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMTcsIDMxIH07CisKKyAgICAvLyBU
ZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAo
aW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFs
dWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2lu
KCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlm
dFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAg
ICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmFk
ZC4qLC4qLC4qLC4qbHNsICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6dG9fc3RyaW5n
KGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
IHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnZva2U8
aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQg
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgewor
ICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAg
ICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8IGFtb3VudCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDMyKCkKK3sK
KyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAg
cmV0dXJuOworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAxLCAxNywgMzEgfTsKKwor
ICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0
ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDMyX3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAg
ICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1No
ciwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJl
Z2V4KCIuKmFkZC4qLC4qLC4qLC4qYXNyICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6
dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8g
bk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5k
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAg
ICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoVW5zaWduZWRS
aWdodFNoaWZ0MzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVs
KCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0g
eyAxLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91
bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBuLCB1aW50MzJfdCBtLCB1aW50MzJf
dCBhbW91bnQpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFs
dWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAg
ICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLiphZGQuKiwuKiwuKiwuKmxzciAjIik7CisgICAg
ICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQzMl90PigqY29kZSwgbiwgbSk7Cisg
ICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3Qg
biA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG0gPSBtT3BlcmFu
ZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4g
KyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCB0ZXN0QWRkV2l0aExlZnRTaGlmdDY0KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpk
ZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxpbnQz
Ml90PiBhbW91bnRzID0geyAxLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9
IG4gKyAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0
X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAg
ICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAg
ICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBP
cmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUs
IHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgo
Ii4qYWRkLiosLiosLiosLipsc2wgIyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19z
dHJpbmcoYW1vdW50KSArICIuKiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3Bl
cmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBp
bnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRz
KSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0NjQo
KQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAg
ICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDM0LCA2MyB9
OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRv
IHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50
NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1
ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBh
dXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgewor
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qYWRkLiosLiosLiosLiphc3IgIyIpOwor
ICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7CisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7
CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRf
dCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJh
bmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBu
ICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgdGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgaWYgKEpTQzo6
T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBW
ZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBh
dHRlcm46IGQgPSBuICsgKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDY0
X3QgbiwgdWludDY0X3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50NjRfdCB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91
bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgcmVnZXgoIi4qYWRkLiosLiosLiosLipsc3IgIyIpOworICAgICAgICAgICAgcmVn
ZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7CisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGludm9rZTx1aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAg
ICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8g
YW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG4gPSBuT3BlcmFu
ZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7Cisg
ICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1v
dW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1
YldpdGhMZWZ0U2hpZnQzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3Vu
dHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtIDw8
IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJfdCBtLCBpbnQz
Ml90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBu
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVl
KiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZh
bHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAg
ICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmxzbCAjIik7CisgICAg
ICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAg
ICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAg
Zm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG4g
PSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3BlcmFuZC52
YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAo
bSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVm
YXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8dWludDMy
X3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0g
biAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJf
dCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91
bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQo
KSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qc3ViLiosLiosLiosLiphc3Ig
IyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7
CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwg
dHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQzMl90PigqY29kZSwg
biwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAg
aW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBtID0g
bU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91
bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7CisgICAgaWYg
KEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsK
KyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8g
VGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0g
KHVpbnQzMl90IG4sIHVpbnQzMl90IG0sIHVpbnQzMl90IGFtb3VudCkgLT4gdWludDMyX3Qgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAg
ICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwg
T3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVl
LCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4
KCIuKnN1Yi4qLC4qLC4qLC4qbHNyICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6dG9f
c3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBp
bnZva2U8dWludDMyX3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5P
cGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6
IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3Vu
dHMpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAg
ICAgICAgICAgICAgdWludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRoTGVmdFNoaWZ0
NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQor
ICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDM0LCA2
MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtIChtIDw8IGFtb3VudCkKKyAgICBh
dXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4g
aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7
CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmxzbCAjIik7
CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVl
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBt
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7
CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2
NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCks
IG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0aW9u
czo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8
aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46
IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBp
bnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAg
ICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNT
aHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5W
YWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBy
ZWdleCgiLipzdWIuKiwuKiwuKiwuKmFzciAjIik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6
OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRv
IG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFu
ZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFt
b3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAg
ICAgICAgICAgICAgICBpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFVuc2lnbmVk
UmlnaHRTaGlmdDY0KCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZl
bCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0g
eyAxLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91
bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50NjRfdCBuLCB1aW50NjRfdCBtLCB1aW50MzJf
dCBhbW91bnQpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNo
aWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBt
VmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1
ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBp
ZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwu
KiwuKiwuKmxzciAjIik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91
bnQpICsgIi4qIjsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdl
eC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQ2
NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAg
ICAgICAgICAgICAgdWludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IHVpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0
ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1N
YXNrMzIoKQogewogICAgIC8vIFR1cm4gdGhpczogKHRtcCA+PiBpbW0pICYgbWFzayAKQEAgLTUw
MjcsNiArNTUzMSwxOCBAQCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVx
dWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU4odGVzdEluc2Vy
dFNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0
ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RTaWduZWRCaXRmaWVsZDY0KCkpOworICAg
IFJVTih0ZXN0QWRkV2l0aExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkV2l0aFJpZ2h0
U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsK
KyAgICBSVU4odGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFdpdGhS
aWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RBZGRXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQo
KSk7CisgICAgUlVOKHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJX
aXRoUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0U3ViV2l0aExlZnRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0
U3ViV2l0aFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0
U2hpZnQ2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJpZ2h0QXJnSW1tTWFzazMy
KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKSk7CiAg
ICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKaW5kZXggZGZlMDli
NjcxNDcwZGNiYTRiZWI1ZGI4MTMwMWE3MjAzNmRiMzVlZC4uOGQ0ZDEyOTUxNWQ2MWM4NGY5N2E5
YmJhM2VkMzQ4ZTJiNmYzYjgzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGNv
bnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGU6OnNfb3B0aW9uTmFtZVs4XSA9IHsKIH07CiAKIGNv
bnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGU6OnNfc2hpZnROYW1lc1s0XSA9IHsKLSAgICAibHNs
IiwgImxzciIsICJhc2wiLCAicm9yIgorICAgICJsc2wiLCAibHNyIiwgImFzciIsICJyb3IiCiB9
OwogCiBjb25zdCBjaGFyIEE2NERPcGNvZGU6OnNfRlBSZWdpc3RlclByZWZpeFs1XSA9IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9w
Y29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bj
b2RlLmgKaW5kZXggZGQ3YTBiY2JkNGIxMTk2M2U4MDA5NzVlMTE0NTc4ZDZhYzY3M2Y5MS4uNjk1
YTUxYTNhNDMxY2ViMmQxYzk4Y2E5YjcyMTk0ZWY0NWM5Yjc1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKQEAgLTI2
Myw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc05lZygpIHsgcmV0dXJuIChvcCgpICYm
IHJuKCkgPT0gMzEpOyB9CiAgICAgY29uc3QgY2hhciogbmVnTmFtZSgpIHsgcmV0dXJuIHNCaXQo
KSA/ICJuZWdzIiA6ICJuZWciOyB9CiAgICAgdW5zaWduZWQgc2hpZnQoKSB7IHJldHVybiAobV9v
cGNvZGUgPj4gMjIpICYgMHgzOyB9Ci0gICAgaW50IGltbWVkaWF0ZTYoKSB7IHJldHVybiAoc3Rh
dGljX2Nhc3Q8aW50PigobV9vcGNvZGUgPj4gMTApICYgMHgzZikgPDwgMjYpID4+IDI2OyB9Cisg
ICAgaW50IGltbWVkaWF0ZTYoKSB7IHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KChtX29w
Y29kZSA+PiAxMCkgJiAweDNmKSA8PCAyNikgPj4gMjY7IH0KIH07CiAKIGNsYXNzIEE2NERPcGNv
ZGVCaXRmaWVsZCA6IHB1YmxpYyBBNjRET3Bjb2RlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433184</attachid>
            <date>2021-07-08 16:32:27 -0700</date>
            <delta_ts>2021-07-08 17:19:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210708183226.patch</filename>
            <type>text/plain</type>
            <size>47266</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDc5MTRhNzhlZTE1ZmE2NzY5NWNiOTA1ZmFjNzc2MGExNWUwMjUwLi40NWY0ZTQ5MTg0MzQ1NzZj
YzZjNDBhNzdmOWU2MjQxM2E4Y2Q4MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMS0wNy0wOCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdHdvIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYWRkL3N1Yi13aXRoLXNoaWZ0IHRvIEFpciBvcGNv
ZGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHBhdHRlcm4gbWF0Y2ggZm9yIAorICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLgorICAgICAgICAgICAgMi4gTWlub3IgZml4IGluIGRp
c2Fzc2VtYmxlci4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgICAg
ICBhZGQvc3ViIFJkLCBSbiwgUm0sIFNoaWZ0VHlwZSwgYW1vdW50CisKKyAgICAgICAgQUREL1NV
QiAoc2hpZnRlZCByZWdpc3RlciksIGFkZHMvc3VicyBhIHJlZ2lzdGVyIHZhbHVlIFJuIGFuZCBh
biBvcHRpb25hbGx5LXNoaWZ0ZWQgcmVnaXN0ZXIgCisgICAgICAgIHZhbHVlIFJtLCBhbmQgd3Jp
dGVzIHRoZSByZXN1bHQgdG8gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiBUaGUgaW5zdHJ1
Y3Rpb24gc2VsZWN0b3IgCisgICAgICAgIGNhbiB1dGlsaXplIHRoaXMgdG8gbG93ZXJpbmcgY2Vy
dGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0aW1pemF0aW9uLiAK
KworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgICAg
ICBkID0gbiArLy0gKG0gU2hpZnRUeXBlIGFtb3VudCkKKworICAgICAgICBHaXZlbiBCMyBJUjoK
KyAgICAgICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBBcmd1
bWVudFJlZygleDEpCisgICAgICAgIEludCBAMiA9IGFtb3VudAorICAgICAgICBJbnQgQDMgPSBa
U2hyKEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQWRkL1N1YihAMCwgQDMpCisgICAgICAgIFZv
aWRANSA9IFJldHVybihANCwgVGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBB
SVIKKyAgICAgICAgU2hpZnQgICAleDEsIGFtb3VudCwgJXgxLCBAMworICAgICAgICBBZGQvU3Vi
ICV4MCwgICAgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAgICAgJXgwLCAgICAgICAgICAgICAg
QDUKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBBZGQoU3ViKVNoaWZ0
ICV4MCwgJXgxLCBhbW91bnQsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAgICAgICAleDAsICAg
ICAgICAgICAgICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hpZnQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkTGVmdFNoaWZ0NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJMZWZ0U2hpZnQ2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlJpZ2h0U2hpZnQ2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0QWRk
TGVmdFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjp0ZXN0QWRkUmlnaHRTaGlmdDMyKToKKyAgICAg
ICAgKEpTQzo6dGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVz
dEFkZExlZnRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFJpZ2h0U2hpZnQ2NCk6Cisg
ICAgICAgIChKU0M6OnRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6
OnRlc3RTdWJMZWZ0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjp0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAo
SlNDOjp0ZXN0U3ViTGVmdFNoaWZ0NjQpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViUmlnaHRTaGlm
dDY0KToKKyAgICAgICAgKEpTQzo6dGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAg
ICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bj
b2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKGNoZWNrVXNlc0luc3RydWN0
aW9uKToKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0QWRkTGVmdFNo
aWZ0MzIpOgorICAgICAgICAodGVzdEFkZFJpZ2h0U2hpZnQzMik6CisgICAgICAgICh0ZXN0QWRk
VW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAodGVzdEFkZExlZnRTaGlmdDY0KToKKyAg
ICAgICAgKHRlc3RBZGRSaWdodFNoaWZ0NjQpOgorICAgICAgICAodGVzdEFkZFVuc2lnbmVkUmln
aHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJMZWZ0U2hpZnQzMik6CisgICAgICAgICh0ZXN0
U3ViUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMik6
CisgICAgICAgICh0ZXN0U3ViTGVmdFNoaWZ0NjQpOgorICAgICAgICAodGVzdFN1YlJpZ2h0U2hp
ZnQ2NCk6CisgICAgICAgICh0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAo
YWRkQml0VGVzdHMpOgorCiAyMDIxLTA3LTA4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIGRpc3BsYXktcHJvZmlsZXItb3V0cHV0IHNob3VsZCBiZSBh
YmxlIHRvIHByaW50IGRpc2Fzc2VtYmx5IGZvciB0aGUgRlRMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGE2YTRl
ZGY4OTc1MDc1ZDU5OTQxNzQ4ZGFmOTAzNDlkNjdkYjFjOWMuLmRmNjVjYjYzNjFmNGFiMDVhMDU1
MGUzMGUzNGE4NTc3OWFlZGFmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC01NDksNiArNTQ5LDY2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZXh0cjw2ND4oZCwgbiwgbSwgbHNiLm1fdmFsdWUp
OwogICAgIH0gCiAKKyAgICB2b2lkIGFkZExlZnRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0
ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92
YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBS
ZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3Vu
dC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKFJl
Z2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklE
IGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxl
cjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRMZWZ0U2hpZnQ2
NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0
ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkLCBuLCBtLCBBc3Nl
bWJsZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkUmlnaHRT
aGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBS
ZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KGQsIG4sIG0s
IEFzc2VtYmxlcjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRV
bnNpZ25lZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZElt
bTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViTGVmdFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0
ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU0wsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YlJpZ2h0U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwg
VHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOwor
ICAgIH0KKworICAgIHZvaWQgc3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBS
ZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3Vu
dC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YkxlZnRTaGlmdDY0KFJlZ2lzdGVySUQg
biwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBh
bW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJSaWdodFNoaWZ0NjQoUmVnaXN0
ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yjw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpB
U1IsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRT
aGlmdDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBS
ZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0s
IEFzc2VtYmxlcjo6TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBjbGVh
ckJpdDY0KFJlZ2lzdGVySUQgYml0VG9DbGVhciwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklE
IHNjcmF0Y2hGb3JNYXNrID0gSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIGlmIChzY3Jh
dGNoRm9yTWFzayA9PSBJbnZhbGlkR1BSUmVnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCBiMGJiMTI4NmZjZmFhOTg0MGY4NjA3ZTNiZjI5MzBk
MDk5YjM4NjVmLi4zZmQ2OWU4NDE1YWU3NmE2YmFhZjgwMTVjYmZkOTkzMDc2MzIxZWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTY0MCw2
ICsxNjQwLDMxOCBAQCB2b2lkIHRlc3RFeHRyYWN0UmVnaXN0ZXI2NCgpCiAgICAgICAgIH0KICAg
ICB9CiB9CisKK3ZvaWQgdGVzdEFkZExlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJf
dD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0
byBhZGQzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAg
IGppdC5hZGRMZWZ0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgbGhzID0g
aW52b2tlPGludDMyX3Q+KGFkZDMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJo
cyA9IG4gKyAobSA8PCBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkUmln
aHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMx
IH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBhZGQzMiA9IGNvbXBpbGUoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRSaWdodFNoaWZ0MzIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShq
aXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihhZGQzMiwg
biwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuICsgKG0gPj4gYW1vdW50KTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sK
KyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAo
YXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgewor
ICAgICAgICAgICAgICAgIGF1dG8gYWRkMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKwor
ICAgICAgICAgICAgICAgICAgICBqaXQuYWRkVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCBsaHMgPSBpbnZva2U8dWludDMyX3Q+KGFkZDMyLCBuLCBt
KTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bikgKyAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAg
ICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFt
b3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRk
NjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkTGVmdFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9r
ZTxpbnQ2NF90PihhZGQ2NCwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBu
ICsgKG0gPDwgYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hp
ZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9Owor
ICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBt
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gYWRkNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUmlnaHRTaGlmdDY0KEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsK
KyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0p
OworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiArIChtID4+IGFtb3VudCk7CisgICAg
ICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAg
VmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8g
biA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGFkZDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1v
dW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgdWludDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihhZGQ2NCwgbiwgbSk7Cisg
ICAgICAgICAgICAgICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pICsg
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENI
RUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCB0ZXN0U3ViTGVmdFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRz
ID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9y
IChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjMyID0g
Y29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1Ykxl
ZnRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAg
ICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50MzJfdCBsaHMgPSBpbnZva2U8aW50
MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDMyX3QgcmhzID0gbiAtICht
IDw8IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0MzIo
KQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBm
b3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YlJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1
bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFt
b3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgICAgIGludDMyX3QgbGhzID0gaW52b2tlPGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IHJocyA9IG4gLSAobSA+PiBhbW91bnQpOworICAgICAgICAg
ICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rv
cjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBzdWIzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdC5zdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxocyA9IGludm9rZTx1aW50MzJfdD4oc3ViMzIsIG4sIG0pOworICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHJocyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSAtIChzdGF0
aWNfY2FzdDx1aW50MzJfdD4obSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
UShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdFN1YkxlZnRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsg
MCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBzdWI2NCA9IGNvbXBp
bGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5zdWJMZWZ0U2hp
ZnQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+
KHN1YjY0LCBuLCBtKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gLSAobSA8PCBh
bW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDY0KCkKK3sK
KyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChh
dXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBzdWI2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgICAgICAgICAgICAgIGppdC5zdWJSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQp
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKwor
ICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAg
ICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
ICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAg
ICAgICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAg
ICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAg
IGF1dG8gc3ViNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAg
ICAgICBqaXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAg
ICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAg
ICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1
aW50NjRfdCBsaHMgPSBpbnZva2U8dWludDY0X3Q+KHN1YjY0LCBuLCBtKTsKKyAgICAgICAgICAg
ICAgICB1aW50NjRfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obikgLSAoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhz
LCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQogI2VuZGlmCiAKICNp
ZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBAIC0zODc4LDYgKzQxOTAs
MTkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FG
RVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RFeHRyYWN0U2lnbmVkQml0ZmllbGQ2NCgpKTsKICAg
ICBSVU4odGVzdEV4dHJhY3RSZWdpc3RlcjMyKCkpOwogICAgIFJVTih0ZXN0RXh0cmFjdFJlZ2lz
dGVyNjQoKSk7CisKKyAgICBSVU4odGVzdEFkZExlZnRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0
QWRkUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0MzIo
KSk7CisgICAgUlVOKHRlc3RBZGRMZWZ0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFJpZ2h0
U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOworICAg
IFJVTih0ZXN0U3ViTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJSaWdodFNoaWZ0MzIo
KSk7CisgICAgUlVOKHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBSVU4odGVz
dFN1YkxlZnRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViUmlnaHRTaGlmdDY0KCkpOworICAg
IFJVTih0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShB
Uk02NEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDQ3
MGQ4YjUyODM2Y2IyNDUzOTA1MTRmYWQ5NDZhNDVmNWQ1M2VmZTYuLjhhNmVkMzY1YzdkMzczN2Y3
OWI2OTIwZDM4MDQ0ODNlOTQwYWY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCkBAIC0yNTY4LDEyICsyNTY4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
Rm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRt
cCkgCiAgICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5k
MzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSk7CiAgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTXVsdGlw
bHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgIGlm
IChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCwgQXJnOjpUbXApKSB7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVl
LT5jaGlsZCgwKTsKLSAgICAgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGls
ZCgxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltbShyaWdodCkgfHwgbV92YWx1ZVRvVG1wW3Jp
Z2h0XSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1
ZSogdikgLT4gYm9vbCB7IAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgp
ICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKQEAgLTI1OTQsNyArMjU5NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVmdC0+
Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlSaWdodCA9
IGxlZnQtPmNoaWxkKDEpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQg
PSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsgYQorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U01BRERMOiBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG11bHRpcGx5QWRkT3Bjb2RlID09IE11bHRpcGx5QWRkNjQgJiYgdHJ5U0V4dDMy
KG11bHRpcGx5TGVmdCkgJiYgdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAK
QEAgLTI2MTcsMTYgKzI2MTgsNTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91
YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5j
aGlsZCgxKSk7CisgICAgICAgICAgICAvLyBhZGQtYW5kLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBT
aGlmdFR5cGUgYW1vdW50KQorICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6
QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0
NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFk
ZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpT
aHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2ln
bmVkUmlnaHRTaGlmdDMyLCBBZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgp
KTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QWlyOjpOb3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgYXV0byB0cnlBcHBlbmRBZGRBbmRTaGlmdCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiBy
aWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5
T3Bjb2RlKHJpZ2h0LT5vcGNvZGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkgCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIWNhbkJl
SW50ZXJuYWwocmlnaHQpIHx8ICFpbW0ocmlnaHQtPmNoaWxkKDEpKSB8fCByaWdodC0+Y2hpbGQo
MSktPmFzSW50KCkgPCAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgICAgICAgICB1aW50NjRfdCBhbW91bnQgPSByaWdodC0+Y2hpbGQoMSktPmFzSW50KCk7
CisgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YXNpemUgPSBtX3ZhbHVlLT50eXBlKCkgPT0g
SW50MzIgPyAzMiA6IDY0OworICAgICAgICAgICAgICAgIGlmIChhbW91bnQgPj0gZGF0YXNpemUp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGFw
cGVuZChvcGNvZGUsIHRtcChsZWZ0KSwgdG1wKHJpZ2h0LT5jaGlsZCgwKSksIGltbShyaWdodC0+
Y2hpbGQoMSkpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFs
KHJpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgIGlmICh0cnlBcHBlbmRBZGRBbmRTaGlmdChsZWZ0LCByaWdodCkgfHwgdHJ5
QXBwZW5kQWRkQW5kU2hpZnQocmlnaHQsIGxlZnQpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIEFkZEZs
b2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBTdWI6IHsKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0g
bV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5j
aGlsZCgxKTsKKwogICAgICAgICAgICAgQWlyOjpPcGNvZGUgbXVsdGlwbHlTdWJPcGNvZGUgPSB0
cnlPcGNvZGVGb3JUeXBlKE11bHRpcGx5U3ViMzIsIE11bHRpcGx5U3ViNjQsIG1fdmFsdWUtPnR5
cGUoKSk7CiAgICAgICAgICAgICBpZiAobXVsdGlwbHlTdWJPcGNvZGUgIT0gQWlyOjpPb3BzCiAg
ICAgICAgICAgICAgICAgJiYgaXNWYWxpZEZvcm0obXVsdGlwbHlTdWJPcGNvZGUsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewotICAgICAgICAgICAgICAgIFZhbHVl
KiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIHJpZ2h0
ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9
IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bj
b2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY3NSw3ICsyNzExLDQxIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIz
MiwgU3ViNjQsIFN1YkRvdWJsZSwgU3ViRmxvYXQ+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVl
LT5jaGlsZCgxKSk7CisgICAgICAgICAgICAvLyBzdWItYW5kLXNoaWZ0IFBhdHRlcm46IG4gLSAo
bSBTaGlmdFR5cGUgYW1vdW50KQorICAgICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpT
Qzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKG9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2hsOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShTdWJMZWZ0U2hpZnQzMiwgU3ViTGVmdFNo
aWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2RlRm9yVHlwZShTdWJSaWdodFNoaWZ0MzIs
IFN1YlJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNl
IFpTaHI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlVu
c2lnbmVkUmlnaHRTaGlmdDMyLCBTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQWlyOjpOb3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgYXV0byB0cnlBcHBlbmRTdWJBbmRTaGlmdCA9IFsmXSAoKSAtPiBib29sIHsKKyAgICAg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGUocmlnaHQtPm9wY29kZSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFy
Zzo6SW1tLCBBcmc6OkltbSwgQXJnOjpUbXApKSAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChyaWdodCkgfHwgIWlt
bShyaWdodC0+Y2hpbGQoMSkpIHx8IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGFtb3VudCA9IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50
NjRfdCBkYXRhc2l6ZSA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAg
ICAgICAgICAgICAgaWYgKGFtb3VudCA+PSBkYXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQp
LCB0bXAocmlnaHQtPmNoaWxkKDApKSwgaW1tKHJpZ2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVl
KSk7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFw
cGVuZFN1YkFuZFNoaWZ0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBhcHBlbmRCaW5PcDxTdWIzMiwgU3ViNjQsIFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBkNDdmYTNlY2IzOGIyNjE0
NTVkNjkwNWE0NjlmZjc4NGMxZmFmOTUxLi4wNWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDczZWMzN2Nj
MDU4YmUxZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9w
Y29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMKQEAgLTg3Miw2ICs4NzIsNDIgQEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3RlcjMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXI2NCBV
Okc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKICAgICBUbXAsIFRtcCwgSW1tLCBUbXAKIAor
YXJtNjQ6IEFkZExlZnRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAg
ICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBB
ZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisg
ICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6
Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFk
ZFJpZ2h0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRt
cCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpH
OjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3Vi
TGVmdFNoaWZ0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1w
LCBJbW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6
MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVk
UmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRt
cCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YkxlZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6
NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlm
dDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRt
cAorCithcm02NDogU3ViVW5zaWduZWRSaWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2
NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQg
aXMgcmF4LgogIyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFu
IHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9m
IHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmlu
ZGV4IDc0NDU0YTBiYjdjZDIzZDI2NjgyODg2OGMzNDQ4NGZkYzlmYTI1Y2IuLmI3ZDFkZjAzNmM5
ODA5NjQ4OGZmMmI1ZmViZjQ3YzY2Y2FiOGIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmgKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAi
UHVyZU5hTi5oIgogI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHJlZ2V4PgogI2luY2x1ZGUg
PHN0cmluZz4KICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9JbmRleFNl
dC5oPgpAQCAtMjQ0LDExICsyNDUsMTMgQEAgdm9pZCBjaGVja0Rpc2Fzc2VtYmx5KENvbXBpbGF0
aW9uJiBjb21waWxhdGlvbiwgY29uc3QgRnVuYyYgZnVuYywgY29uc3QgQ1N0cmluZyYKICAgICBD
UkFTSCgpOwogfQogCi1pbmxpbmUgdm9pZCBjaGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxhdGlv
biYgY29tcGlsYXRpb24sIGNvbnN0IGNoYXIqIHRleHQpCitpbmxpbmUgdm9pZCBjaGVja1VzZXNJ
bnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNoYXIqIHRleHQsIGJv
b2wgcmVnZXggPSBmYWxzZSkKIHsKICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICBjb21w
aWxhdGlvbiwKICAgICAgICAgWyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7
CisgICAgICAgICAgICBpZiAocmVnZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cmVn
ZXhfbWF0Y2goZGlzYXNzZW1ibHksIHN0ZDo6cmVnZXgodGV4dCwgc3RkOjpyZWdleDo6ZXh0ZW5k
ZWQpKTsKICAgICAgICAgICAgIHJldHVybiBzdHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOwogICAg
ICAgICB9LAogICAgICAgICB0b0NTdHJpbmcoIkV4cGVjdGVkIHRvIGZpbmQgIiwgdGV4dCwgIiBi
dXQgZGlkbnQhIikpOwpAQCAtNDQ4LDYgKzQ1MSwxOCBAQCB2b2lkIHRlc3RCaXRBbmRaZXJvU2hp
ZnRSaWdodEFyZ0ltbU1hc2szMigpOwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJ
bW1NYXNrNjQoKTsKIHZvaWQgdGVzdEJhc2ljU2VsZWN0KCk7CiB2b2lkIHRlc3RTZWxlY3RUZXN0
KCk7Cit2b2lkIHRlc3RBZGRMZWZ0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkUmlnaHRTaGlmdDMy
KCk7Cit2b2lkIHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkTGVm
dFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQ2NCgpOwordm9pZCB0ZXN0QWRkVW5z
aWduZWRSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDMyKCk7Cit2b2lkIHRl
c3RTdWJSaWdodFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCk7
Cit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQ2NCgpOwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDY0KCk7
Cit2b2lkIHRlc3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpOwogdm9pZCB0ZXN0U2VsZWN0Q29t
cGFyZURvdWJsZSgpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0LCBmbG9hdCk7
CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZShmbG9hdCwgZmxvYXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggODgwNDVmMTVkY2VhNGYwMmQxZDEx
YjkyYTAyM2I0ZmI3ZTAxYjYwZS4uODRmZWIxNzIzMWZmMzZmYjhlNjI0MTJmMzJhOGYyNWE2NjA3
MDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC00MTE5LDYgKzQx
MTksNDg2IEBAIHZvaWQgdGVzdEV4dHJhY3RSZWdpc3RlcjY0KCkKICAgICB9CiB9CiAKK3ZvaWQg
dGVzdEFkZExlZnRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsg
MCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPDwgYW1vdW50
KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1v
dW50KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFt
b3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmFkZC4qLC4qLC4qLC4qbHNsICMiKTsKKyAgICAgICAgICAg
IHJlZ2V4ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisK
KyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVy
YW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8IGFt
b3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RB
ZGRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAx
NywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisg
ICAgYXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQp
IC0+IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1v
dW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIHJlZ2V4KCIuKmFkZC4qLC4qLC4qLC4qYXNyICMiKTsKKyAgICAgICAgICAgIHJl
Z2V4ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAg
ICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8g
YW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5k
LnZhbHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAg
ICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3Vu
dCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRV
bnNpZ25lZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0g
eyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91
bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBuLCB1aW50MzJfdCBtLCB1aW50MzJf
dCBhbW91bnQpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUq
IG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFs
dWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAg
ICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLiphZGQuKiwuKiwuKiwuKmxzciAjIik7CisgICAg
ICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQzMl90PigqY29kZSwgbiwgbSk7Cisg
ICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3Qg
biA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG0gPSBtT3BlcmFu
ZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4g
KyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCB0ZXN0QWRkTGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRz
ID0geyAwLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA8PCBh
bW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50MzJf
dCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hp
ZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgbVZh
bHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUp
KTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYg
KGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qYWRkLiosLios
LiosLipsc2wgIyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50
KSArICIuKiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXgu
Y19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90
PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAg
ICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50
NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChu
LCBtLCBhbW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9y
PGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJu
OiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3Qgbiwg
aW50NjRfdCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBt
VmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisg
ICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
U2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBu
VmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcg
cmVnZXgoIi4qYWRkLiosLiosLiosLiphc3IgIyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3Rk
Ojp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0
byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJh
bmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBh
bW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7Cisg
ICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAg
ICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFVuc2lnbmVkUmln
aHRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAz
MSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBh
dXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IG4sIHVpbnQ2NF90IG0sIHVpbnQzMl90IGFtb3VudCkg
LT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1v
dW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0
KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmFkZC4qLC4qLC4qLC4qbHNy
ICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioi
OworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCks
IHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDY0X3Q+KCpjb2Rl
LCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5k
cygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAg
ICB1aW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgdWludDY0X3Qg
bSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwg
YW1vdW50KSwgbiArIChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIHRlc3RTdWJMZWZ0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPGludDMy
X3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0g
biAtIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJf
dCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3Vu
dFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
KSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmxzbCAj
Iik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsK
KyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0
cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBu
LCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBp
bnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBt
T3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3Vu
dCksIG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0U3ViUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4g
YW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0g
KG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0s
IGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFs
dWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAg
VmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAg
ICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3VudFZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7
CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmFzciAjIik7
CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsKKyAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVl
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBuLCBt
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBtT3Bl
cmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3VudCks
IG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCB0ZXN0U3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rvcjx1aW50
MzJfdD4gYW1vdW50cyA9IHsgMCwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQg
PSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDMyX3QgbiwgdWlu
dDMyX3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVl
LCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlz
QVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qc3ViLiosLiosLios
Lipsc3IgIyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSAr
ICIuKiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19z
dHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludm9rZTx1aW50MzJfdD4o
KmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChu
LCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YkxlZnRTaGlmdDY0KCkKK3sKKyAgICBWZWN0b3I8
aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46
IGQgPSBuIC0gKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBp
bnQ2NF90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAg
ICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNo
bCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJl
Z2V4KCIuKnN1Yi4qLC4qLC4qLC4qbHNsICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6
dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8g
bk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5k
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAg
ICAgICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtIDw8IGFtb3VudCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJSaWdodFNoaWZ0NjQo
KQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKworICAg
IC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0g
WyZdIChpbnQ2NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3Qgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSog
YW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAg
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKnN1Yi4qLC4qLC4qLC4qYXNyICMiKTsKKyAgICAgICAg
ICAgIHJlZ2V4ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07
CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5P
cGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVl
OworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+
IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RTdWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91
bnRzID0geyAwLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gLSAobSA+
PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50NjRfdCBuLCB1aW50NjRfdCBtLCB1
aW50MzJfdCBhbW91bnQpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFs
dWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFs
dWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdp
bigpLCBtVmFsdWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hp
ZnRWYWx1ZSkpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipz
dWIuKiwuKiwuKiwuKmxzciAjIik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmlu
ZyhhbW91bnQpICsgIi4qIjsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tl
PHVpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFu
ZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2
NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7
CisgICAgICAgICAgICAgICAgdWludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVD
S19FUSh0ZXN0KG4sIG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRB
cmdJbW1NYXNrMzIoKQogewogICAgIC8vIFR1cm4gdGhpczogKHRtcCA+PiBpbW0pICYgbWFzayAK
QEAgLTUwMjcsNiArNTUwNywxOCBAQCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRl
ciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU4odGVz
dEluc2VydFNpZ25lZEJpdGZpZWxkSW5aZXJvNjQoKSk7CiAgICAgUlVOKHRlc3RFeHRyYWN0U2ln
bmVkQml0ZmllbGQzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RTaWduZWRCaXRmaWVsZDY0KCkp
OworICAgIFJVTih0ZXN0QWRkTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRSaWdodFNo
aWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRVbnNpZ25lZFJpZ2h0U2hpZnQzMigpKTsKKyAgICBS
VU4odGVzdEFkZExlZnRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0QWRkUmlnaHRTaGlmdDY0KCkp
OworICAgIFJVTih0ZXN0QWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RT
dWJMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdFN1YlJpZ2h0U2hpZnQzMigpKTsKKyAgICBS
VU4odGVzdFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0U3ViTGVmdFNo
aWZ0NjQoKSk7CisgICAgUlVOKHRlc3RTdWJSaWdodFNoaWZ0NjQoKSk7CisgICAgUlVOKHRlc3RT
dWJVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZFplcm9TaGlmdFJp
Z2h0QXJnSW1tTWFzazMyKCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJ
bW1NYXNrNjQoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29u
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29u
CmluZGV4IDU5ZTcwODEwZGUxYjdiOTllMjY4M2JlZWFiOTg0YmQ1ZTg2MjMxYjQuLmJkZGVlOTU1
YTFkNDhjMjBkZWE3OWE3MjczODRjNjU4NzJmMTJiNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KQEAgLTU5Njks
MTUgKzU5NjksNiBAQAogICAgICAgICAgInlpLjQuc2hlbkBub2tpYS5jb20iCiAgICAgICBdCiAg
ICB9LAotICAgIllpamlhIEh1YW5nIiA6IHsKLSAgICAgICJlbWFpbHMiIDogWwotICAgICAgICAg
InlpamlhX2h1YW5nQGFwcGxlLmNvbSIKLSAgICAgIF0sCi0gICAgICAibmlja3MiIDogWwotICAg
ICAgICAgInlpamlhIgotICAgICAgXSwKLSAgICAgICJzdGF0dXMiIDogImNvbW1pdHRlciIKLSAg
IH0sCiAgICAiWW9hdiBXZWlzcyIgOiB7CiAgICAgICAiZW1haWxzIiA6IFsKICAgICAgICAgICJ5
b2F2QHlvYXYud3MiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433188</attachid>
            <date>2021-07-08 17:19:21 -0700</date>
            <delta_ts>2021-07-08 22:55:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227509-20210708191920.patch</filename>
            <type>text/plain</type>
            <size>49961</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDc5MTRhNzhlZTE1ZmE2NzY5NWNiOTA1ZmFjNzc2MGExNWUwMjUwLi5kM2U2MmU3ZWZlZTBiZjJi
MTUwZjhhODM1NjAyZmY4OTIxMDUxY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAyMS0wNy0wOCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0
IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdHdvIG1vZGlmaWNh
dGlvbnM6CisgICAgICAgICAgICAxLiBBZGQgYWRkL3N1Yi13aXRoLXNoaWZ0IHRvIEFpciBvcGNv
ZGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHBhdHRlcm4gbWF0Y2ggZm9yIAorICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLgorICAgICAgICAgICAgMi4gTWlub3IgZml4IGluIGRp
c2Fzc2VtYmxlci4KKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgICAg
ICBhZGQvc3ViIFJkLCBSbiwgUm0sIFNoaWZ0VHlwZSwgYW1vdW50CisKKyAgICAgICAgQUREL1NV
QiAoc2hpZnRlZCByZWdpc3RlciksIGFkZHMvc3VicyBhIHJlZ2lzdGVyIHZhbHVlIFJuIGFuZCBh
biBvcHRpb25hbGx5LXNoaWZ0ZWQgcmVnaXN0ZXIgCisgICAgICAgIHZhbHVlIFJtLCBhbmQgd3Jp
dGVzIHRoZSByZXN1bHQgdG8gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIFJkLiBUaGUgaW5zdHJ1
Y3Rpb24gc2VsZWN0b3IgCisgICAgICAgIGNhbiB1dGlsaXplIHRoaXMgdG8gbG93ZXJpbmcgY2Vy
dGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0aW1pemF0aW9uLiAK
KworICAgICAgICBUaGUgZXF1aXZhbGVudCBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgICAg
ICBkID0gbiArLy0gKG0gU2hpZnRUeXBlIGFtb3VudCkKKworICAgICAgICBHaXZlbiBCMyBJUjoK
KyAgICAgICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBBcmd1
bWVudFJlZygleDEpCisgICAgICAgIEludCBAMiA9IGFtb3VudAorICAgICAgICBJbnQgQDMgPSBa
U2hyKEAxLCBAMikKKyAgICAgICAgSW50IEA0ID0gQWRkL1N1YihAMCwgQDMpCisgICAgICAgIFZv
aWRANSA9IFJldHVybihANCwgVGVybWluYWwpCisKKyAgICAgICAgLy8gT2xkIG9wdGltaXplZCBB
SVIKKyAgICAgICAgU2hpZnQgICAleDEsIGFtb3VudCwgJXgxLCBAMworICAgICAgICBBZGQvU3Vi
ICV4MCwgICAgJXgxLCAleDAsIEA0CisgICAgICAgIFJldCAgICAgJXgwLCAgICAgICAgICAgICAg
QDUKKworICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBBZGQoU3ViKVNoaWZ0
ICV4MCwgJXgxLCBhbW91bnQsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAgICAgICAleDAsICAg
ICAgICAgICAgICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRMZWZ0U2hpZnQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFJpZ2h0U2hpZnQzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmFkZFVuc2lnbmVkUmlnaHRTaGlm
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YWRkTGVmdFNoaWZ0NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRSaWdodFNoaWZ0NjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRVbnNpZ25lZFJpZ2h0U2hpZnQ2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YkxlZnRTaGlmdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViUmlnaHRTaGlmdDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3ViVW5zaWduZWRSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdWJMZWZ0U2hpZnQ2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlJpZ2h0U2hpZnQ2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0QWRk
V2l0aExlZnRTaGlmdDMyKToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIp
OgorICAgICAgICAoSlNDOjp0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKToKKyAgICAg
ICAgKEpTQzo6dGVzdEFkZFdpdGhMZWZ0U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RBZGRX
aXRoUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0
U2hpZnQ2NCk6CisgICAgICAgIChKU0M6OnRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIpOgorICAgICAg
ICAoSlNDOjp0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMik6CisgICAgICAgIChKU0M6OnRlc3RTdWJX
aXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAoSlNDOjp0ZXN0U3ViV2l0aExlZnRT
aGlmdDY0KToKKyAgICAgICAgKEpTQzo6dGVzdFN1YldpdGhSaWdodFNoaWZ0NjQpOgorICAgICAg
ICAoSlNDOjp0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKiBiMy9C
M0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAg
ICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKGNoZWNrVXNlc0luc3RydWN0aW9uKToKKyAg
ICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0QWRkV2l0aExlZnRTaGlmdDMy
KToKKyAgICAgICAgKHRlc3RBZGRXaXRoUmlnaHRTaGlmdDMyKToKKyAgICAgICAgKHRlc3RBZGRX
aXRoVW5zaWduZWRSaWdodFNoaWZ0MzIpOgorICAgICAgICAodGVzdEFkZFdpdGhMZWZ0U2hpZnQ2
NCk6CisgICAgICAgICh0ZXN0QWRkV2l0aFJpZ2h0U2hpZnQ2NCk6CisgICAgICAgICh0ZXN0QWRk
V2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoTGVmdFNoaWZ0
MzIpOgorICAgICAgICAodGVzdFN1YldpdGhSaWdodFNoaWZ0MzIpOgorICAgICAgICAodGVzdFN1
YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMik6CisgICAgICAgICh0ZXN0U3ViV2l0aExlZnRTaGlm
dDY0KToKKyAgICAgICAgKHRlc3RTdWJXaXRoUmlnaHRTaGlmdDY0KToKKyAgICAgICAgKHRlc3RT
dWJXaXRoVW5zaWduZWRSaWdodFNoaWZ0NjQpOgorICAgICAgICAoYWRkQml0VGVzdHMpOgorICAg
ICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcDoKKyAgICAgICAgKiBkaXNh
c3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2Vt
Ymxlcjo6QTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyOjppbW1lZGlhdGU2KToK
KyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2dpY2FsU2hpZnRl
ZFJlZ2lzdGVyOjppbW1lZGlhdGU2KToKKwogMjAyMS0wNy0wOCAgS2VpdGggTWlsbGVyICA8a2Vp
dGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCBz
aG91bGQgYmUgYWJsZSB0byBwcmludCBkaXNhc3NlbWJseSBmb3IgdGhlIEZUTApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCBhNmE0ZWRmODk3NTA3NWQ1OTk0MTc0OGRhZjkwMzQ5ZDY3ZGIxYzljLi5kZjY1Y2I2MzYx
ZjRhYjA1YTA1NTBlMzBlMzRhODU3NzlhZWRhZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNTQ5LDYgKzU0
OSw2NiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmV4dHI8NjQ+KGQsIG4sIG0sIGxz
Yi5tX3ZhbHVlKTsKICAgICB9IAogCisgICAgdm9pZCBhZGRMZWZ0U2hpZnQzMihSZWdpc3RlcklE
IG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTTCwg
YW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkUmlnaHRTaGlmdDMyKFJlZ2lz
dGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6
QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRVbnNpZ25lZFJpZ2h0
U2hpZnQzMihSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwg
UmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyPihkLCBuLCBt
LCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRk
TGVmdFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91
bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZCwg
biwgbSwgQXNzZW1ibGVyOjpMU0wsIGFtb3VudC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFkZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkFTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAg
IHZvaWQgYWRkVW5zaWduZWRSaWdodFNoaWZ0NjQoUmVnaXN0ZXJJRCBuLCBSZWdpc3RlcklEIG0s
IFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZDw2ND4oZCwgbiwgbSwgQXNzZW1ibGVyOjpMU1IsIGFtb3VudC5tX3ZhbHVlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YkxlZnRTaGlmdDMyKFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJ
RCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6TFNMLCBhbW91bnQubV92YWx1
ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJSaWdodFNoaWZ0MzIoUmVnaXN0ZXJJRCBuLCBSZWdp
c3RlcklEIG0sIFRydXN0ZWRJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZCwgbiwgbSwgQXNzZW1ibGVyOjpBU1IsIGFtb3VudC5t
X3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyKFJlZ2lz
dGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGQp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGQsIG4sIG0sIEFzc2VtYmxlcjo6
TFNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJMZWZ0U2hpZnQ2NChS
ZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJ
RCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkLCBuLCBtLCBBc3NlbWJs
ZXI6OkxTTCwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgc3ViUmlnaHRTaGlm
dDY0KFJlZ2lzdGVySUQgbiwgUmVnaXN0ZXJJRCBtLCBUcnVzdGVkSW1tMzIgYW1vdW50LCBSZWdp
c3RlcklEIGQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGQsIG4sIG0sIEFz
c2VtYmxlcjo6QVNSLCBhbW91bnQubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJVbnNp
Z25lZFJpZ2h0U2hpZnQ2NChSZWdpc3RlcklEIG4sIFJlZ2lzdGVySUQgbSwgVHJ1c3RlZEltbTMy
IGFtb3VudCwgUmVnaXN0ZXJJRCBkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0
PihkLCBuLCBtLCBBc3NlbWJsZXI6OkxTUiwgYW1vdW50Lm1fdmFsdWUpOworICAgIH0KKwogICAg
IHZvaWQgY2xlYXJCaXQ2NChSZWdpc3RlcklEIGJpdFRvQ2xlYXIsIFJlZ2lzdGVySUQgZGVzdCwg
UmVnaXN0ZXJJRCBzY3JhdGNoRm9yTWFzayA9IEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAg
ICBpZiAoc2NyYXRjaEZvck1hc2sgPT0gSW52YWxpZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYjBiYjEyODZmY2ZhYTk4NDBmODYw
N2UzYmYyOTMwZDA5OWIzODY1Zi4uZDI5ZjkzNjBhMzY3ZDBhMTEzNjNlODdiODU2OTNlNTg0ZjNl
N2VhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
QEAgLTE2NDAsNiArMTY0MCwzMTggQEAgdm9pZCB0ZXN0RXh0cmFjdFJlZ2lzdGVyNjQoKQogICAg
ICAgICB9CiAgICAgfQogfQorCit2b2lkIHRlc3RBZGRXaXRoTGVmdFNoaWZ0MzIoKQoreworICAg
IFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8g
biA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGFkZDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmFkZExlZnRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAg
aW50MzJfdCBsaHMgPSBpbnZva2U8aW50MzJfdD4oYWRkMzIsIG4sIG0pOworICAgICAgICAgICAg
ICAgIGludDMyX3QgcmhzID0gbiArIChtIDw8IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hF
Q0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1v
dW50cyA9IHsgMCwgMTcsIDMxIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBhZGQz
MiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9r
ZTxpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBu
ICsgKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhVbnNp
Z25lZFJpZ2h0U2hpZnQzMigpCit7CisgICAgVmVjdG9yPHVpbnQzMl90PiBhbW91bnRzID0geyAw
LCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRv
IGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZDMyID0gY29tcGls
ZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFVuc2lnbmVk
UmlnaHRTaGlmdDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAg
ICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAg
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgdWludDMyX3QgbGhzID0gaW52b2tl
PHVpbnQzMl90PihhZGQzMiwgbiwgbSk7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmhzID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG4pICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtKSA+PiBh
bW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0QWRkV2l0aExlZnRTaGlmdDY0KCkK
K3sKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9y
IChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2
NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7
CisgICAgICAgICAgICAgICAgYXV0byBhZGQ2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwor
CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMZWZ0U2hpZnQ2NChHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3Vu
dCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAg
ICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KGFkZDY0LCBuLCBtKTsKKyAgICAg
ICAgICAgICAgICBpbnQ2NF90IHJocyA9IG4gKyAobSA8PCBhbW91bnQpOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0QWRkV2l0aFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPGludDMy
X3Q+IGFtb3VudHMgPSB7IDAsIDM0LCA2MyB9OworICAgIGZvciAoYXV0byBuIDogaW50NjRPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1
dG8gYWRkNjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAg
ICBqaXQuYWRkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJl
dCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMg
PSBpbnZva2U8aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0X3Qg
cmhzID0gbiArIChtID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCBy
aHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRX
aXRoVW5zaWduZWRSaWdodFNoaWZ0NjQoKQoreworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50
cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRvIG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgYXV0byBhZGQ2NCA9
IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBl
bWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRV
bnNpZ25lZFJpZ2h0U2hpZnQ2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9
IGludm9rZTx1aW50NjRfdD4oYWRkNjQsIG4sIG0pOworICAgICAgICAgICAgICAgIHVpbnQ2NF90
IHJocyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihuKSArIChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bSkgPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhMZWZ0U2hp
ZnQzMigpCit7CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9Owor
ICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBt
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQuc3ViTGVmdFNoaWZ0MzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhbW91bnQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IGxocyA9IGludm9rZTxpbnQzMl90PihzdWIzMiwgbiwgbSk7
CisgICAgICAgICAgICAgICAgaW50MzJfdCByaHMgPSBuIC0gKG0gPDwgYW1vdW50KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhSaWdodFNoaWZ0MzIoKQoreworICAgIFZlY3Rv
cjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAxNywgMzEgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN1YjMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnN1YlJpZ2h0U2hpZnQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFtb3VudCksIAorICAgICAg
ICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAg
IGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGludDMy
X3QgbGhzID0gaW52b2tlPGludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICBp
bnQzMl90IHJocyA9IG4gLSAobSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VR
KGxocywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sKKyAgICBWZWN0b3I8dWludDMyX3Q+
IGFtb3VudHMgPSB7IDAsIDE3LCAzMSB9OworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5k
cygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGF1dG8g
c3ViMzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBq
aXQuc3ViVW5zaWduZWRSaWdodFNoaWZ0MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAg
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBq
aXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJf
dCBsaHMgPSBpbnZva2U8dWludDMyX3Q+KHN1YjMyLCBuLCBtKTsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCByaHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgLSAoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG0pID4+IGFtb3VudCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRo
TGVmdFNoaWZ0NjQoKQoreworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwg
NjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3Ig
KGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3Vu
dCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YkxlZnRTaGlmdDY0KEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoYW1vdW50KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
aml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oc3ViNjQs
IG4sIG0pOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gbiAtIChtIDw8IGFtb3VudCk7
CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobGhzLCByaHMpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRoUmlnaHRTaGlmdDY0KCkKK3sKKyAg
ICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMCwgMzQsIDYzIH07CisgICAgZm9yIChhdXRv
IG4gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAg
ICAgICAgICAgICAgYXV0byBzdWI2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
eworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAg
ICAgICAgICAgICAgICAgIGppdC5zdWJSaWdodFNoaWZ0NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhbW91bnQpLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAg
ICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAg
ICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAg
ICAgICAgaW50NjRfdCByaHMgPSBuIC0gKG0gPj4gYW1vdW50KTsKKyAgICAgICAgICAgICAgICBD
SEVDS19FUShsaHMsIHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgdGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAgVmVjdG9yPHVp
bnQzMl90PiBhbW91bnRzID0geyAwLCAzNCwgNjMgfTsKKyAgICBmb3IgKGF1dG8gbiA6IGludDY0
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIHN1YjY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYW1vdW50KSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAg
dWludDY0X3QgbGhzID0gaW52b2tlPHVpbnQ2NF90PihzdWI2NCwgbiwgbSk7CisgICAgICAgICAg
ICAgICAgdWludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4pIC0gKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihtKSA+PiBhbW91bnQpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGxo
cywgcmhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgogCiAj
aWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMzg3OCw2ICs0MTkw
LDE5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NB
RkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQoKSk7CiAg
ICAgUlVOKHRlc3RFeHRyYWN0UmVnaXN0ZXIzMigpKTsKICAgICBSVU4odGVzdEV4dHJhY3RSZWdp
c3RlcjY0KCkpOworCisgICAgUlVOKHRlc3RBZGRXaXRoTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVO
KHRlc3RBZGRXaXRoUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkV2l0aFVuc2lnbmVk
UmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkV2l0aExlZnRTaGlmdDY0KCkpOworICAg
IFJVTih0ZXN0QWRkV2l0aFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFdpdGhVbnNp
Z25lZFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhMZWZ0U2hpZnQzMigpKTsK
KyAgICBSVU4odGVzdFN1YldpdGhSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJXaXRo
VW5zaWduZWRSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJXaXRoTGVmdFNoaWZ0NjQo
KSk7CisgICAgUlVOKHRlc3RTdWJXaXRoUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3Vi
V2l0aFVuc2lnbmVkUmlnaHRTaGlmdDY0KCkpOwogI2VuZGlmCiAKICNpZiBDUFUoQVJNNjRFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA0NzBkOGI1Mjgz
NmNiMjQ1MzkwNTE0ZmFkOTQ2YTQ1ZjVkNTNlZmU2Li4yYjU1NmQ3MTgzMzM3MjBiZmE3ODczYzc3
OWJkMjkxZmQxMjYxNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcApAQCAtMjU2MywxNyArMjU2MywxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5k
KHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBraW5kLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAo
bV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92
YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGls
ZCgxKTsKKwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRGb3JtKE11bHRpcGx5QWRkNjQsIEFy
Zzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSAKICAgICAgICAgICAgICAgICA9
PSBpc1ZhbGlkRm9ybShNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKTsKICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5
QWRkT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0
LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5
QWRkT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKLSAg
ICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwotICAgICAgICAg
ICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwogICAgICAgICAgICAgICAg
IGlmICghaW1tKHJpZ2h0KSB8fCBtX3ZhbHVlVG9UbXBbcmlnaHRdKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVy
bmFsKHYpKQpAQCAtMjU5NCw3ICsyNTk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBsZWZ0LT5jaGlsZCgwKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbGVmdC0+Y2hpbGQoMSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURETDogZCA9IFNFeHQzMihuKSAqICBTRXh0MzIo
bSkgKyBhCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikg
KiBTRXh0MzIobSkgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbHlBZGRP
cGNvZGUgPT0gTXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0MzIobXVsdGlwbHlMZWZ0KSAmJiB0cnlT
RXh0MzIobXVsdGlwbHlSaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmQoTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIApAQCAtMjYxNywxNiArMjYxOCw1MSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIEFkZEZsb2F0LCBDb21tdXRh
dGl2ZT4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAg
IC8vIGFkZC13aXRoLXNoaWZ0IFBhdHRlcm46IG4gKyAobSBTaGlmdFR5cGUgYW1vdW50KQorICAg
ICAgICAgICAgYXV0byB0cnlPcGNvZGUgPSBbJl0gKEpTQzo6QjM6Ok9wY29kZSBvcGNvZGUpIC0+
IEFpcjo6T3Bjb2RlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgU2hsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5T3Bjb2Rl
Rm9yVHlwZShBZGRMZWZ0U2hpZnQzMiwgQWRkTGVmdFNoaWZ0NjQsIG1fdmFsdWUtPnR5cGUoKSk7
CisgICAgICAgICAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ5T3Bjb2RlRm9yVHlwZShBZGRSaWdodFNoaWZ0MzIsIEFkZFJpZ2h0U2hpZnQ2NCwgbV92YWx1
ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKEFkZFVuc2lnbmVkUmlnaHRTaGlmdDMyLCBBZGRV
bnNpZ25lZFJpZ2h0U2hpZnQ2NCwgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpPb3BzOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kQWRk
QW5kU2hpZnQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAg
ICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZShyaWdodC0+b3Bjb2Rl
KCkpOworICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpIAorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKHJpZ2h0KSB8fCAh
aW1tKHJpZ2h0LT5jaGlsZCgxKSkgfHwgcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpIDwgMCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgdWludDY0
X3QgYW1vdW50ID0gcmlnaHQtPmNoaWxkKDEpLT5hc0ludCgpOworICAgICAgICAgICAgICAgIHVp
bnQ2NF90IGRhdGFzaXplID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gMzIgOiA2NDsKKyAg
ICAgICAgICAgICAgICBpZiAoYW1vdW50ID49IGRhdGFzaXplKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAobGVm
dCksIHRtcChyaWdodC0+Y2hpbGQoMCkpLCBpbW0ocmlnaHQtPmNoaWxkKDEpKSwgdG1wKG1fdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChyaWdodCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAodHJ5
QXBwZW5kQWRkQW5kU2hpZnQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZEFkZEFuZFNoaWZ0KHJp
Z2h0LCBsZWZ0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGFwcGVu
ZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KGxl
ZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2UgU3ViOiB7CisgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOwor
ICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKICAgICAgICAg
ICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5U3ViT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNdWx0
aXBseVN1YjMyLCBNdWx0aXBseVN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAg
aWYgKG11bHRpcGx5U3ViT3Bjb2RlICE9IEFpcjo6T29wcwogICAgICAgICAgICAgICAgICYmIGlz
VmFsaWRGb3JtKG11bHRpcGx5U3ViT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1w
LCBBcmc6OlRtcCkpIHsKLSAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNo
aWxkKDApOwotICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEp
OwogICAgICAgICAgICAgICAgIGF1dG8gdHJ5TXVsdGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBi
b29sIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2Fu
QmVJbnRlcm5hbCh2KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTI2NzUsNyArMjcxMSw0MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGUs
IFN1YkZsb2F0PihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAg
ICAgICAgLy8gc3ViLXdpdGgtc2hpZnQgUGF0dGVybjogbiAtIChtIFNoaWZ0VHlwZSBhbW91bnQp
CisgICAgICAgICAgICBhdXRvIHRyeU9wY29kZSA9IFsmXSAoSlNDOjpCMzo6T3Bjb2RlIG9wY29k
ZSkgLT4gQWlyOjpPcGNvZGUgeworICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBTaGw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnlP
cGNvZGVGb3JUeXBlKFN1YkxlZnRTaGlmdDMyLCBTdWJMZWZ0U2hpZnQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBjYXNlIFNTaHI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnlPcGNvZGVGb3JUeXBlKFN1YlJpZ2h0U2hpZnQzMiwgU3ViUmlnaHRTaGlmdDY0LCBt
X3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIGNhc2UgWlNocjoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUoU3ViVW5zaWduZWRSaWdodFNoaWZ0MzIs
IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDY0LCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byB0cnlBcHBl
bmRTdWJBbmRTaGlmdCA9IFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBBaXI6Ok9w
Y29kZSBvcGNvZGUgPSB0cnlPcGNvZGUocmlnaHQtPm9wY29kZSgpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OkltbSwg
QXJnOjpUbXApKSAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChyaWdodCkgfHwgIWltbShyaWdodC0+Y2hpbGQoMSkp
IHx8IHJpZ2h0LT5jaGlsZCgxKS0+YXNJbnQoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFtb3VudCA9IHJpZ2h0LT5j
aGlsZCgxKS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhc2l6ZSA9IG1f
dmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IDMyIDogNjQ7CisgICAgICAgICAgICAgICAgaWYgKGFt
b3VudCA+PSBkYXRhc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGxlZnQpLCB0bXAocmlnaHQtPmNoaWxk
KDApKSwgaW1tKHJpZ2h0LT5jaGlsZCgxKSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgY29tbWl0SW50ZXJuYWwocmlnaHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHRyeUFwcGVuZFN1YkFuZFNoaWZ0KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIz
MiwgU3ViNjQsIFN1YkRvdWJsZSwgU3ViRmxvYXQ+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcGNvZGUub3Bjb2RlcwppbmRleCBkNDdmYTNlY2IzOGIyNjE0NTVkNjkwNWE0NjlmZjc4NGMx
ZmFmOTUxLi4wNWRjM2E5ZmVjNDY5Njg0MDMxZDg4ZDczZWMzN2NjMDU4YmUxZjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg3Miw2
ICs4NzIsNDIgQEAgYXJtNjQ6IEV4dHJhY3RSZWdpc3RlcjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6
MzIsIFpEOkc6MzIKIGFybTY0OiBFeHRyYWN0UmVnaXN0ZXI2NCBVOkc6NjQsIFU6RzozMiwgVTpH
OjMyLCBEOkc6NjQKICAgICBUbXAsIFRtcCwgSW1tLCBUbXAKIAorYXJtNjQ6IEFkZExlZnRTaGlm
dDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBU
bXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCisgICAgVG1wLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBBZGRVbnNpZ25lZFJpZ2h0U2hp
ZnQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIEltbSwg
VG1wCisKK2FybTY0OiBBZGRMZWZ0U2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6
NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IEFkZFJpZ2h0U2hpZnQ2NCBVOkc6
NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJt
NjQ6IEFkZFVuc2lnbmVkUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2
NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViTGVmdFNoaWZ0MzIgVTpHOjMy
LCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02
NDogU3ViUmlnaHRTaGlmdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBU
bXAsIFRtcCwgSW1tLCBUbXAKKworYXJtNjQ6IFN1YlVuc2lnbmVkUmlnaHRTaGlmdDMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgSW1tLCBUbXAKKworYXJt
NjQ6IFN1YkxlZnRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRt
cCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViUmlnaHRTaGlmdDY0IFU6Rzo2NCwgVTpHOjY0
LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBJbW0sIFRtcAorCithcm02NDogU3ViVW5z
aWduZWRSaWdodFNoaWZ0NjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1w
LCBUbXAsIEltbSwgVG1wCisKICMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgogIyBGSVhNRTog
VGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUg
cHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCiAjIG9mIHRoaXMgd291bGQgYmUgT0sg
d2l0aCB0aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDc0NDU0YTBiYjdjZDIz
ZDI2NjgyODg2OGMzNDQ4NGZkYzlmYTI1Y2IuLjljN2QyOTk4ZTJhODkwZjVlZGU3MGViNmI5ZTBm
OTkxOTQ3ZmExMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTcxLDYgKzcxLDcg
QEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUHVyZU5hTi5oIgogI2luY2x1
ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHJlZ2V4PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRl
IDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgpAQCAtMjQ0LDExICsy
NDUsMTMgQEAgdm9pZCBjaGVja0Rpc2Fzc2VtYmx5KENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwg
Y29uc3QgRnVuYyYgZnVuYywgY29uc3QgQ1N0cmluZyYKICAgICBDUkFTSCgpOwogfQogCi1pbmxp
bmUgdm9pZCBjaGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNv
bnN0IGNoYXIqIHRleHQpCitpbmxpbmUgdm9pZCBjaGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxh
dGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNoYXIqIHRleHQsIGJvb2wgcmVnZXggPSBmYWxzZSkK
IHsKICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICBjb21waWxhdGlvbiwKICAgICAgICAg
WyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CisgICAgICAgICAgICBpZiAo
cmVnZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cmVnZXhfbWF0Y2goZGlzYXNzZW1i
bHksIHN0ZDo6cmVnZXgodGV4dCwgc3RkOjpyZWdleDo6ZXh0ZW5kZWQpKTsKICAgICAgICAgICAg
IHJldHVybiBzdHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOwogICAgICAgICB9LAogICAgICAgICB0
b0NTdHJpbmcoIkV4cGVjdGVkIHRvIGZpbmQgIiwgdGV4dCwgIiBidXQgZGlkbnQhIikpOwpAQCAt
NDQ4LDYgKzQ1MSwxOCBAQCB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2sz
MigpOwogdm9pZCB0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJbW1NYXNrNjQoKTsKIHZvaWQg
dGVzdEJhc2ljU2VsZWN0KCk7CiB2b2lkIHRlc3RTZWxlY3RUZXN0KCk7Cit2b2lkIHRlc3RBZGRX
aXRoTGVmdFNoaWZ0MzIoKTsKK3ZvaWQgdGVzdEFkZFdpdGhSaWdodFNoaWZ0MzIoKTsKK3ZvaWQg
dGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0QWRkV2l0aExlZnRT
aGlmdDY0KCk7Cit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlmdDY0KCk7Cit2b2lkIHRlc3RBZGRX
aXRoVW5zaWduZWRSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YldpdGhMZWZ0U2hpZnQzMigp
Owordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpOwordm9pZCB0ZXN0U3ViV2l0aFVuc2ln
bmVkUmlnaHRTaGlmdDMyKCk7Cit2b2lkIHRlc3RTdWJXaXRoTGVmdFNoaWZ0NjQoKTsKK3ZvaWQg
dGVzdFN1YldpdGhSaWdodFNoaWZ0NjQoKTsKK3ZvaWQgdGVzdFN1YldpdGhVbnNpZ25lZFJpZ2h0
U2hpZnQ2NCgpOwogdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpOwogdm9pZCB0ZXN0U2Vs
ZWN0Q29tcGFyZUZsb2F0KGZsb2F0LCBmbG9hdCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxv
YXRUb0RvdWJsZShmbG9hdCwgZmxvYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5j
cHAKaW5kZXggODgwNDVmMTVkY2VhNGYwMmQxZDExYjkyYTAyM2I0ZmI3ZTAxYjYwZS4uOGY2MGZj
YzRhNGEyZWYzNTQyZTY3NDFjMjUwYWU5Zjk4ZGI2ZGFiNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzIuY3BwCkBAIC00MTE5LDYgKzQxMTksNTEwIEBAIHZvaWQgdGVzdEV4dHJhY3RS
ZWdpc3RlcjY0KCkKICAgICB9CiB9CiAKK3ZvaWQgdGVzdEFkZFdpdGhMZWZ0U2hpZnQzMigpCit7
CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAg
IHJldHVybjsKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMTcsIDMxIH07CisK
KyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuICsgKG0gPDwgYW1vdW50KQorICAgIGF1dG8gdGVz
dCA9IFsmXSAoaW50MzJfdCBuLCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAg
ICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNo
bCwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgblZh
bHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJl
Z2V4KCIuKmFkZC4qLC4qLC4qLC4qbHNsICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6
dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8g
bk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5k
IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1v
dW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAg
ICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAg
IENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtIDw8IGFtb3VudCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRoUmlnaHRTaGlm
dDMyKCkKK3sKKyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikK
KyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAxLCAxNywg
MzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAobSA+PiBhbW91bnQpCisgICAg
YXV0byB0ZXN0ID0gWyZdIChpbnQzMl90IG4sIGludDMyX3QgbSwgaW50MzJfdCBhbW91bnQpIC0+
IGludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50
KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIHJlZ2V4KCIuKmFkZC4qLC4qLC4qLC4qYXNyICMiKTsKKyAgICAgICAgICAgIHJlZ2V4
ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBpbnZva2U8aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBm
b3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
IG1PcGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDMyX3QgbiA9IG5PcGVyYW5kLnZh
bHVlOworICAgICAgICAgICAgICAgIGludDMyX3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiArIChtID4+IGFtb3VudCkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RBZGRXaXRo
VW5zaWduZWRSaWdodFNoaWZ0MzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRC
M09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPHVpbnQzMl90PiBh
bW91bnRzID0geyAxLCAxNywgMzEgfTsKKworICAgIC8vIFRlc3QgUGF0dGVybjogZCA9IG4gKyAo
bSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBuLCB1aW50MzJfdCBt
LCB1aW50MzJfdCBhbW91bnQpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAg
VmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAg
ICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAg
ICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3Vu
dFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
KSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLiphZGQuKiwuKiwuKiwuKmxzciAj
Iik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsK
KyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0
cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPHVpbnQzMl90PigqY29kZSwg
biwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAg
dWludDMyX3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIHVpbnQzMl90IG0g
PSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFt
b3VudCksIG4gKyAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0QWRkV2l0aExlZnRTaGlmdDY0KCkKK3sKKyAgICBpZiAoSlNDOjpP
cHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIFZl
Y3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAxLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3QgUGF0
dGVybjogZCA9IG4gKyAobSA8PCBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2NF90
IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1
ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsK
KworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU2hsLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigp
LCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJp
bmcgcmVnZXgoIi4qYWRkLiosLiosLiosLipsc2wgIyIpOworICAgICAgICAgICAgcmVnZXggKz0g
c3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29kZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9w
ZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQg
OiBhbW91bnRzKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7
CisgICAgICAgICAgICAgICAgaW50NjRfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAg
ICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuICsgKG0gPDwgYW1vdW50KSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhSaWdo
dFNoaWZ0NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkg
PCAyKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMyX3Q+IGFtb3VudHMgPSB7IDEs
IDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkK
KyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDY0X3QgbiwgaW50NjRfdCBtLCBpbnQzMl90IGFtb3Vu
dCkgLT4gaW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBh
bW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKwor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qYWRkLiosLiosLiosLiph
c3IgIyIpOworICAgICAgICAgICAgcmVnZXggKz0gc3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIu
KiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIo
KSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludm9rZTxpbnQ2NF90PigqY29k
ZSwgbiwgbSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBuT3BlcmFuZCA6IGludDY0T3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbU9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBhbW91bnQgOiBhbW91bnRzKSB7CisgICAgICAgICAgICAg
ICAgaW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgaW50NjRfdCBt
ID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBh
bW91bnQpLCBuICsgKG0gPj4gYW1vdW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0U2hpZnQ2NCgpCit7CisgICAg
aWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVy
bjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAg
Ly8gVGVzdCBQYXR0ZXJuOiBkID0gbiArIChtID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBb
Jl0gKHVpbnQ2NF90IG4sIHVpbnQ2NF90IG0sIHVpbnQzMl90IGFtb3VudCkgLT4gdWludDY0X3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgICAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1
ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYW1vdW50KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOwor
ICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmFkZC4qLC4qLC4qLC4qbHNyICMiKTsKKyAgICAg
ICAgICAgIHJlZ2V4ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBpbnZva2U8dWludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAg
ICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAg
Zm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBu
ID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAgICAgICAgICAgdWludDY0X3QgbSA9IG1PcGVyYW5k
LnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAr
IChtID4+IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIHRlc3RTdWJXaXRoTGVmdFNoaWZ0MzIoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRl
ZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMy
X3Q+IGFtb3VudHMgPSB7IDEsIDE3LCAzMSB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0g
biAtIChtIDw8IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKGludDMyX3QgbiwgaW50MzJf
dCBtLCBpbnQzMl90IGFtb3VudCkgLT4gaW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworCisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBtVmFsdWUsIGFtb3Vu
dFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
KSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwuKiwuKmxzbCAj
Iik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQpICsgIi4qIjsK
KyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0
cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+KCpjb2RlLCBu
LCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAgICAgICAgICBp
bnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG0gPSBt
T3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4sIG0sIGFtb3Vu
dCksIG4gLSAobSA8PCBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0U3ViV2l0aFJpZ2h0U2hpZnQzMigpCit7CisgICAgaWYgKEpTQzo6T3B0
aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0
b3I8aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMTcsIDMxIH07CisKKyAgICAvLyBUZXN0IFBhdHRl
cm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50MzJfdCBu
LCBpbnQzMl90IG0sIGludDMyX3QgYW1vdW50KSAtPiBpbnQzMl90IHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBtVmFs
dWUsIGFtb3VudFZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG5WYWx1ZSwgc2hpZnRWYWx1ZSkp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAo
aXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdWIuKiwuKiwu
KiwuKmFzciAjIik7CisgICAgICAgICAgICByZWdleCArPSBzdGQ6OnRvX3N0cmluZyhhbW91bnQp
ICsgIi4qIjsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5j
X3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW52b2tlPGludDMyX3Q+
KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVyYW5kIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMpIHsKKyAgICAgICAg
ICAgICAgICBpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IG0gPSBtT3BlcmFuZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0KG4s
IG0sIGFtb3VudCksIG4gLSAobSA+PiBhbW91bnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0U3ViV2l0aFVuc2lnbmVkUmlnaHRTaGlmdDMyKCkKK3sK
KyAgICBpZiAoSlNDOjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAg
cmV0dXJuOworICAgIFZlY3Rvcjx1aW50MzJfdD4gYW1vdW50cyA9IHsgMSwgMTcsIDMxIH07CisK
KyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPj4gYW1vdW50KQorICAgIGF1dG8gdGVz
dCA9IFsmXSAodWludDMyX3QgbiwgdWludDMyX3QgbSwgdWludDMyX3QgYW1vdW50KSAtPiB1aW50
MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBhbW91bnRWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOwor
CisgICAgICAgIFZhbHVlKiBzaGlmdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBaU2hyLCBPcmlnaW4oKSwgbVZhbHVlLCBhbW91bnRWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigp
LCBuVmFsdWUsIHNoaWZ0VmFsdWUpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJp
bmcgcmVnZXgoIi4qc3ViLiosLiosLiosLipsc3IgIyIpOworICAgICAgICAgICAgcmVnZXggKz0g
c3RkOjp0b19zdHJpbmcoYW1vdW50KSArICIuKiI7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGludm9rZTx1aW50MzJfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3Ig
KGF1dG8gbk9wZXJhbmQgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1P
cGVyYW5kIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50
IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IG4gPSBuT3BlcmFuZC52YWx1
ZTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBtID0gbU9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgQ0hFQ0tfRVEodGVzdChuLCBtLCBhbW91bnQpLCBuIC0gKG0gPj4gYW1vdW50KSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN1YldpdGhM
ZWZ0U2hpZnQ2NCgpCit7CisgICAgaWYgKEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwo
KSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8aW50MzJfdD4gYW1vdW50cyA9IHsg
MSwgMzQsIDYzIH07CisKKyAgICAvLyBUZXN0IFBhdHRlcm46IGQgPSBuIC0gKG0gPDwgYW1vdW50
KQorICAgIGF1dG8gdGVzdCA9IFsmXSAoaW50NjRfdCBuLCBpbnQ2NF90IG0sIGludDMyX3QgYW1v
dW50KSAtPiBpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIG5WYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKKyAgICAgICAgVmFsdWUqIGFtb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisKKyAgICAgICAgVmFsdWUqIHNoaWZ0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG1WYWx1ZSwg
YW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKnN1Yi4qLC4qLC4qLC4q
bHNsICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAi
LioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3Ry
KCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNv
ZGUsIG4sIG0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1vdW50IDogYW1vdW50cykgeworICAgICAgICAgICAg
ICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIGludDY0X3Qg
bSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwg
YW1vdW50KSwgbiAtIChtIDw8IGFtb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRoUmlnaHRTaGlmdDY0KCkKK3sKKyAgICBpZiAoSlND
OjpPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAg
IFZlY3RvcjxpbnQzMl90PiBhbW91bnRzID0geyAxLCAzNCwgNjMgfTsKKworICAgIC8vIFRlc3Qg
UGF0dGVybjogZCA9IG4gLSAobSA+PiBhbW91bnQpCisgICAgYXV0byB0ZXN0ID0gWyZdIChpbnQ2
NF90IG4sIGludDY0X3QgbSwgaW50MzJfdCBhbW91bnQpIC0+IGludDY0X3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBW
YWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50
KTsKKworICAgICAgICBWYWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU1NociwgT3JpZ2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwgblZhbHVlLCBzaGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIHJlZ2V4KCIuKnN1Yi4qLC4qLC4qLC4qYXNyICMiKTsKKyAgICAgICAgICAgIHJlZ2V4
ICs9IHN0ZDo6dG9fc3RyaW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4sIG0pOworICAgIH07CisKKyAgICBm
b3IgKGF1dG8gbk9wZXJhbmQgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
IG1PcGVyYW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYW1v
dW50IDogYW1vdW50cykgeworICAgICAgICAgICAgICAgIGludDY0X3QgbiA9IG5PcGVyYW5kLnZh
bHVlOworICAgICAgICAgICAgICAgIGludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAg
ICAgICAgICAgIENIRUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdWJXaXRo
VW5zaWduZWRSaWdodFNoaWZ0NjQoKQoreworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmRlZmF1bHRC
M09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGludDMyX3Q+IGFt
b3VudHMgPSB7IDEsIDM0LCA2MyB9OworCisgICAgLy8gVGVzdCBQYXR0ZXJuOiBkID0gbiAtICht
ID4+IGFtb3VudCkKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IG4sIHVpbnQ2NF90IG0s
IHVpbnQzMl90IGFtb3VudCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbVZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYW1vdW50VmFsdWUgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKworICAgICAgICBW
YWx1ZSogc2hpZnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3Jp
Z2luKCksIG1WYWx1ZSwgYW1vdW50VmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgblZhbHVlLCBz
aGlmdFZhbHVlKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIu
KnN1Yi4qLC4qLC4qLC4qbHNyICMiKTsKKyAgICAgICAgICAgIHJlZ2V4ICs9IHN0ZDo6dG9fc3Ry
aW5nKGFtb3VudCkgKyAiLioiOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnZv
a2U8dWludDY0X3Q+KCpjb2RlLCBuLCBtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIG5PcGVy
YW5kIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtT3BlcmFuZCA6IGlu
dDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGFtb3VudCA6IGFtb3VudHMp
IHsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBuID0gbk9wZXJhbmQudmFsdWU7CisgICAgICAg
ICAgICAgICAgdWludDY0X3QgbSA9IG1PcGVyYW5kLnZhbHVlOworICAgICAgICAgICAgICAgIENI
RUNLX0VRKHRlc3QobiwgbSwgYW1vdW50KSwgbiAtIChtID4+IGFtb3VudCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdo
dEFyZ0ltbU1hc2szMigpCiB7CiAgICAgLy8gVHVybiB0aGlzOiAodG1wID4+IGltbSkgJiBtYXNr
IApAQCAtNTAyNyw2ICs1NTMxLDE4IEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciogZmls
dGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJVTih0
ZXN0SW5zZXJ0U2lnbmVkQml0ZmllbGRJblplcm82NCgpKTsKICAgICBSVU4odGVzdEV4dHJhY3RT
aWduZWRCaXRmaWVsZDMyKCkpOwogICAgIFJVTih0ZXN0RXh0cmFjdFNpZ25lZEJpdGZpZWxkNjQo
KSk7CisgICAgUlVOKHRlc3RBZGRXaXRoTGVmdFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RBZGRX
aXRoUmlnaHRTaGlmdDMyKCkpOworICAgIFJVTih0ZXN0QWRkV2l0aFVuc2lnbmVkUmlnaHRTaGlm
dDMyKCkpOworICAgIFJVTih0ZXN0QWRkV2l0aExlZnRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0
QWRkV2l0aFJpZ2h0U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdEFkZFdpdGhVbnNpZ25lZFJpZ2h0
U2hpZnQ2NCgpKTsKKyAgICBSVU4odGVzdFN1YldpdGhMZWZ0U2hpZnQzMigpKTsKKyAgICBSVU4o
dGVzdFN1YldpdGhSaWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJXaXRoVW5zaWduZWRS
aWdodFNoaWZ0MzIoKSk7CisgICAgUlVOKHRlc3RTdWJXaXRoTGVmdFNoaWZ0NjQoKSk7CisgICAg
UlVOKHRlc3RTdWJXaXRoUmlnaHRTaGlmdDY0KCkpOworICAgIFJVTih0ZXN0U3ViV2l0aFVuc2ln
bmVkUmlnaHRTaGlmdDY0KCkpOwogICAgIFJVTih0ZXN0Qml0QW5kWmVyb1NoaWZ0UmlnaHRBcmdJ
bW1NYXNrMzIoKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRaZXJvU2hpZnRSaWdodEFyZ0ltbU1hc2s2
NCgpKTsKICAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcAppbmRl
eCBkZmUwOWI2NzE0NzBkY2JhNGJlYjVkYjgxMzAxYTcyMDM2ZGIzNWVkLi44ZDRkMTI5NTE1ZDYx
Yzg0Zjk3YTliYmEzZWQzNDhlMmI2ZjNiODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZTo6c19vcHRpb25OYW1lWzhdID0gewog
fTsKIAogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZTo6c19zaGlmdE5hbWVzWzRdID0gewot
ICAgICJsc2wiLCAibHNyIiwgImFzbCIsICJyb3IiCisgICAgImxzbCIsICJsc3IiLCAiYXNyIiwg
InJvciIKIH07CiAKIGNvbnN0IGNoYXIgQTY0RE9wY29kZTo6c19GUFJlZ2lzdGVyUHJlZml4WzVd
ID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02
NC9BNjRET3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0
L0E2NERPcGNvZGUuaAppbmRleCBkZDdhMGJjYmQ0YjExOTYzZTgwMDk3NWUxMTQ1NzhkNmFjNjcz
ZjkxLi5mYWZlYmVhNjcxODZkNmNmZmRkODI3YTU3MmY1M2Y0ZTRiYjAyMzRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUu
aApAQCAtMjYzLDcgKzI2Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTmVnKCkgeyByZXR1cm4g
KG9wKCkgJiYgcm4oKSA9PSAzMSk7IH0KICAgICBjb25zdCBjaGFyKiBuZWdOYW1lKCkgeyByZXR1
cm4gc0JpdCgpID8gIm5lZ3MiIDogIm5lZyI7IH0KICAgICB1bnNpZ25lZCBzaGlmdCgpIHsgcmV0
dXJuIChtX29wY29kZSA+PiAyMikgJiAweDM7IH0KLSAgICBpbnQgaW1tZWRpYXRlNigpIHsgcmV0
dXJuIChzdGF0aWNfY2FzdDxpbnQ+KChtX29wY29kZSA+PiAxMCkgJiAweDNmKSA8PCAyNikgPj4g
MjY7IH0KKyAgICBpbnQgaW1tZWRpYXRlNigpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oKG1fb3Bjb2RlID4+IDEwKSAmIDB4M2YpIDw8IDI2KSA+PiAyNjsgfQogfTsKIAogY2xhc3Mg
QTY0RE9wY29kZUJpdGZpZWxkIDogcHVibGljIEE2NERPcGNvZGUgewpAQCAtODU3LDcgKzg1Nyw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTW92KCkgeyByZXR1cm4gKChvcGMoKSA9PSAxKSAmJiAo
cm4oKSA9PSAzMSkpOyB9CiAgICAgdW5zaWduZWQgb3BOdW1iZXIoKSB7IHJldHVybiAob3BjKCkg
PDwgMSkgfCBuQml0KCk7IH0KICAgICB1bnNpZ25lZCBzaGlmdCgpIHsgcmV0dXJuIChtX29wY29k
ZSA+PiAyMikgJiAweDM7IH0KLSAgICBpbnQgaW1tZWRpYXRlNigpIHsgcmV0dXJuIChzdGF0aWNf
Y2FzdDxpbnQ+KChtX29wY29kZSA+PiAxMCkgJiAweDNmKSA8PCAyNikgPj4gMjY7IH0KKyAgICBp
bnQgaW1tZWRpYXRlNigpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oKG1fb3Bjb2Rl
ID4+IDEwKSAmIDB4M2YpIDw8IDI2KSA+PiAyNjsgfQogfTsKIAogY2xhc3MgQTY0RE9wY29kZU1v
dmVXaWRlIDogcHVibGljIEE2NERPcGNvZGUgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>