<?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>201138</bug_id>
          
          <creation_ts>2019-08-26 06:50:59 -0700</creation_ts>
          <short_desc>testmasm: save r6 in JIT&apos;ed code on ARM_THUMB2</short_desc>
          <delta_ts>2019-09-06 09:57:16 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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="Guillaume Emont">guijemont</reporter>
          <assigned_to name="Guillaume Emont">guijemont</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1564928</commentid>
    <comment_count>0</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-08-26 06:50:59 -0700</bug_when>
    <thetext>MacroAssemblerArmv7 uses r6 as a temporary register, and it is a callee-saved register. The JITs use AssemblyHelpers::emitSaveCalleeSaves() and friends to save callee-saved registers, but there is no such mechanism in testmasm, which seems to make the assumption that the macroassembler does not use callee-saved registers (which I guess is true for all other architectures, but not for Armv7).

This issue means that testmasm crashes on Armv7 since code generated by gcc uses r6, and it gets modified by JIT&apos;ed code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564932</commentid>
    <comment_count>1</comment_count>
      <attachid>377243</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-08-26 07:15:02 -0700</bug_when>
    <thetext>Created attachment 377243
Patch

Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564933</commentid>
    <comment_count>2</comment_count>
      <attachid>377243</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-08-26 07:24:01 -0700</bug_when>
    <thetext>Comment on attachment 377243
Patch

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

LGTM. I left some comments.

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        by gcc uses r6, and it gets modified by JIT&apos;ed code.

It would be good point to the source where you&apos;ve found this information. Also, is it a problem if we use a different version of GCC or even Clang?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564934</commentid>
    <comment_count>3</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-08-26 07:31:26 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #2)
&gt; Comment on attachment 377243 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377243&amp;action=review
&gt; 
&gt; LGTM. I left some comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:17
&gt; &gt; +        by gcc uses r6, and it gets modified by JIT&apos;ed code.
&gt; 
&gt; It would be good point to the source where you&apos;ve found this information.
&gt; Also, is it a problem if we use a different version of GCC or even Clang?

gcc, or any compiler, can use r6 and expect it not to change during a call to masm-compiled code because arm EABI says it is a callee-saved register.

Do you think I should add a comment saying where we use it in MacroAssemblerARMv7? (answer: a bunch of methods, and more will likely be added in the future).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564971</commentid>
    <comment_count>4</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-08-26 09:45:15 -0700</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #3)
&gt; gcc, or any compiler, can use r6 and expect it not to change during a call
&gt; to masm-compiled code because arm EABI says it is a callee-saved register.

In this case, I think this info is available into ARMv7 manual, right? Maybe it is worth it point to the section where this is stated.

&gt; Do you think I should add a comment saying where we use it in
&gt; MacroAssemblerARMv7? (answer: a bunch of methods, and more will likely be
&gt; added in the future).

I&apos;m not sure if this is necessary.Maybe a comment into `emitFunctionPrologue` is already sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565936</commentid>
    <comment_count>5</comment_count>
      <attachid>377505</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-08-28 16:15:35 -0700</bug_when>
    <thetext>Created attachment 377505
Patch

New patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566044</commentid>
    <comment_count>6</comment_count>
      <attachid>377505</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-08-28 19:02:02 -0700</bug_when>
    <thetext>Comment on attachment 377505
Patch

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

LGTM. I&apos;m wondering if we should add a FIXME to add the concept of callee-saved register into macroassembler.

&gt; Source/JavaScriptCore/assembler/testmasm.cpp:187
&gt; +    // http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042f/IHI0042F_aapcs.pdf

Nice. I think there are some strange characters there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566182</commentid>
    <comment_count>7</comment_count>
      <attachid>377566</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-08-29 04:00:35 -0700</bug_when>
    <thetext>Created attachment 377566
Patch

New patch with only ASCII chars.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568475</commentid>
    <comment_count>8</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-09-06 03:47:38 -0700</bug_when>
    <thetext>Ping reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568536</commentid>
    <comment_count>9</comment_count>
      <attachid>377566</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-06 09:11:06 -0700</bug_when>
    <thetext>Comment on attachment 377566
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568558</commentid>
    <comment_count>10</comment_count>
      <attachid>377566</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-06 09:56:27 -0700</bug_when>
    <thetext>Comment on attachment 377566
Patch

Clearing flags on attachment: 377566

Committed r249576: &lt;https://trac.webkit.org/changeset/249576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568559</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-06 09:56:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568560</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-06 09:57:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/55115864&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568561</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-06 09:57:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55115866&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377243</attachid>
            <date>2019-08-26 07:15:02 -0700</date>
            <delta_ts>2019-08-28 16:15:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201138-20190826161501.patch</filename>
            <type>text/plain</type>
            <size>21413</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTg1ZjhlYTMyMjBlNjg5YjUyNGY0ZDIwZDdlNTY3OTVjOTBiN2YwLi5mNjJlODFhZGMyNzI3ZWZm
NjAxMzJjZmE1YjAyMjJhM2VmNGZhZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxOS0wOC0yNiAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgdGVzdG1hc206IHNhdmUgcjYgaW4gSklUJ2VkIGNvZGUgb24gQVJN
X1RIVU1CMgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxMTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJBcm12NyB1c2VzIHI2IGFzIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLCBhbmQg
aXQgaXMgYQorICAgICAgICBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXIuIFRoZSBKSVRzIHVzZQorICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKSBhbmQgZnJpZW5kcyB0
byBzYXZlCisgICAgICAgIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMsIGJ1dCB0aGVyZSBpcyBubyBz
dWNoIG1lY2hhbmlzbSBpbiB0ZXN0bWFzbSwKKyAgICAgICAgd2hpY2ggc2VlbXMgdG8gbWFrZSB0
aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBtYWNyb2Fzc2VtYmxlciBkb2VzIG5vdAorICAgICAgICB1
c2UgY2FsbGVlLXNhdmVkIHJlZ2lzdGVycyAod2hpY2ggSSBndWVzcyBpcyB0cnVlIGZvciBhbGwg
b3RoZXIKKyAgICAgICAgYXJjaGl0ZWN0dXJlcywgYnV0IG5vdCBmb3IgQXJtdjcpLgorCisgICAg
ICAgIFRoaXMgaXNzdWUgbWVhbnMgdGhhdCB0ZXN0bWFzbSBjcmFzaGVzIG9uIEFybXY3IHNpbmNl
IGNvZGUgZ2VuZXJhdGVkCisgICAgICAgIGJ5IGdjYyB1c2VzIHI2LCBhbmQgaXQgZ2V0cyBtb2Rp
ZmllZCBieSBKSVQnZWQgY29kZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBzdXJlIHRo
YXQgd2Ugc2F2ZSBhbmQgcmVzdG9yZSByNiBmb3IgYWxsIGNvZGUKKyAgICAgICAgY29tcGlsZWQg
YnkgdGVzdG1hc20gb24gQXJtdjcuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3Bw
OgorICAgICAgICAoSlNDOjplbWl0RnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OmVt
aXRGdW5jdGlvbkVwaWxvZ3VlKToKKyAgICAgICAgKEpTQzo6dGVzdFNpbXBsZSk6CisgICAgICAg
IChKU0M6OnRlc3RHZXRFZmZlY3RpdmVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6dGVzdEJyYW5j
aFRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0Qml0
MzJSZWdSZWcpOgorICAgICAgICAoSlNDOjp0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnSW1tKToKKyAg
ICAgICAgKEpTQzo6dGVzdEJyYW5jaFRlc3RCaXQzMkFkZHJJbW0pOgorICAgICAgICAoSlNDOjp0
ZXN0QnJhbmNoVGVzdEJpdDY0UmVnUmVnKToKKyAgICAgICAgKEpTQzo6dGVzdEJyYW5jaFRlc3RC
aXQ2NFJlZ0ltbSk6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0Qml0NjRBZGRySW1tKToK
KyAgICAgICAgKEpTQzo6dGVzdENvbXBhcmVEb3VibGUpOgorICAgICAgICAoSlNDOjp0ZXN0TXVs
MzJXaXRoSW1tZWRpYXRlcyk6CisgICAgICAgIChKU0M6OnRlc3RNdWwzMlNpZ25FeHRlbmQpOgor
ICAgICAgICAoSlNDOjp0ZXN0Q29tcGFyZUZsb2F0KToKKyAgICAgICAgKEpTQzo6dGVzdFByb2Jl
UmVhZHNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZVdyaXRlc0Fy
Z3VtZW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlUHJlc2VydmVzR1BSUyk6
CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKToKKyAgICAgICAg
KEpTQzo6dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcik6CisgICAgICAgIChKU0M6OnRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAoSlNDOjp0ZXN0Qnl0ZVN3YXAp
OgorICAgICAgICAoSlNDOjp0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMik6CisgICAgICAg
IChKU0M6OnRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0KToKKyAgICAgICAgKEpTQzo6dGVz
dENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKwogMjAxOS0wOC0yMiAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVudCBG
aWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA5NGNlMzJjOWNhYTlmNDljYTc4MjFhMGQxNWQ4
MjZmOWJlNjA1ZDZiLi4xODRiM2VlMTUzNWZlNThiZWU3M2NkYzIyYTgxMTM4M2Y1ZGU3NzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTc3
LDEyICsxNzcsMjkgQEAgVCBjb21waWxlQW5kUnVuKEdlbmVyYXRvciYmIGdlbmVyYXRvciwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICByZXR1cm4gaW52b2tlPFQ+KGNvbXBpbGUoV1RGTW92
ZShnZW5lcmF0b3IpKSwgYXJndW1lbnRzLi4uKTsKIH0KIAordm9pZCBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShDQ2FsbEhlbHBlcnMmIGppdCkKK3sKKyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAvLyBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXIgdXNl
ZCBhcyB0ZW1wb3JhcnkgcmVnaXN0ZXIgaW4gTWFjcm9Bc3NlbWJsZXJBUk12Ny4KKyAgICBqaXQu
cHVzaChBUk1SZWdpc3RlcnM6OnI2KTsKKyNlbmRpZgorfQorCit2b2lkIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKENDYWxsSGVscGVycyYgaml0KQoreworI2lmIENQVShBUk1fVEhVTUIyKQorICAgIGpp
dC5wb3AoQVJNUmVnaXN0ZXJzOjpyNik7CisjZW5kaWYKKyAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKK30KKwogdm9pZCB0ZXN0U2ltcGxlKCkKIHsKICAgICBDSEVDS19FUShjb21waWxl
QW5kUnVuPGludD4oW10gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAg
ICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9
KSwgNDIpOwogfQpAQCAtMTkwLDExICsyMDcsMTEgQEAgdm9pZCB0ZXN0U2ltcGxlKCkKIHZvaWQg
dGVzdEdldEVmZmVjdGl2ZUFkZHJlc3Moc2l6ZV90IHBvaW50ZXIsIHB0cmRpZmZfdCBsZW5ndGgs
IGludDMyX3Qgb2Zmc2V0LCBDQ2FsbEhlbHBlcnM6OlNjYWxlIHNjYWxlKQogewogICAgIENIRUNL
X0VRKGNvbXBpbGVBbmRSdW48c2l6ZV90PihbPV0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShqaXQpOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPihwb2ludGVyKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
bGVuZ3RoKSksIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgaml0LmdldEVmZmVjdGl2ZUFkZHJl
c3MoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qx
LCBzY2FsZSwgb2Zmc2V0KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pLCBwb2ludGVyICsgb2Zmc2V0ICsgKHN0YXRp
Y19jYXN0PHNpemVfdD4oMSkgPDwgc3RhdGljX2Nhc3Q8aW50PihzY2FsZSkpICogbGVuZ3RoKTsK
IH0KQEAgLTIxMCw3ICsyMjcsNyBAQCB2b2lkIHRlc3RCcmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50
MzIoZG91YmxlIHZhbCwgaW50MzJfdCBleHBlY3RlZCkKICAgICBjb25zdCBib29sIGlzQmlnRW5k
aWFuID0gZmFsc2U7CiAjZW5kaWYKICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludD4oWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAgICAgICAgaml0LnN1YlB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBpZiAoaXNCaWdFbmRp
YW4pIHsKICAgICAgICAgICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHZhbEFzVUludCA+PiAzMiksCkBAIC0yMzIsNyArMjQ5LDcgQEAgdm9pZCB0ZXN0QnJhbmNoVHJ1
bmNhdGVEb3VibGVUb0ludDMyKGRvdWJsZSB2YWwsIGludDMyX3QgZXhwZWN0ZWQpCiAKICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAg
fSksIGV4cGVjdGVkKTsKIH0KQEAgLTMxOCw3ICszMzUsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0
Qml0MzJSZWdSZWcoKQogewogICAgIGZvciAodWludDMyX3QgdmFsdWUgOiBpbnQzMk9wZXJhbmRz
KCkpIHsKICAgICAgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0
KSB7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGF1dG8gYnJhbmNoID0g
aml0LmJyYW5jaFRlc3RCaXQzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
QEAgLTMyNyw3ICszNDQsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0MzJSZWdSZWcoKQogICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAg
ICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOwogICAgICAgICAgICAgaml0LnJldCgpOwogICAgICAgICB9KTsKIApA
QCAtMzQwLDcgKzM1Nyw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQzMlJlZ0ltbSgpCiB7CiAg
ICAgZm9yICh1aW50MzJfdCB2YWx1ZSA6IGludDMyT3BlcmFuZHMoKSkgewogICAgICAgICBhdXRv
IHRlc3QgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoaml0KTsKIAogICAgICAgICAgICAgYXV0byBicmFuY2ggPSBqaXQuYnJhbmNoVGVzdEJpdDMy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKHZhbHVlKSk7CiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMzQ5
LDcgKzM2Niw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQzMlJlZ0ltbSgpCiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7CiAgICAgICAgIH0pOwogCkBAIC0zNjIs
NyArMzc5LDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJpdDMyQWRkckltbSgpCiB7CiAgICAgZm9y
ICh1aW50MzJfdCB2YWx1ZSA6IGludDMyT3BlcmFuZHMoKSkgewogICAgICAgICBhdXRvIHRlc3Qg
PSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGppdC5lbWl0
RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAogICAgICAgICAgICAgYXV0byBicmFuY2ggPSBqaXQuYnJhbmNoVGVzdEJpdDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjphcmd1
bWVudEdQUjAsIDApLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih2YWx1ZSkpOwogICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKQEAgLTM3MSw3ICszODgsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0
MzJBZGRySW1tKCkKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBkb25lLmxpbmso
JmppdCk7CiAKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGppdC5yZXQoKTsK
ICAgICAgICAgfSk7CiAKQEAgLTM4NCw3ICs0MDEsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0
NjRSZWdSZWcoKQogewogICAgIGZvciAodWludDY0X3QgdmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKICAgICAgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGF1dG8gYnJhbmNoID0gaml0
LmJyYW5jaFRlc3RCaXQ2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoMCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAg
LTM5Myw3ICs0MTAsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0NjRSZWdSZWcoKQogICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoMSksIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25F
cGlsb2d1ZShqaXQpOwogICAgICAgICAgICAgaml0LnJldCgpOwogICAgICAgICB9KTsKIApAQCAt
NDA2LDcgKzQyMyw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQ2NFJlZ0ltbSgpCiB7CiAgICAg
Zm9yICh1aW50NjRfdCB2YWx1ZSA6IGludDY0T3BlcmFuZHMoKSkgewogICAgICAgICBhdXRvIHRl
c3QgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAogICAgICAgICAgICAgYXV0byBicmFuY2ggPSBqaXQuYnJhbmNoVGVzdEJpdDY0KE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHZhbHVlKSk7CiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW02NCgwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtNDE1LDcg
KzQzMiw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQ2NFJlZ0ltbSgpCiAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCgxKSwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KGppdCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7CiAgICAgICAgIH0pOwogCkBAIC00MjgsNyAr
NDQ1LDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJpdDY0QWRkckltbSgpCiB7CiAgICAgZm9yICh1
aW50NjRfdCB2YWx1ZSA6IGludDY0T3BlcmFuZHMoKSkgewogICAgICAgICBhdXRvIHRlc3QgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
IAogICAgICAgICAgICAgYXV0byBicmFuY2ggPSBqaXQuYnJhbmNoVGVzdEJpdDY0KE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIDApLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih2YWx1ZSkpOwogICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoMCksIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKQEAgLTQzNyw3ICs0NTQsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0NjRB
ZGRySW1tKCkKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KDEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBkb25lLmxpbmsoJmpp
dCk7CiAKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKICAg
ICAgICAgfSk7CiAKQEAgLTQ1NCwxOSArNDcxLDE5IEBAIHZvaWQgdGVzdENvbXBhcmVEb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCiAgICAgZG91YmxlIGFy
ZzIgPSAwOwogCiAgICAgYXV0byBjb21wYXJlRG91YmxlID0gY29tcGlsZShbJiwgY29uZGl0aW9u
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgaml0Lmxv
YWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcxKSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CiAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmYXJnMiksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigtMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAg
aml0LmNvbXBhcmVEb3VibGUoY29uZGl0aW9uLCBGUFJJbmZvOjpmcFJlZ1QwLCBGUFJJbmZvOjpm
cFJlZ1QxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAKLSAgICAgICAgaml0LmVtaXRGdW5j
dGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAg
ICAgIGppdC5yZXQoKTsKICAgICB9KTsKIAogICAgIGF1dG8gY29tcGFyZURvdWJsZUdlbmVyaWMg
PSBjb21waWxlKFsmLCBjb25kaXRpb25dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAogICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoJmFyZzEpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0LmxvYWREb3VibGUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcyKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CkBAIC00
NzUsNyArNDkyLDcgQEAgdm9pZCB0ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAganVtcC5s
aW5rKCZqaXQpOwogCi0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAg
ICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7
CiAKQEAgLTQ5MywxMSArNTEwLDExIEBAIHZvaWQgdGVzdE11bDMyV2l0aEltbWVkaWF0ZXMoKQog
ewogICAgIGZvciAoYXV0byBpbW1lZGlhdGUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKICAgICAgICAg
YXV0byBtdWwgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAg
IGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKIAogICAgICAgICAgICAgaml0Lm11bDMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGltbWVkaWF0ZSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwogCi0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgICAgICBqaXQucmV0
KCk7CiAgICAgICAgIH0pOwogCkBAIC01MTEsMTEgKzUyOCwxMSBAQCB2b2lkIHRlc3RNdWwzMlNp
Z25FeHRlbmQoKQogewogICAgIGZvciAoYXV0byB2YWx1ZSA6IGludDMyT3BlcmFuZHMoKSkgewog
ICAgICAgICBhdXRvIG11bCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAg
ICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgICAgICBqaXQubXVsdGlwbHlTaWduRXh0ZW5k
MzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKIAotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICAgICAg
aml0LnJldCgpOwogICAgICAgICB9KTsKIApAQCAtNTMyLDE5ICs1NDksMTkgQEAgdm9pZCB0ZXN0
Q29tcGFyZUZsb2F0KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQog
ICAgIGZsb2F0IGFyZzIgPSAwOwogCiAgICAgYXV0byBjb21wYXJlRmxvYXQgPSBjb21waWxlKFsm
LCBjb25kaXRpb25dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAg
ICAgICBqaXQubG9hZEZsb2F0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMSksIEZQ
UkluZm86OmZwUmVnVDApOwogICAgICAgICBqaXQubG9hZEZsb2F0KENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cigmYXJnMiksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
ICAgICAgICAgaml0LmNvbXBhcmVGbG9hdChjb25kaXRpb24sIEZQUkluZm86OmZwUmVnVDAsIEZQ
UkluZm86OmZwUmVnVDEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIAotICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCiAgICAgYXV0byBjb21wYXJlRmxvYXRH
ZW5lcmljID0gY29tcGlsZShbJiwgY29uZGl0aW9uXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAg
ICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKGppdCk7CiAKICAgICAgICAgaml0LmxvYWRGbG9hdChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoJmFyZzEpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0LmxvYWRGbG9h
dChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsK
QEAgLTU1Myw3ICs1NzAsNyBAQCB2b2lkIHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIGp1
bXAubGluaygmaml0KTsKIAotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAg
ICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAg
IH0pOwogCkBAIC01NzMsNyArNTkwLDcgQEAgdm9pZCB0ZXN0UHJvYmVSZWFkc0FyZ3VtZW50UmVn
aXN0ZXJzKCkKIHsKICAgICBib29sIHByb2JlV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgY29tcGls
ZUFuZFJ1bjx2b2lkPihbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0
RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwog
CiAgICAgICAgIGppdC5wdXNoUGFpcihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CiAgICAgICAgIGppdC5wdXNoUGFpcihHUFJJbmZvOjphcmd1bWVudEdQUjIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CkBAIC02MDksNyArNjI2LDcgQEAgdm9pZCB0ZXN0UHJv
YmVSZWFkc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAgICAgICAgaml0LnBvcFBhaXIoR1BSSW5mbzo6
YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgICAgICBqaXQucG9wUGFp
cihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAKLSAgICAg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKICAgICBDSEVDS19FUShwcm9i
ZVdhc0NhbGxlZCwgdHJ1ZSk7CkBAIC02MjIsNyArNjM5LDcgQEAgdm9pZCB0ZXN0UHJvYmVXcml0
ZXNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAgLy8gdGhhdCBvdXIgd3JpdGVzIGRpZCB0YWtlIGVm
ZmVjdC4KICAgICB1bnNpZ25lZCBwcm9iZUNhbGxDb3VudCA9IDA7CiAgICAgY29tcGlsZUFuZFJ1
bjx2b2lkPihbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAg
ICAgIGppdC5wdXNoUGFpcihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CiAgICAgICAgIGppdC5wdXNoUGFpcihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMyk7CkBAIC02NzEsNyArNjg4LDcgQEAgdm9pZCB0ZXN0UHJvYmVXcml0
ZXNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAgICAgIGppdC5wb3BQYWlyKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICAgICAgaml0LnBvcFBhaXIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogCi0gICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShq
aXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAgICAgQ0hFQ0tfRVEocHJvYmVDYWxs
Q291bnQsIDIpOwpAQCAtNjk5LDcgKzcxNiw3IEBAIHZvaWQgdGVzdFByb2JlUHJlc2VydmVzR1BS
UygpCiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsKIAogICAgIGNvbXBpbGVBbmRSdW48dm9p
ZD4oWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICAv
LyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNw
LCBmcCwgYW5kIHBjKS4KICAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQpIHsKQEAgLTc3Myw3ICs3OTAsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMo
KQogICAgICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5mcHI8dWludDY0X3Q+KGlkKSwgb3JpZ2lu
YWxTdGF0ZS5mcHI8dWludDY0X3Q+KGlkKSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQp
OwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAgICAgQ0hFQ0tfRVEocHJvYmVDYWxsQ291
bnQsIDUpOwpAQCAtODAxLDcgKzgxOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAjZW5k
aWYKIAogICAgIGNvbXBpbGVBbmRSdW48dm9pZD4oWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewot
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBQcmVzZXJ2ZSBvcmlnaW5hbCBzdGFjayBwb2lu
dGVyIGFuZCBtb2RpZnkgdGhlIHNwLCBhbmQKICAgICAgICAgLy8gd3JpdGUgZXhwZWN0ZWQgdmFs
dWVzIGludG8gb3RoZXIgcmVnaXN0ZXJzIChleGNlcHQgZm9yIGZwLCBhbmQgcGMpLgpAQCAtODkx
LDcgKzkwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5j
dGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgICAgICBDSEVDS19F
UShjcHUuc3AoKSwgb3JpZ2luYWxTUCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGppdC5lbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwog
ICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAgICAgQ0hFQ0tfRVEocHJvYmVDYWxsQ291bnQs
IDQpOwpAQCAtOTQxLDEyICs5NTgsMTIgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1Byb2dyYW1D
b3VudGVyKCkKICAgICAgICAgICAgIGNvbnRpbnVhdGlvbldhc1JlYWNoZWQgPSB0cnVlOwogICAg
ICAgICB9KTsKIAotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwog
CiAgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRlIGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSBy
ZWdpc3RlcnMuCiAgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CkBAIC05ODMsNyArMTAwMCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVl
cygpCiAjZW5kaWYKIAogICAgIGNvbXBpbGVBbmRSdW48dm9pZD4oWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1
ZXMgaW50byB0aGUgcmVnaXN0ZXJzLgogICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29u
dGV4dCYgY29udGV4dCkgewpAQCAtMTA3Niw3ICsxMDkzLDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2Rp
Zmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgICAgIGNwdS5zcCgpID0gb3JpZ2luYWxTUDsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsK
IApAQCAtMTA4OCwzMCArMTEwNSwzMCBAQCB2b2lkIHRlc3RCeXRlU3dhcCgpCiB7CiAjaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIGF1dG8gYnl0ZVN3YXAxNiA9IGNvbXBpbGUoW10g
KENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQubW92ZShH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAg
aml0LmJ5dGVTd2FwMTYoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBqaXQuZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsK
ICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRf
dD4oYnl0ZVN3YXAxNiwgMHhhYWJiY2NkZGVlMDAxMTIyKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KDB4MjIxMSkpOwogICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oYnl0ZVN3YXAxNiwgMHhh
YWJiY2NkZGVlMDBmZmFhKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4YWFmZikpOwogCiAgICAg
YXV0byBieXRlU3dhcDMyID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICBqaXQuYnl0ZVN3YXAzMihHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAg
ICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7
CiAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90PihieXRlU3dhcDMyLCAweGFhYmJjY2RkZWUw
MDExMjIpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMHgyMjExMDBlZSkpOwogICAgIENIRUNLX0VR
KGludm9rZTx1aW50NjRfdD4oYnl0ZVN3YXAzMiwgMHhhYWJiY2NkZGVlMDBmZmFhKSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KDB4YWFmZjAwZWUpKTsKIAogICAgIGF1dG8gYnl0ZVN3YXA2NCA9IGNv
bXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBq
aXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
ICAgICAgICAgaml0LmJ5dGVTd2FwNjQoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogICAgIENIRUNLX0VRKGludm9r
ZTx1aW50NjRfdD4oYnl0ZVN3YXA2NCwgMHhhYWJiY2NkZGVlMDAxMTIyKSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KDB4MjIxMTAwZWVkZGNjYmJhYSkpOwpAQCAtMTEzMCw3ICsxMTQ3LDcgQEAgdm9p
ZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMigpCiAgICAgQ0hFQ0tfRVEoc3RhdGljX2Nh
c3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4oY2hvc2VuRG91YmxlKSkgPT0gY2hvc2VuRG91
YmxlLCBmYWxzZSk7CiAKICAgICBhdXRvIHNlbCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpOwogICAg
ICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzEpLCBG
UFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKCZhcmcyKSwgRlBSSW5mbzo6ZnBSZWdUMik7CkBAIC0xMTM4LDcgKzExNTUs
NyBAQCB2b2lkIHRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyKCkKICAgICAgICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtMSksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgaml0Lm1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDEsIEZQUklu
Zm86OmZwUmVnVDIsIEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKIAotICAgICAgICBqaXQuZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsK
ICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCkBAIC0xMTY0LDcgKzExODEsNyBAQCB2b2lk
IHRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0KCkKICAgICBDSEVDS19FUShzdGF0aWNfY2Fz
dDxkb3VibGU+KHN0YXRpY19jYXN0PGZsb2F0PihjaG9zZW5Eb3VibGUpKSA9PSBjaG9zZW5Eb3Vi
bGUsIGZhbHNlKTsKIAogICAgIGF1dG8gc2VsID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYg
aml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CiAgICAg
ICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMSksIEZQ
UkluZm86OmZwUmVnVDEpOwogICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoJmFyZzIpLCBGUFJJbmZvOjpmcFJlZ1QyKTsKQEAgLTExNzIsNyArMTE4OSw3
IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQoKQogICAgICAgICBqaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KC0xKSwgR1BSSW5mbzo6cmVnVDApOwogICAg
ICAgICBqaXQubW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5m
bzo6ZnBSZWdUMiwgRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpOwogCi0gICAgICAgIGppdC5lbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwog
ICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAKQEAgLTExOTIsMTAgKzEyMDksMTAgQEAgc3Rh
dGljIHZvaWQgdGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkKICNpZiBHSUdBQ0FHRV9F
TkFCTEVECiAgICAgQVNTRVJUKCFHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZURpc2FibGVkKCkpOwogICAgIGF1dG8gY2FnZSA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVycyYg
aml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBqaXQuZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsK
ICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCkBAIC0xMjE2LDEwICsxMjMzLDEwIEBAIHN0
YXRpYyB2b2lkIHRlc3RDYWdlUHJlc2VydmVzUEFDRmFpbHVyZUJpdCgpCiAgICAgQ0hFQ0tfRVEo
aW52b2tlPHZvaWQqPihjYWdlLCB0YWdnZWRQdHIsIDEpLCBwdHIpOwogCiAgICAgYXV0byBjYWdl
V2l0aG91dEF1dGhlbnRpY2F0aW9uID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
LSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKGppdCk7CiAgICAgICAgIGppdC5jYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQubW92ZShH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAg
aml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377505</attachid>
            <date>2019-08-28 16:15:35 -0700</date>
            <delta_ts>2019-08-29 04:00:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201138-20190829011533.patch</filename>
            <type>text/plain</type>
            <size>21600</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTg1ZjhlYTMyMjBlNjg5YjUyNGY0ZDIwZDdlNTY3OTVjOTBiN2YwLi5mNjJlODFhZGMyNzI3ZWZm
NjAxMzJjZmE1YjAyMjJhM2VmNGZhZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxOS0wOC0yNiAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgdGVzdG1hc206IHNhdmUgcjYgaW4gSklUJ2VkIGNvZGUgb24gQVJN
X1RIVU1CMgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxMTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJBcm12NyB1c2VzIHI2IGFzIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLCBhbmQg
aXQgaXMgYQorICAgICAgICBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXIuIFRoZSBKSVRzIHVzZQorICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKSBhbmQgZnJpZW5kcyB0
byBzYXZlCisgICAgICAgIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMsIGJ1dCB0aGVyZSBpcyBubyBz
dWNoIG1lY2hhbmlzbSBpbiB0ZXN0bWFzbSwKKyAgICAgICAgd2hpY2ggc2VlbXMgdG8gbWFrZSB0
aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBtYWNyb2Fzc2VtYmxlciBkb2VzIG5vdAorICAgICAgICB1
c2UgY2FsbGVlLXNhdmVkIHJlZ2lzdGVycyAod2hpY2ggSSBndWVzcyBpcyB0cnVlIGZvciBhbGwg
b3RoZXIKKyAgICAgICAgYXJjaGl0ZWN0dXJlcywgYnV0IG5vdCBmb3IgQXJtdjcpLgorCisgICAg
ICAgIFRoaXMgaXNzdWUgbWVhbnMgdGhhdCB0ZXN0bWFzbSBjcmFzaGVzIG9uIEFybXY3IHNpbmNl
IGNvZGUgZ2VuZXJhdGVkCisgICAgICAgIGJ5IGdjYyB1c2VzIHI2LCBhbmQgaXQgZ2V0cyBtb2Rp
ZmllZCBieSBKSVQnZWQgY29kZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBzdXJlIHRo
YXQgd2Ugc2F2ZSBhbmQgcmVzdG9yZSByNiBmb3IgYWxsIGNvZGUKKyAgICAgICAgY29tcGlsZWQg
YnkgdGVzdG1hc20gb24gQXJtdjcuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3Bw
OgorICAgICAgICAoSlNDOjplbWl0RnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OmVt
aXRGdW5jdGlvbkVwaWxvZ3VlKToKKyAgICAgICAgKEpTQzo6dGVzdFNpbXBsZSk6CisgICAgICAg
IChKU0M6OnRlc3RHZXRFZmZlY3RpdmVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6dGVzdEJyYW5j
aFRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0Qml0
MzJSZWdSZWcpOgorICAgICAgICAoSlNDOjp0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnSW1tKToKKyAg
ICAgICAgKEpTQzo6dGVzdEJyYW5jaFRlc3RCaXQzMkFkZHJJbW0pOgorICAgICAgICAoSlNDOjp0
ZXN0QnJhbmNoVGVzdEJpdDY0UmVnUmVnKToKKyAgICAgICAgKEpTQzo6dGVzdEJyYW5jaFRlc3RC
aXQ2NFJlZ0ltbSk6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0Qml0NjRBZGRySW1tKToK
KyAgICAgICAgKEpTQzo6dGVzdENvbXBhcmVEb3VibGUpOgorICAgICAgICAoSlNDOjp0ZXN0TXVs
MzJXaXRoSW1tZWRpYXRlcyk6CisgICAgICAgIChKU0M6OnRlc3RNdWwzMlNpZ25FeHRlbmQpOgor
ICAgICAgICAoSlNDOjp0ZXN0Q29tcGFyZUZsb2F0KToKKyAgICAgICAgKEpTQzo6dGVzdFByb2Jl
UmVhZHNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZVdyaXRlc0Fy
Z3VtZW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlUHJlc2VydmVzR1BSUyk6
CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKToKKyAgICAgICAg
KEpTQzo6dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcik6CisgICAgICAgIChKU0M6OnRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAoSlNDOjp0ZXN0Qnl0ZVN3YXAp
OgorICAgICAgICAoSlNDOjp0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMik6CisgICAgICAg
IChKU0M6OnRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0KToKKyAgICAgICAgKEpTQzo6dGVz
dENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKwogMjAxOS0wOC0yMiAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVudCBG
aWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA5NGNlMzJjOWNhYTlmNDljYTc4MjFhMGQxNWQ4
MjZmOWJlNjA1ZDZiLi43MTA1NWY2NTVlNWVmM2VlMmQ3YmY4MGE5MzcxNzA3YjZhNTFjNmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTc3
LDEyICsxNzcsMzIgQEAgVCBjb21waWxlQW5kUnVuKEdlbmVyYXRvciYmIGdlbmVyYXRvciwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICByZXR1cm4gaW52b2tlPFQ+KGNvbXBpbGUoV1RGTW92
ZShnZW5lcmF0b3IpKSwgYXJndW1lbnRzLi4uKTsKIH0KIAordm9pZCBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShDQ2FsbEhlbHBlcnMmIGppdCkKK3sKKyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAvLyBNYWNyb0Fzc2VtYmxlckFSTXY3IHVzZXMg
cjYgYXMgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIsIHdoaWNoIGlzIGEKKyAgICAvLyBjYWxsZWUtc2F2
ZWQgcmVnaXN0ZXIsIHNlZSDCpzUuMS4xIG9mIHRoZSBQcm9jZWR1cmUgQ2FsbCBTdGFuZGFyZCBm
b3IKKyAgICAvLyB0aGUgQVJNIMKuIEFyY2hpdGVjdHVyZS4KKyAgICAvLyBodHRwOi8vaW5mb2Nl
bnRlci5hcm0uY29tL2hlbHAvdG9waWMvY29tLmFybS5kb2MuaWhpMDA0MmYvSUhJMDA0MkZfYWFw
Y3MucGRmCisgICAgaml0LnB1c2goQVJNUmVnaXN0ZXJzOjpyNik7CisjZW5kaWYKK30KKwordm9p
ZCBlbWl0RnVuY3Rpb25FcGlsb2d1ZShDQ2FsbEhlbHBlcnMmIGppdCkKK3sKKyNpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICBqaXQucG9wKEFSTVJlZ2lzdGVyczo6cjYpOworI2VuZGlmCisgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Cit9CisKIHZvaWQgdGVzdFNpbXBsZSgpCiB7CiAgICAg
Q0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ+KFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
NDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBq
aXQucmV0KCk7CiAgICAgfSksIDQyKTsKIH0KQEAgLTE5MCwxMSArMjEwLDExIEBAIHZvaWQgdGVz
dFNpbXBsZSgpCiB2b2lkIHRlc3RHZXRFZmZlY3RpdmVBZGRyZXNzKHNpemVfdCBwb2ludGVyLCBw
dHJkaWZmX3QgbGVuZ3RoLCBpbnQzMl90IG9mZnNldCwgQ0NhbGxIZWxwZXJzOjpTY2FsZSBzY2Fs
ZSkKIHsKICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHNpemVfdD4oWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ocG9pbnRlcikpLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KGxlbmd0aCkpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGppdC5n
ZXRFZmZlY3RpdmVBZGRyZXNzKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMSwgc2NhbGUsIG9mZnNldCksIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5j
dGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KSwgcG9pbnRlciAr
IG9mZnNldCArIChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IHN0YXRpY19jYXN0PGludD4oc2Nh
bGUpKSAqIGxlbmd0aCk7CiB9CkBAIC0yMTAsNyArMjMwLDcgQEAgdm9pZCB0ZXN0QnJhbmNoVHJ1
bmNhdGVEb3VibGVUb0ludDMyKGRvdWJsZSB2YWwsIGludDMyX3QgZXhwZWN0ZWQpCiAgICAgY29u
c3QgYm9vbCBpc0JpZ0VuZGlhbiA9IGZhbHNlOwogI2VuZGlmCiAgICAgQ0hFQ0tfRVEoY29tcGls
ZUFuZFJ1bjxpbnQ+KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRG
dW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAg
ICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1l
bnRCeXRlcygpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAg
ICAgaWYgKGlzQmlnRW5kaWFuKSB7CiAgICAgICAgICAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMih2YWxBc1VJbnQgPj4gMzIpLApAQCAtMjMyLDcgKzI1Miw3IEBAIHZv
aWQgdGVzdEJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihkb3VibGUgdmFsLCBpbnQzMl90IGV4
cGVjdGVkKQogCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAg
aml0LnJldCgpOwogICAgIH0pLCBleHBlY3RlZCk7CiB9CkBAIC0zMTgsNyArMzM4LDcgQEAgdm9p
ZCB0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnUmVnKCkKIHsKICAgICBmb3IgKHVpbnQzMl90IHZhbHVl
IDogaW50MzJPcGVyYW5kcygpKSB7CiAgICAgICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgICAg
ICBhdXRvIGJyYW5jaCA9IGppdC5icmFuY2hUZXN0Qml0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CkBAIC0zMjcsNyArMzQ3LDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJp
dDMyUmVnUmVnKCkKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBkb25lLmxpbmso
JmppdCk7CiAKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAg
ICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGppdC5yZXQoKTsK
ICAgICAgICAgfSk7CiAKQEAgLTM0MCw3ICszNjAsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0
MzJSZWdJbW0oKQogewogICAgIGZvciAodWludDMyX3QgdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKICAgICAgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGF1dG8gYnJhbmNoID0gaml0
LmJyYW5jaFRlc3RCaXQzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih2YWx1ZSkpOwogICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKQEAgLTM0OSw3ICszNjksNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0MzJSZWdJ
bW0oKQogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsK
IAotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICAgICAgaml0LnJldCgpOwogICAgICAg
ICB9KTsKIApAQCAtMzYyLDcgKzM4Miw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQzMkFkZHJJ
bW0oKQogewogICAgIGZvciAodWludDMyX3QgdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKICAg
ICAgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAg
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGF1dG8gYnJhbmNoID0gaml0LmJyYW5j
aFRlc3RCaXQzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAwKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
dmFsdWUpKTsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC0zNzEsNyArMzkxLDcgQEAgdm9pZCB0
ZXN0QnJhbmNoVGVzdEJpdDMyQWRkckltbSgpCiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAg
ICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAg
ICAgICBqaXQucmV0KCk7CiAgICAgICAgIH0pOwogCkBAIC0zODQsNyArNDA0LDcgQEAgdm9pZCB0
ZXN0QnJhbmNoVGVzdEJpdDY0UmVnUmVnKCkKIHsKICAgICBmb3IgKHVpbnQ2NF90IHZhbHVlIDog
aW50NjRPcGVyYW5kcygpKSB7CiAgICAgICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCkgewotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgICAgICBh
dXRvIGJyYW5jaCA9IGppdC5icmFuY2hUZXN0Qml0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KDApLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CkBAIC0zOTMsNyArNDEzLDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJpdDY0
UmVnUmVnKCkKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KDEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBkb25lLmxpbmsoJmpp
dCk7CiAKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKICAg
ICAgICAgfSk7CiAKQEAgLTQwNiw3ICs0MjYsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0NjRS
ZWdJbW0oKQogewogICAgIGZvciAodWludDY0X3QgdmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
ICAgICAgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0g
ICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGF1dG8gYnJhbmNoID0gaml0LmJy
YW5jaFRlc3RCaXQ2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih2YWx1ZSkpOwogICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoMCksIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKQEAgLTQxNSw3ICs0MzUsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0NjRSZWdJbW0o
KQogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoMSksIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAot
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICAgICAgaml0LnJldCgpOwogICAgICAgICB9
KTsKIApAQCAtNDI4LDcgKzQ0OCw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQ2NEFkZHJJbW0o
KQogewogICAgIGZvciAodWludDY0X3QgdmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKICAgICAg
ICAgYXV0byB0ZXN0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGF1dG8gYnJhbmNoID0gaml0LmJyYW5jaFRl
c3RCaXQ2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCAwKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodmFs
dWUpKTsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KDAp
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC00MzcsNyArNDU3LDcgQEAgdm9pZCB0ZXN0
QnJhbmNoVGVzdEJpdDY0QWRkckltbSgpCiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW02NCgxKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgICAg
ICBqaXQucmV0KCk7CiAgICAgICAgIH0pOwogCkBAIC00NTQsMTkgKzQ3NCwxOSBAQCB2b2lkIHRl
c3RDb21wYXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9u
KQogICAgIGRvdWJsZSBhcmcyID0gMDsKIAogICAgIGF1dG8gY29tcGFyZURvdWJsZSA9IGNvbXBp
bGUoWyYsIGNvbmRpdGlvbl0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0
RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwog
CiAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJn
MSksIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoJmFyZzIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLTEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CiAgICAgICAgIGppdC5jb21wYXJlRG91YmxlKGNvbmRpdGlvbiwgRlBSSW5mbzo6ZnBS
ZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCi0gICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGls
b2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAKICAgICBhdXRvIGNvbXBh
cmVEb3VibGVHZW5lcmljID0gY29tcGlsZShbJiwgY29uZGl0aW9uXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcxKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGpp
dC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMiksIEZQUkluZm86
OmZwUmVnVDEpOwpAQCAtNDc1LDcgKzQ5NSw3IEBAIHZvaWQgdGVzdENvbXBhcmVEb3VibGUoTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCiAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CiAgICAgICAgIGp1bXAubGluaygmaml0KTsKIAotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0
LnJldCgpOwogICAgIH0pOwogCkBAIC00OTMsMTEgKzUxMywxMSBAQCB2b2lkIHRlc3RNdWwzMldp
dGhJbW1lZGlhdGVzKCkKIHsKICAgICBmb3IgKGF1dG8gaW1tZWRpYXRlIDogaW50MzJPcGVyYW5k
cygpKSB7CiAgICAgICAgIGF1dG8gbXVsID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0
KSB7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGppdC5tdWwzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbW1lZGlhdGUpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIAotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAg
ICAgICAgICAgaml0LnJldCgpOwogICAgICAgICB9KTsKIApAQCAtNTExLDExICs1MzEsMTEgQEAg
dm9pZCB0ZXN0TXVsMzJTaWduRXh0ZW5kKCkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKICAgICAgICAgYXV0byBtdWwgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAg
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICAgICAgaml0Lm11
bHRpcGx5U2lnbkV4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAKLSAgICAgICAgICAgIGppdC5lbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKICAgICAgICAgfSk7CiAKQEAgLTUzMiwxOSArNTUy
LDE5IEBAIHZvaWQgdGVzdENvbXBhcmVGbG9hdChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0
aW9uIGNvbmRpdGlvbikKICAgICBmbG9hdCBhcmcyID0gMDsKIAogICAgIGF1dG8gY29tcGFyZUZs
b2F0ID0gY29tcGlsZShbJiwgY29uZGl0aW9uXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CiAKICAgICAgICAgaml0LmxvYWRGbG9hdChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoJmFyZzEpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0LmxvYWRGbG9hdChD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLTEpLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIGppdC5jb21wYXJlRmxvYXQoY29uZGl0aW9uLCBGUFJJ
bmZvOjpmcFJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QxLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CiAKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5j
dGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKIAogICAgIGF1
dG8gY29tcGFyZUZsb2F0R2VuZXJpYyA9IGNvbXBpbGUoWyYsIGNvbmRpdGlvbl0gKENDYWxsSGVs
cGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAg
ICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIGppdC5sb2FkRmxvYXQoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcxKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAg
ICAgIGppdC5sb2FkRmxvYXQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcyKSwgRlBS
SW5mbzo6ZnBSZWdUMSk7CkBAIC01NTMsNyArNTczLDcgQEAgdm9pZCB0ZXN0Q29tcGFyZUZsb2F0
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQogICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOwogICAgICAgICBqdW1wLmxpbmsoJmppdCk7CiAKLSAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAg
IGppdC5yZXQoKTsKICAgICB9KTsKIApAQCAtNTczLDcgKzU5Myw3IEBAIHZvaWQgdGVzdFByb2Jl
UmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiB7CiAgICAgYm9vbCBwcm9iZVdhc0NhbGxlZCA9IGZh
bHNlOwogICAgIGNvbXBpbGVBbmRSdW48dm9pZD4oWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewot
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICBqaXQucHVzaFBhaXIoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBqaXQucHVzaFBhaXIoR1BSSW5m
bzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwpAQCAtNjA5LDcgKzYyOSw3
IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAgICAgIGppdC5w
b3BQYWlyKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAg
ICAgICAgaml0LnBvcFBhaXIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwogCi0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAg
ICAgQ0hFQ0tfRVEocHJvYmVXYXNDYWxsZWQsIHRydWUpOwpAQCAtNjIyLDcgKzY0Miw3IEBAIHZv
aWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRSZWdpc3RlcnMoKQogICAgIC8vIHRoYXQgb3VyIHdy
aXRlcyBkaWQgdGFrZSBlZmZlY3QuCiAgICAgdW5zaWduZWQgcHJvYmVDYWxsQ291bnQgPSAwOwog
ICAgIGNvbXBpbGVBbmRSdW48dm9pZD4oWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAg
ICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoaml0KTsKIAogICAgICAgICBqaXQucHVzaFBhaXIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBqaXQucHVzaFBhaXIoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwpAQCAtNjcxLDcgKzY5MSw3IEBAIHZv
aWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRSZWdpc3RlcnMoKQogICAgICAgICBqaXQucG9wUGFp
cihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgICAg
IGppdC5wb3BQYWlyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKIAotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogICAgIENI
RUNLX0VRKHByb2JlQ2FsbENvdW50LCAyKTsKQEAgLTY5OSw3ICs3MTksNyBAQCB2b2lkIHRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMoKQogICAgIENQVVN0YXRlIG9yaWdpbmFsU3RhdGU7CiAKICAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0
LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzIGludG8gdGhlIHJlZ2lzdGVy
cyAoZXhjZXB0IGZvciBzcCwgZnAsIGFuZCBwYykuCiAgICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CkBAIC03NzMsNyArNzkzLDcgQEAgdm9pZCB0ZXN0UHJv
YmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgICAgICAgICBDSEVDS19FUShjcHUuZnByPHVpbnQ2
NF90PihpZCksIG9yaWdpbmFsU3RhdGUuZnByPHVpbnQ2NF90PihpZCkpOwogICAgICAgICB9KTsK
IAotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogICAgIENIRUNL
X0VRKHByb2JlQ2FsbENvdW50LCA1KTsKQEAgLTgwMSw3ICs4MjEsNyBAQCB2b2lkIHRlc3RQcm9i
ZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQm
KT4gY29tcHV0ZQogI2VuZGlmCiAKICAgICBjb21waWxlQW5kUnVuPHZvaWQ+KFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgLy8gUHJlc2VydmUgb3Jp
Z2luYWwgc3RhY2sgcG9pbnRlciBhbmQgbW9kaWZ5IHRoZSBzcCwgYW5kCiAgICAgICAgIC8vIHdy
aXRlIGV4cGVjdGVkIHZhbHVlcyBpbnRvIG90aGVyIHJlZ2lzdGVycyAoZXhjZXB0IGZvciBmcCwg
YW5kIHBjKS4KQEAgLTg5MSw3ICs5MTEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQ
b2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAg
ICAgICAgICAgQ0hFQ0tfRVEoY3B1LnNwKCksIG9yaWdpbmFsU1ApOwogICAgICAgICB9KTsKIAot
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogICAgIENIRUNLX0VR
KHByb2JlQ2FsbENvdW50LCA0KTsKQEAgLTk0MSwxMiArOTYxLDEyIEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNQcm9ncmFtQ291bnRlcigpCiAgICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFj
aGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxv
Z3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5y
ZXQoKTsKICAgICB9KTsKIAogICAgIGNvbXBpbGVBbmRSdW48dm9pZD4oWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2
YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJzLgogICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgewpAQCAtOTgzLDcgKzEwMDMsNyBAQCB2b2lkIHRlc3RQcm9iZU1v
ZGlmaWVzU3RhY2tWYWx1ZXMoKQogI2VuZGlmCiAKICAgICBjb21waWxlQW5kUnVuPHZvaWQ+KFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgLy8gV3Jp
dGUgZXhwZWN0ZWQgdmFsdWVzIGludG8gdGhlIHJlZ2lzdGVycy4KICAgICAgICAgaml0LnByb2Jl
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKQEAgLTEwNzYsNyArMTA5Niw3IEBAIHZv
aWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgICAgICBjcHUuc3AoKSA9
IG9yaWdpbmFsU1A7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQu
cmV0KCk7CiAgICAgfSk7CiAKQEAgLTEwODgsMzAgKzExMDgsMzAgQEAgdm9pZCB0ZXN0Qnl0ZVN3
YXAoKQogewogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICBhdXRvIGJ5dGVTd2Fw
MTYgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAg
ICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CiAgICAgICAgIGppdC5ieXRlU3dhcDE2KEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
LSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKICAgICBDSEVDS19F
UShpbnZva2U8dWludDY0X3Q+KGJ5dGVTd2FwMTYsIDB4YWFiYmNjZGRlZTAwMTEyMiksIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PigweDIyMTEpKTsKICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+
KGJ5dGVTd2FwMTYsIDB4YWFiYmNjZGRlZTAwZmZhYSksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pigw
eGFhZmYpKTsKIAogICAgIGF1dG8gYnl0ZVN3YXAzMiA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVy
cyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBl
bWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgaml0LmJ5dGVTd2Fw
MzIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0
LnJldCgpOwogICAgIH0pOwogICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oYnl0ZVN3YXAz
MiwgMHhhYWJiY2NkZGVlMDAxMTIyKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4MjIxMTAwZWUp
KTsKICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KGJ5dGVTd2FwMzIsIDB4YWFiYmNjZGRl
ZTAwZmZhYSksIHN0YXRpY19jYXN0PHVpbnQ2NF90PigweGFhZmYwMGVlKSk7CiAKICAgICBhdXRv
IGJ5dGVTd2FwNjQgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIGppdC5ieXRlU3dhcDY0KEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVt
aXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKICAg
ICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KGJ5dGVTd2FwNjQsIDB4YWFiYmNjZGRlZTAwMTEy
MiksIHN0YXRpY19jYXN0PHVpbnQ2NF90PigweDIyMTEwMGVlZGRjY2JiYWEpKTsKQEAgLTExMzAs
NyArMTE1MCw3IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIoKQogICAgIENI
RUNLX0VRKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNob3NlbkRvdWJs
ZSkpID09IGNob3NlbkRvdWJsZSwgZmFsc2UpOwogCiAgICAgYXV0byBzZWwgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3Vl
KCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAgICAgICAgIGppdC5sb2Fk
RG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmemVybyksIEZQUkluZm86OnJldHVy
blZhbHVlRlBSKTsKICAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZhcmcxKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgIGppdC5sb2FkRG91Ymxl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMiksIEZQUkluZm86OmZwUmVnVDIpOwpA
QCAtMTEzOCw3ICsxMTU4LDcgQEAgdm9pZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMigp
CiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLTEpLCBHUFJJ
bmZvOjpyZWdUMCk7CiAgICAgICAgIGppdC5tb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyKE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBGUFJJbmZv
OjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QyLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CiAK
LSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKIApAQCAtMTE2NCw3
ICsxMTg0LDcgQEAgdm9pZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCgpCiAgICAgQ0hF
Q0tfRVEoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4oY2hvc2VuRG91Ymxl
KSkgPT0gY2hvc2VuRG91YmxlLCBmYWxzZSk7CiAKICAgICBhdXRvIHNlbCA9IGNvbXBpbGUoWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAgICAgICAgaml0LmxvYWRE
b3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgRlBSSW5mbzo6cmV0dXJu
VmFsdWVGUFIpOwogICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoJmFyZzEpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgaml0LmxvYWREb3VibGUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcyKSwgRlBSSW5mbzo6ZnBSZWdUMik7CkBA
IC0xMTcyLDcgKzExOTIsNyBAQCB2b2lkIHRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0KCkK
ICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NCgtMSksIEdQUklu
Zm86OnJlZ1QwKTsKICAgICAgICAgaml0Lm1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQoTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86
OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDIsIEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKIAot
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCkBAIC0xMTkyLDEw
ICsxMjEyLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RDYWdlUHJlc2VydmVzUEFDRmFpbHVyZUJpdCgp
CiAjaWYgR0lHQUNBR0VfRU5BQkxFRAogICAgIEFTU0VSVCghR2lnYWNhZ2U6OmlzRGlzYWJsaW5n
UHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpKTsKICAgICBhdXRvIGNhZ2UgPSBjb21waWxlKFtd
IChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAgICAgICAgaml0LmNhZ2VD
b25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBq
aXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
LSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKIApAQCAtMTIxNiwx
MCArMTIzNiwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q2FnZVByZXNlcnZlc1BBQ0ZhaWx1cmVCaXQo
KQogICAgIENIRUNLX0VRKGludm9rZTx2b2lkKj4oY2FnZSwgdGFnZ2VkUHRyLCAxKSwgcHRyKTsK
IAogICAgIGF1dG8gY2FnZVdpdGhvdXRBdXRoZW50aWNhdGlvbiA9IGNvbXBpbGUoW10gKENDYWxs
SGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQuY2FnZVdpdGhvdXRV
bnRhZ2dpbmcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAg
ICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377566</attachid>
            <date>2019-08-29 04:00:35 -0700</date>
            <delta_ts>2019-09-06 09:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201138-20190829130034.patch</filename>
            <type>text/plain</type>
            <size>21595</size>
            <attacher name="Guillaume Emont">guijemont</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTg1ZjhlYTMyMjBlNjg5YjUyNGY0ZDIwZDdlNTY3OTVjOTBiN2YwLi5mNjJlODFhZGMyNzI3ZWZm
NjAxMzJjZmE1YjAyMjJhM2VmNGZhZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxOS0wOC0yNiAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CisKKyAgICAgICAgdGVzdG1hc206IHNhdmUgcjYgaW4gSklUJ2VkIGNvZGUgb24gQVJN
X1RIVU1CMgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxMTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJBcm12NyB1c2VzIHI2IGFzIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLCBhbmQg
aXQgaXMgYQorICAgICAgICBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXIuIFRoZSBKSVRzIHVzZQorICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKSBhbmQgZnJpZW5kcyB0
byBzYXZlCisgICAgICAgIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMsIGJ1dCB0aGVyZSBpcyBubyBz
dWNoIG1lY2hhbmlzbSBpbiB0ZXN0bWFzbSwKKyAgICAgICAgd2hpY2ggc2VlbXMgdG8gbWFrZSB0
aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBtYWNyb2Fzc2VtYmxlciBkb2VzIG5vdAorICAgICAgICB1
c2UgY2FsbGVlLXNhdmVkIHJlZ2lzdGVycyAod2hpY2ggSSBndWVzcyBpcyB0cnVlIGZvciBhbGwg
b3RoZXIKKyAgICAgICAgYXJjaGl0ZWN0dXJlcywgYnV0IG5vdCBmb3IgQXJtdjcpLgorCisgICAg
ICAgIFRoaXMgaXNzdWUgbWVhbnMgdGhhdCB0ZXN0bWFzbSBjcmFzaGVzIG9uIEFybXY3IHNpbmNl
IGNvZGUgZ2VuZXJhdGVkCisgICAgICAgIGJ5IGdjYyB1c2VzIHI2LCBhbmQgaXQgZ2V0cyBtb2Rp
ZmllZCBieSBKSVQnZWQgY29kZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBzdXJlIHRo
YXQgd2Ugc2F2ZSBhbmQgcmVzdG9yZSByNiBmb3IgYWxsIGNvZGUKKyAgICAgICAgY29tcGlsZWQg
YnkgdGVzdG1hc20gb24gQXJtdjcuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3Bw
OgorICAgICAgICAoSlNDOjplbWl0RnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OmVt
aXRGdW5jdGlvbkVwaWxvZ3VlKToKKyAgICAgICAgKEpTQzo6dGVzdFNpbXBsZSk6CisgICAgICAg
IChKU0M6OnRlc3RHZXRFZmZlY3RpdmVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6dGVzdEJyYW5j
aFRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0Qml0
MzJSZWdSZWcpOgorICAgICAgICAoSlNDOjp0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnSW1tKToKKyAg
ICAgICAgKEpTQzo6dGVzdEJyYW5jaFRlc3RCaXQzMkFkZHJJbW0pOgorICAgICAgICAoSlNDOjp0
ZXN0QnJhbmNoVGVzdEJpdDY0UmVnUmVnKToKKyAgICAgICAgKEpTQzo6dGVzdEJyYW5jaFRlc3RC
aXQ2NFJlZ0ltbSk6CisgICAgICAgIChKU0M6OnRlc3RCcmFuY2hUZXN0Qml0NjRBZGRySW1tKToK
KyAgICAgICAgKEpTQzo6dGVzdENvbXBhcmVEb3VibGUpOgorICAgICAgICAoSlNDOjp0ZXN0TXVs
MzJXaXRoSW1tZWRpYXRlcyk6CisgICAgICAgIChKU0M6OnRlc3RNdWwzMlNpZ25FeHRlbmQpOgor
ICAgICAgICAoSlNDOjp0ZXN0Q29tcGFyZUZsb2F0KToKKyAgICAgICAgKEpTQzo6dGVzdFByb2Jl
UmVhZHNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZVdyaXRlc0Fy
Z3VtZW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlUHJlc2VydmVzR1BSUyk6
CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKToKKyAgICAgICAg
KEpTQzo6dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcik6CisgICAgICAgIChKU0M6OnRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAoSlNDOjp0ZXN0Qnl0ZVN3YXAp
OgorICAgICAgICAoSlNDOjp0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMik6CisgICAgICAg
IChKU0M6OnRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0KToKKyAgICAgICAgKEpTQzo6dGVz
dENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKwogMjAxOS0wOC0yMiAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVudCBG
aWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA5NGNlMzJjOWNhYTlmNDljYTc4MjFhMGQxNWQ4
MjZmOWJlNjA1ZDZiLi5mYzU4ZGMxMzAwNTMyOWEwYWVlYjY0MDllMjEyMDU1OThjYTBmZjliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTc3
LDEyICsxNzcsMzIgQEAgVCBjb21waWxlQW5kUnVuKEdlbmVyYXRvciYmIGdlbmVyYXRvciwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICByZXR1cm4gaW52b2tlPFQ+KGNvbXBpbGUoV1RGTW92
ZShnZW5lcmF0b3IpKSwgYXJndW1lbnRzLi4uKTsKIH0KIAordm9pZCBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShDQ2FsbEhlbHBlcnMmIGppdCkKK3sKKyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAvLyBNYWNyb0Fzc2VtYmxlckFSTXY3IHVzZXMg
cjYgYXMgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIsIHdoaWNoIGlzIGEKKyAgICAvLyBjYWxsZWUtc2F2
ZWQgcmVnaXN0ZXIsIHNlZSA1LjEuMSBvZiB0aGUgUHJvY2VkdXJlIENhbGwgU3RhbmRhcmQgZm9y
CisgICAgLy8gdGhlIEFSTSBBcmNoaXRlY3R1cmUuCisgICAgLy8gaHR0cDovL2luZm9jZW50ZXIu
YXJtLmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmloaTAwNDJmL0lISTAwNDJGX2FhcGNzLnBk
ZgorICAgIGppdC5wdXNoKEFSTVJlZ2lzdGVyczo6cjYpOworI2VuZGlmCit9CisKK3ZvaWQgZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoQ0NhbGxIZWxwZXJzJiBqaXQpCit7CisjaWYgQ1BVKEFSTV9USFVN
QjIpCisgICAgaml0LnBvcChBUk1SZWdpc3RlcnM6OnI2KTsKKyNlbmRpZgorICAgIGppdC5lbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOworfQorCiB2b2lkIHRlc3RTaW1wbGUoKQogewogICAgIENIRUNL
X0VRKGNvbXBpbGVBbmRSdW48aW50PihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAg
aml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3Vl
KGppdCk7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJl
dCgpOwogICAgIH0pLCA0Mik7CiB9CkBAIC0xOTAsMTEgKzIxMCwxMSBAQCB2b2lkIHRlc3RTaW1w
bGUoKQogdm9pZCB0ZXN0R2V0RWZmZWN0aXZlQWRkcmVzcyhzaXplX3QgcG9pbnRlciwgcHRyZGlm
Zl90IGxlbmd0aCwgaW50MzJfdCBvZmZzZXQsIENDYWxsSGVscGVyczo6U2NhbGUgc2NhbGUpCiB7
CiAgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxzaXplX3Q+KFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKGppdCk7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHBvaW50ZXIpKSwgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9j
YXN0PHZvaWQqPihsZW5ndGgpKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBqaXQuZ2V0RWZm
ZWN0aXZlQWRkcmVzcyhDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDEsIHNjYWxlLCBvZmZzZXQpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0g
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25F
cGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSksIHBvaW50ZXIgKyBvZmZz
ZXQgKyAoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnQ+KHNjYWxlKSkg
KiBsZW5ndGgpOwogfQpAQCAtMjEwLDcgKzIzMCw3IEBAIHZvaWQgdGVzdEJyYW5jaFRydW5jYXRl
RG91YmxlVG9JbnQzMihkb3VibGUgdmFsLCBpbnQzMl90IGV4cGVjdGVkKQogICAgIGNvbnN0IGJv
b2wgaXNCaWdFbmRpYW4gPSBmYWxzZTsKICNlbmRpZgogICAgIENIRUNLX0VRKGNvbXBpbGVBbmRS
dW48aW50PihbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAg
ICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIGlm
IChpc0JpZ0VuZGlhbikgewogICAgICAgICAgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIodmFsQXNVSW50ID4+IDMyKSwKQEAgLTIzMiw3ICsyNTIsNyBAQCB2b2lkIHRl
c3RCcmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZG91YmxlIHZhbCwgaW50MzJfdCBleHBlY3Rl
ZCkKIAogICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpKSwgTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxv
Z3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5y
ZXQoKTsKICAgICB9KSwgZXhwZWN0ZWQpOwogfQpAQCAtMzE4LDcgKzMzOCw3IEBAIHZvaWQgdGVz
dEJyYW5jaFRlc3RCaXQzMlJlZ1JlZygpCiB7CiAgICAgZm9yICh1aW50MzJfdCB2YWx1ZSA6IGlu
dDMyT3BlcmFuZHMoKSkgewogICAgICAgICBhdXRvIHRlc3QgPSBjb21waWxlKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICAgICAgYXV0
byBicmFuY2ggPSBqaXQuYnJhbmNoVGVzdEJpdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwpAQCAtMzI3LDcgKzM0Nyw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQzMlJl
Z1JlZygpCiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQp
OwogCi0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7CiAgICAg
ICAgIH0pOwogCkBAIC0zNDAsNyArMzYwLDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJpdDMyUmVn
SW1tKCkKIHsKICAgICBmb3IgKHVpbnQzMl90IHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CiAg
ICAgICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAg
ICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgICAgICBhdXRvIGJyYW5jaCA9IGppdC5icmFu
Y2hUZXN0Qml0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodmFsdWUpKTsKICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CkBAIC0zNDksNyArMzY5LDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnSW1tKCkK
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAKLSAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKICAgICAgICAgfSk7
CiAKQEAgLTM2Miw3ICszODIsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0MzJBZGRySW1tKCkK
IHsKICAgICBmb3IgKHVpbnQzMl90IHZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7CiAgICAgICAg
IGF1dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICAg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZShqaXQpOwogCiAgICAgICAgICAgICBhdXRvIGJyYW5jaCA9IGppdC5icmFuY2hUZXN0
Qml0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgMCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHZhbHVl
KSk7CiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtMzcxLDcgKzM5MSw3IEBAIHZvaWQgdGVzdEJy
YW5jaFRlc3RCaXQzMkFkZHJJbW0oKQogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAg
IGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICAgICAg
aml0LnJldCgpOwogICAgICAgICB9KTsKIApAQCAtMzg0LDcgKzQwNCw3IEBAIHZvaWQgdGVzdEJy
YW5jaFRlc3RCaXQ2NFJlZ1JlZygpCiB7CiAgICAgZm9yICh1aW50NjRfdCB2YWx1ZSA6IGludDY0
T3BlcmFuZHMoKSkgewogICAgICAgICBhdXRvIHRlc3QgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAg
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICAgICAgYXV0byBi
cmFuY2ggPSBqaXQuYnJhbmNoVGVzdEJpdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCgwKSwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwpAQCAtMzkzLDcgKzQxMyw3IEBAIHZvaWQgdGVzdEJyYW5jaFRlc3RCaXQ2NFJlZ1Jl
ZygpCiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCgxKSwg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwog
Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGVt
aXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7CiAgICAgICAg
IH0pOwogCkBAIC00MDYsNyArNDI2LDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJpdDY0UmVnSW1t
KCkKIHsKICAgICBmb3IgKHVpbnQ2NF90IHZhbHVlIDogaW50NjRPcGVyYW5kcygpKSB7CiAgICAg
ICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAg
ICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgICAgICBhdXRvIGJyYW5jaCA9IGppdC5icmFuY2hU
ZXN0Qml0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodmFsdWUpKTsKICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CkBAIC00MTUsNyArNDM1LDcgQEAgdm9pZCB0ZXN0QnJhbmNoVGVzdEJpdDY0UmVnSW1tKCkKICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KDEpLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAKLSAgICAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKICAgICAgICAgfSk7CiAK
QEAgLTQyOCw3ICs0NDgsNyBAQCB2b2lkIHRlc3RCcmFuY2hUZXN0Qml0NjRBZGRySW1tKCkKIHsK
ICAgICBmb3IgKHVpbnQ2NF90IHZhbHVlIDogaW50NjRPcGVyYW5kcygpKSB7CiAgICAgICAgIGF1
dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICAgICAg
aml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9s
b2d1ZShqaXQpOwogCiAgICAgICAgICAgICBhdXRvIGJyYW5jaCA9IGppdC5icmFuY2hUZXN0Qml0
NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgMCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHZhbHVlKSk7
CiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCgwKSwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtNDM3LDcgKzQ1Nyw3IEBAIHZvaWQgdGVzdEJyYW5j
aFRlc3RCaXQ2NEFkZHJJbW0oKQogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tNjQoMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGRv
bmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7
CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICAgICAgaml0
LnJldCgpOwogICAgICAgICB9KTsKIApAQCAtNDU0LDE5ICs0NzQsMTkgQEAgdm9pZCB0ZXN0Q29t
cGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKICAg
ICBkb3VibGUgYXJnMiA9IDA7CiAKICAgICBhdXRvIGNvbXBhcmVEb3VibGUgPSBjb21waWxlKFsm
LCBjb25kaXRpb25dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAg
ICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzEpLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKCZhcmcyKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0xKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OwogICAgICAgICBqaXQuY29tcGFyZURvdWJsZShjb25kaXRpb24sIEZQUkluZm86OmZwUmVnVDAs
IEZQUkluZm86OmZwUmVnVDEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIAotICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
aml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCiAgICAgYXV0byBjb21wYXJlRG91
YmxlR2VuZXJpYyA9IGNvbXBpbGUoWyYsIGNvbmRpdGlvbl0gKENDYWxsSGVscGVycyYgaml0KSB7
Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cigmYXJnMSksIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBqaXQubG9h
ZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzIpLCBGUFJJbmZvOjpmcFJl
Z1QxKTsKQEAgLTQ3NSw3ICs0OTUsNyBAQCB2b2lkIHRlc3RDb21wYXJlRG91YmxlKE1hY3JvQXNz
ZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQogICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAg
ICAgICBqdW1wLmxpbmsoJmppdCk7CiAKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQo
KTsKICAgICB9KTsKIApAQCAtNDkzLDExICs1MTMsMTEgQEAgdm9pZCB0ZXN0TXVsMzJXaXRoSW1t
ZWRpYXRlcygpCiB7CiAgICAgZm9yIChhdXRvIGltbWVkaWF0ZSA6IGludDMyT3BlcmFuZHMoKSkg
ewogICAgICAgICBhdXRvIG11bCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewot
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgICAgICBqaXQubXVsMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoaW1tZWRpYXRlKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAg
ICAgIGppdC5yZXQoKTsKICAgICAgICAgfSk7CiAKQEAgLTUxMSwxMSArNTMxLDExIEBAIHZvaWQg
dGVzdE11bDMyU2lnbkV4dGVuZCgpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVy
YW5kcygpKSB7CiAgICAgICAgIGF1dG8gbXVsID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgICAgIGppdC5tdWx0aXBs
eVNpZ25FeHRlbmQzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCi0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAg
ICAgICAgICAgICBqaXQucmV0KCk7CiAgICAgICAgIH0pOwogCkBAIC01MzIsMTkgKzU1MiwxOSBA
QCB2b2lkIHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBj
b25kaXRpb24pCiAgICAgZmxvYXQgYXJnMiA9IDA7CiAKICAgICBhdXRvIGNvbXBhcmVGbG9hdCA9
IGNvbXBpbGUoWyYsIGNvbmRpdGlvbl0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShq
aXQpOwogCiAgICAgICAgIGppdC5sb2FkRmxvYXQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZhcmcxKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGppdC5sb2FkRmxvYXQoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcyKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0xKSwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwogICAgICAgICBqaXQuY29tcGFyZUZsb2F0KGNvbmRpdGlvbiwgRlBSSW5mbzo6
ZnBSZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCi0g
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25F
cGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAKICAgICBhdXRvIGNv
bXBhcmVGbG9hdEdlbmVyaWMgPSBjb21waWxlKFsmLCBjb25kaXRpb25dIChDQ2FsbEhlbHBlcnMm
IGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICBqaXQubG9hZEZsb2F0KENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMSksIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBq
aXQubG9hZEZsb2F0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMiksIEZQUkluZm86
OmZwUmVnVDEpOwpAQCAtNTUzLDcgKzU3Myw3IEBAIHZvaWQgdGVzdENvbXBhcmVGbG9hdChNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
ICAgICAgICAganVtcC5saW5rKCZqaXQpOwogCi0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQu
cmV0KCk7CiAgICAgfSk7CiAKQEAgLTU3Myw3ICs1OTMsNyBAQCB2b2lkIHRlc3RQcm9iZVJlYWRz
QXJndW1lbnRSZWdpc3RlcnMoKQogewogICAgIGJvb2wgcHJvYmVXYXNDYWxsZWQgPSBmYWxzZTsK
ICAgICBjb21waWxlQW5kUnVuPHZvaWQ+KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CiAKICAgICAgICAgaml0LnB1c2hQYWlyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgaml0LnB1c2hQYWlyKEdQUkluZm86OmFy
Z3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKQEAgLTYwOSw3ICs2MjksNyBAQCB2
b2lkIHRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMoKQogICAgICAgICBqaXQucG9wUGFp
cihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgICAg
IGppdC5wb3BQYWlyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKIAotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogICAgIENI
RUNLX0VRKHByb2JlV2FzQ2FsbGVkLCB0cnVlKTsKQEAgLTYyMiw3ICs2NDIsNyBAQCB2b2lkIHRl
c3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAgICAvLyB0aGF0IG91ciB3cml0ZXMg
ZGlkIHRha2UgZWZmZWN0LgogICAgIHVuc2lnbmVkIHByb2JlQ2FsbENvdW50ID0gMDsKICAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0
LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CiAKICAgICAgICAgaml0LnB1c2hQYWlyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgaml0LnB1c2hQYWlyKEdQUkluZm86OmFyZ3VtZW50
R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKQEAgLTY3MSw3ICs2OTEsNyBAQCB2b2lkIHRl
c3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAgICAgICAgaml0LnBvcFBhaXIoR1BS
SW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgICAgICBqaXQu
cG9wUGFpcihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAK
LSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKICAgICBDSEVDS19F
UShwcm9iZUNhbGxDb3VudCwgMik7CkBAIC02OTksNyArNzE5LDcgQEAgdm9pZCB0ZXN0UHJvYmVQ
cmVzZXJ2ZXNHUFJTKCkKICAgICBDUFVTdGF0ZSBvcmlnaW5hbFN0YXRlOwogCiAgICAgY29tcGls
ZUFuZFJ1bjx2b2lkPihbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0
RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwog
CiAgICAgICAgIC8vIFdyaXRlIGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMgKGV4
Y2VwdCBmb3Igc3AsIGZwLCBhbmQgcGMpLgogICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgewpAQCAtNzczLDcgKzc5Myw3IEBAIHZvaWQgdGVzdFByb2JlUHJl
c2VydmVzR1BSUygpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4o
aWQpLCBvcmlnaW5hbFN0YXRlLmZwcjx1aW50NjRfdD4oaWQpKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKICAgICBDSEVDS19FUShw
cm9iZUNhbGxDb3VudCwgNSk7CkBAIC04MDEsNyArODIxLDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2Rp
Zmllc1N0YWNrUG9pbnRlcihXVEY6OkZ1bmN0aW9uPHZvaWQqKFByb2JlOjpDb250ZXh0Jik+IGNv
bXB1dGUKICNlbmRpZgogCiAgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihbJl0gKENDYWxsSGVscGVy
cyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBl
bWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFs
IHN0YWNrIHBvaW50ZXIgYW5kIG1vZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBl
eHBlY3RlZCB2YWx1ZXMgaW50byBvdGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBw
YykuCkBAIC04OTEsNyArOTExLDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRl
cihXVEY6OkZ1bmN0aW9uPHZvaWQqKFByb2JlOjpDb250ZXh0Jik+IGNvbXB1dGUKICAgICAgICAg
ICAgIENIRUNLX0VRKGNwdS5zcCgpLCBvcmlnaW5hbFNQKTsKICAgICAgICAgfSk7CiAKLSAgICAg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKICAgICBDSEVDS19FUShwcm9i
ZUNhbGxDb3VudCwgNCk7CkBAIC05NDEsMTIgKzk2MSwxMiBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzUHJvZ3JhbUNvdW50ZXIoKQogICAgICAgICAgICAgY29udGludWF0aW9uV2FzUmVhY2hlZCA9
IHRydWU7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgp
OworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7
CiAgICAgfSk7CiAKICAgICBjb21waWxlQW5kUnVuPHZvaWQ+KFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKGppdCk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVz
IGludG8gdGhlIHJlZ2lzdGVycy4KICAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpIHsKQEAgLTk4Myw3ICsxMDAzLDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmll
c1N0YWNrVmFsdWVzKCkKICNlbmRpZgogCiAgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihbJl0gKEND
YWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
ICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRlIGV4
cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCiAgICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CkBAIC0xMDc2LDcgKzEwOTYsNyBAQCB2b2lkIHRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMoKQogICAgICAgICAgICAgY3B1LnNwKCkgPSBvcmln
aW5hbFNQOwogICAgICAgICB9KTsKIAotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgp
OwogICAgIH0pOwogCkBAIC0xMDg4LDMwICsxMTA4LDMwIEBAIHZvaWQgdGVzdEJ5dGVTd2FwKCkK
IHsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAgICAgYXV0byBieXRlU3dhcDE2ID0g
Y29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAgICAgICAg
IGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OwogICAgICAgICBqaXQuYnl0ZVN3YXAxNihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGls
b2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAgICAgQ0hFQ0tfRVEoaW52
b2tlPHVpbnQ2NF90PihieXRlU3dhcDE2LCAweGFhYmJjY2RkZWUwMDExMjIpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oMHgyMjExKSk7CiAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90PihieXRl
U3dhcDE2LCAweGFhYmJjY2RkZWUwMGZmYWEpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMHhhYWZm
KSk7CiAKICAgICBhdXRvIGJ5dGVTd2FwMzIgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGpp
dCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoaml0KTsKICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIGppdC5ieXRlU3dhcDMyKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQo
KTsKICAgICB9KTsKICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KGJ5dGVTd2FwMzIsIDB4
YWFiYmNjZGRlZTAwMTEyMiksIHN0YXRpY19jYXN0PHVpbnQ2NF90PigweDIyMTEwMGVlKSk7CiAg
ICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90PihieXRlU3dhcDMyLCAweGFhYmJjY2RkZWUwMGZm
YWEpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMHhhYWZmMDBlZSkpOwogCiAgICAgYXV0byBieXRl
U3dhcDY0ID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVt
aXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwogICAgICAgICBqaXQuYnl0ZVN3YXA2NChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAgICAgQ0hF
Q0tfRVEoaW52b2tlPHVpbnQ2NF90PihieXRlU3dhcDY0LCAweGFhYmJjY2RkZWUwMDExMjIpLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oMHgyMjExMDBlZWRkY2NiYmFhKSk7CkBAIC0xMTMwLDcgKzEx
NTAsNyBAQCB2b2lkIHRlc3RNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyKCkKICAgICBDSEVDS19F
UShzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGZsb2F0PihjaG9zZW5Eb3VibGUpKSA9
PSBjaG9zZW5Eb3VibGUsIGZhbHNlKTsKIAogICAgIGF1dG8gc2VsID0gY29tcGlsZShbJl0gKEND
YWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwor
ICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQubG9hZERvdWJs
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCBGUFJJbmZvOjpyZXR1cm5WYWx1
ZUZQUik7CiAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmYXJnMSksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICBqaXQubG9hZERvdWJsZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzIpLCBGUFJJbmZvOjpmcFJlZ1QyKTsKQEAgLTEx
MzgsNyArMTE1OCw3IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIoKQogICAg
ICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xKSwgR1BSSW5mbzo6
cmVnVDApOwogICAgICAgICBqaXQubW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMihNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBS
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMiwgRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpOwogCi0gICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGls
b2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAKQEAgLTExNjQsNyArMTE4
NCw3IEBAIHZvaWQgdGVzdE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQoKQogICAgIENIRUNLX0VR
KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNob3NlbkRvdWJsZSkpID09
IGNob3NlbkRvdWJsZSwgZmFsc2UpOwogCiAgICAgYXV0byBzZWwgPSBjb21waWxlKFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Cisg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAgICAgICAgIGppdC5sb2FkRG91Ymxl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmemVybyksIEZQUkluZm86OnJldHVyblZhbHVl
RlBSKTsKICAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZhcmcxKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMiksIEZQUkluZm86OmZwUmVnVDIpOwpAQCAtMTE3
Miw3ICsxMTkyLDcgQEAgdm9pZCB0ZXN0TW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCgpCiAgICAg
ICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoLTEpLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgIGppdC5tb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0KE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJl
Z1QxLCBGUFJJbmZvOjpmcFJlZ1QyLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CiAKLSAgICAg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxv
Z3VlKGppdCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKIApAQCAtMTE5MiwxMCArMTIx
MiwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q2FnZVByZXNlcnZlc1BBQ0ZhaWx1cmVCaXQoKQogI2lm
IEdJR0FDQUdFX0VOQUJMRUQKICAgICBBU1NFUlQoIUdpZ2FjYWdlOjppc0Rpc2FibGluZ1ByaW1p
dGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKSk7CiAgICAgYXV0byBjYWdlID0gY29tcGlsZShbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Cisg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CiAgICAgICAgIGppdC5jYWdlQ29uZGl0
aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGls
b2d1ZShqaXQpOwogICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CiAKQEAgLTEyMTYsMTAgKzEy
MzYsMTAgQEAgc3RhdGljIHZvaWQgdGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkKICAg
ICBDSEVDS19FUShpbnZva2U8dm9pZCo+KGNhZ2UsIHRhZ2dlZFB0ciwgMSksIHB0cik7CiAKICAg
ICBhdXRvIGNhZ2VXaXRob3V0QXV0aGVudGljYXRpb24gPSBjb21waWxlKFtdIChDQ2FsbEhlbHBl
cnMmIGppdCkgewotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKICAgICAgICAgaml0LmNhZ2VXaXRob3V0VW50YWdn
aW5nKEdpZ2FjYWdlOjpQcmltaXRpdmUsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAg
IGppdC5tb3ZlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OwotICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoaml0KTsKICAgICAgICAgaml0LnJldCgpOwogICAgIH0pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>