<?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>81300</bug_id>
          
          <creation_ts>2012-03-15 19:40:27 -0700</creation_ts>
          <short_desc>Convert hasSpellingMarker to use Internals interface</short_desc>
          <delta_ts>2012-03-20 10:23:02 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>ap</cc>
    
    <cc>gustavo</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580049</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-15 19:40:27 -0700</bug_when>
    <thetext>Adjust hasSpellingMarker tests to use Internals instead of LayoutTestController interface. In my humble opinion, hasSpllingMarker() is able to be supported by Internals. Though I&apos;m not sure whether document parameter can be added to hasSpellingMarker(), I add &apos;document&apos; parameter to this patch in order to move it from LayoutTestController to Internals. If this can be accepted, it looks we can move more functions from LayoutTestController to Internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580111</commentid>
    <comment_count>1</comment_count>
      <attachid>132192</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-15 21:28:04 -0700</bug_when>
    <thetext>Created attachment 132192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580118</commentid>
    <comment_count>2</comment_count>
      <attachid>132192</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-15 21:39:07 -0700</bug_when>
    <thetext>Comment on attachment 132192
Patch

Attachment 132192 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11960199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580127</commentid>
    <comment_count>3</comment_count>
      <attachid>132192</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-15 21:49:19 -0700</bug_when>
    <thetext>Comment on attachment 132192
Patch

Attachment 132192 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11960202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580132</commentid>
    <comment_count>4</comment_count>
      <attachid>132192</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-15 21:54:50 -0700</bug_when>
    <thetext>Comment on attachment 132192
Patch

Attachment 132192 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11954989</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580219</commentid>
    <comment_count>5</comment_count>
      <attachid>132192</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-16 00:18:30 -0700</bug_when>
    <thetext>Comment on attachment 132192
Patch

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

Thanks for taking this.
Please add export symbols to appropriate files. It will fix the build failure.

&gt; Source/WebCore/testing/Internals.cpp:708
&gt; +    if (!document || !document-&gt;frame() || !document-&gt;frame()-&gt;editor())

editor() is never null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580316</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-16 02:51:35 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 132192 [details])
&gt; &gt; Source/WebCore/testing/Internals.cpp:708
&gt; &gt; +    if (!document || !document-&gt;frame() || !document-&gt;frame()-&gt;editor())
&gt; 
&gt; editor() is never null

Thank you for your review. I will submit fixed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580434</commentid>
    <comment_count>7</comment_count>
      <attachid>132264</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-16 05:58:32 -0700</bug_when>
    <thetext>Created attachment 132264
Test patch for EWS - Plz do not review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580549</commentid>
    <comment_count>8</comment_count>
      <attachid>132291</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-16 08:49:28 -0700</bug_when>
    <thetext>Created attachment 132291
Test patch for EWS - Plz do not review

Previous patch was something wrong. I submit same patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580682</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-16 10:58:49 -0700</bug_when>
    <thetext>Wait, this looks like a wrong thing to do. Internals is for things that are not exposed as API - for things that have API, we should be doing end to end testing that includes WebKit layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582537</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-19 17:50:53 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Wait, this looks like a wrong thing to do. Internals is for things that are not exposed as API - for things that have API, we should be doing end to end testing that includes WebKit layer.

Hello Alexey,

Sorry for late response. Could you let me know what is your concern correctly? As you know, some test functions of layout test controllers were moved to Internals. Do you think that this function can&apos;t move to Internals ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582699</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-19 20:44:22 -0700</bug_when>
    <thetext>LayoutTestController is built on top of WebKit. So, it tests not just WebCore, but also WebKit, which is much better.

Testing through Internals is weaker, so it&apos;s only acceptable for things that WebKit isn&apos;t dealing with anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582707</commentid>
    <comment_count>12</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-19 21:00:50 -0700</bug_when>
    <thetext>However, in my humble opinion,  there is no port specific implementation in hasSpllingMarker() of all ports. They implemented that test code for hasSpllingMarker() just calls editor()-&gt;selectionStartHasMarkerFor() function. So, I thought hasSpellingMarker() is able to be moved to Internals. Do you think there is differences of test implementation in each port ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582715</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-19 21:06:56 -0700</bug_when>
    <thetext>The disconnect here is that you seem to view Internals as something inherently better than LayoutTestController. Why? What problem are you solving?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582722</commentid>
    <comment_count>14</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-19 21:19:49 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; The disconnect here is that you seem to view Internals as something inherently better than LayoutTestController. Why? What problem are you solving?

As Ryosuke suggested, to move from DRT APIs to Internals can reduce DRT&apos;s code size and lower the entry barrier for new ports. 

https://lists.webkit.org/pipermail/webkit-dev/2012-February/019491.html

As far as I know, some functions of LayoutTestController were moved from LayoutTestController to Internals because they don&apos;t depend on port specific implementation. If you think this case is not accepted for that refactoring, I&apos;m  will to abandon this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583146</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-20 09:38:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; The disconnect here is that you seem to view Internals as something inherently better than LayoutTestController. Why? What problem are you solving?

In this particular case, the LTC method wans&apos;t using any WebKit layer code so just testing WebCore code should be fine. On the other hand, the patch reduces code duplication and increases the test coverage of the feature on the ports that had previously not implemented the method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583155</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-20 09:45:41 -0700</bug_when>
    <thetext>For the record, I still think that this is a bad idea, but I don&apos;t enough interest to fight this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583167</commentid>
    <comment_count>17</comment_count>
      <attachid>132291</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 10:00:02 -0700</bug_when>
    <thetext>Comment on attachment 132291
Test patch for EWS - Plz do not review

Clearing flags on attachment: 132291

Committed r111405: &lt;http://trac.webkit.org/changeset/111405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583168</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 10:00:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583191</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-20 10:23:02 -0700</bug_when>
    <thetext>I didn&apos;t quite realize that this was using Mac WebKit code that was added squarely for testing. It seems OK to move this to Internals.

However, please note that code in &quot;Private&quot; headers is almost API, and it&apos;s not OK to remove it without someone at Apple checking whether that would break Apple applications. I checked now, and to the best of my knowledge, it&apos;s unused outside WebKit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132192</attachid>
            <date>2012-03-15 21:28:04 -0700</date>
            <delta_ts>2012-03-16 05:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81300-20120316132803.patch</filename>
            <type>text/plain</type>
            <size>62700</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1ZGJiZjExNWZhNzA1
OGUyNjc3N2VkMzZhMDJhZWI5ZTViY2EyYS4uYTc4MWFmMzM1NjA4NjAyYTVlZGY1N2VmYzNkMTBj
ZDY4ZWM5NDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTE1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ29udmVydCBo
YXNTcGVsbGluZ01hcmtlciB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGhhc1NwZWxsaW5nTWFy
a2VyIGZ1bmN0aW9ucywgYmVjYXVzZSBpdCBpcyBhYmxlIHRvIHdvcmsgaW4gdGhlCisgICAgICAg
IGNyb3NzLXBvcnQgd2F5IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRlcmZhY2UuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB3ZSBhcmUgaW1wcm92aW5nIGhlcmUgdGhlIGluZnJhLXN0
cnVjdHVyZQorICAgICAgICBmb3IgdGVzdGluZyBhIHNwZWNpZmljIG1ldGhvZC4KKworICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aGFzU3BlbGxpbmdNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTEzICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNv
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBvcGFjaXR5IGNsYW1waW5nIGludG8gUmVu
ZGVyU3R5bGUgc2V0dGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGI5MTE4Mzc0N2U0NjUxYmI3NDgw
NGZlZjU2MTEwMzJlODAwZmJiYWYuLjhiNDY3NTgxMjE1MmUwZDlmZjdmNzMyOWE2MmM4ZGZmYTQ1
NTYwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMy0xNSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIENvbnZlcnQg
aGFzU3BlbGxpbmdNYXJrZXIgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTMwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OndlYmtpdFdlYkZyYW1lU2VsZWN0aW9uSGFzU3BlbGxpbmdNYXJrZXIgc3Vw
cG9ydCwKKyAgICAgICAgc2luY2UgaXQgY2FuIHN1cHBvcnQgaW4gdGhlIGNyb3NzLXBvcnQgd2F5
IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrKToKKwogMjAxMi0wMy0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PiAmJiBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFs
d2F5cyBlbmFibGUgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCAyNWU0Y2Q2MDc0MjZmOGQ4MTMyZjUzMzc1MGEyZjkxNmU1ZjA0YmE1Li43YzBhZDQ2
ODk4N2M5NDcwMTNmM2Q0ZjJiYTQzYmVmMzE0OTVmNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTItMDMtMTUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBDb252ZXJ0IGhhc1NwZWxsaW5nTWFya2VyIHRvIHVzZSBJbnRl
cm5hbHMgaW50ZXJmYWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODEzMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgaGFzU3BlbGxpbmdNYXJrZXIgc3VwcG9ydCwgc2luY2UgaXQgY2FuIHN1
cHBvcnQgaW4gdGhlIGNyb3NzLXBvcnQgd2F5CisgICAgICAgIHRocm91Z2ggdGhlIEludGVybmFs
cyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJLaXQub3JkZXI6CisgICAgICAgICogV2ViVmll
dy9XZWJGcmFtZS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAy
MDEyLTAzLTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+ICYmIEJlbmphbWluIFBv
dWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIGVuYWJsZSBFTkFC
TEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGNkYWE0MjQy
YWU2NjM4MjhkNDgzNGI1YjkwZDBiZmYxNmJkZGY5ZWMuLjYwODI1ZjM4ZDc3YTM4Mzg0MWI5M2Ux
MmJiN2IwYWRlNTg1Y2VlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wMy0xNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIENvbnZlcnQgaGFzU3BlbGxpbmdNYXJrZXIgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2Uu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTMwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBo
YXNTcGVsbGluZ01hcmtlciBpbnRlcmZhY2Ugc3VwcG9ydCwgc2luY2UgaXQgY2FuIHN1cHBvcnQg
aW4gdGhlIGNyb3NzLXBvcnQKKyAgICAgICAgd2F5IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRl
cmZhY2UuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsOgorCiAy
MDEyLTAzLTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+ICYmIEJlbmphbWluIFBv
dWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIGVuYWJsZSBFTkFC
TEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IDFjNjY2NzM0YWZjN2YwOTcxYzU1ZWUwZTc4Mjk5Mzk0ZmU1NGRiMmQuLjNkNDli
ZDM1NjdiMmQ3YzI5MzY4ZDA3MWQyNGVlZWE5NDBlNjEzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTcwMyw0ICs3MDMsMTIgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5
LAogICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCBy
aWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZyk7
CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjpoYXNTcGVsbGluZ01hcmtlcihEb2N1bWVudCogZG9jdW1l
bnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPmVk
aXRvcigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUo
KS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggN2NjMjVkYTc3NjNkZDMzMTUwYzNmZWVlOWI4NmJmN2FiYTg1NWViYi4uNmU4MWJh
ZDg1MzQ2NWM5NmFlNWZiOWQwOGEyYjNkYzU1Njc0ZTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC0xMjksNiArMTI5LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRv
cFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKICAgICAgICAgdW5zaWduZWQgYm90dG9t
UGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKIAorICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoRG9jdW1lbnQq
LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGludGVybmFsc0lkOwogCiAgICAgSW50ZXJuYWxTZXR0aW5ncyogc2V0dGluZ3Mo
KSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggY2ZiZTM5MGI2Y2QyZjU3ZmI5MjdlMWJmN2FjNWJiZDYwOTIyZDkw
Ny4uYTkxMTYyOTlhNDI3Y2U4MDVjN2NlZWI4MzE1ZDhhMGI0NmYzNTQ1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTA1LDYgKzEwNSw4IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyB0b3BQYWRkaW5nLCBpbiB1bnNpZ25lZCBs
b25nIHJpZ2h0UGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBib3R0b21QYWRkaW5nLCBpbiB1bnNp
Z25lZCBsb25nIGxlZnRQYWRkaW5nLAogICAgICAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlw
cGluZykgcmFpc2VzIChET01FeGNlcHRpb24pOwogCisgICAgICAgIGJvb2xlYW4gaGFzU3BlbGxp
bmdNYXJrZXIoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGxvbmcgZnJvbSwgaW4gbG9uZyBsZW5n
dGgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
SW50ZXJuYWxTZXR0aW5ncyBzZXR0aW5nczsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5jcHAKaW5kZXggNDI0MjdkYjUxYjFhZGQ4MzViZjM0MDk3YTIxYjgyYzlkY2U3NDA3Ny4uMDdj
MTVhZTQ3MmQ4MDU2NmZlZTVjMzViY2JlNmRhM2I2ZDdlMGU1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuY3BwCkBAIC02ODIsMTMgKzY4Miw2IEBAIHVuc2lnbmVkIGludCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OndvcmtlclRocmVhZENvdW50KCkKICNlbmRpZgogfQogCi1ib29sIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6d2Via2l0V2ViRnJhbWVTZWxlY3Rpb25IYXNTcGVsbGluZ01h
cmtlcihXZWJLaXRXZWJGcmFtZSAqZnJhbWUsIGdpbnQgZnJvbSwgZ2ludCBsZW5ndGgpCi17Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIEZBTFNF
KTsKLQotICAgIHJldHVybiBjb3JlKGZyYW1lKS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKLX0KLQog
Ym9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmZpbmRTdHJpbmcoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgZ2NoYXIqIHRhcmdldFN0cmluZywgV2ViS2l0RmluZE9wdGlvbnMgZmlu
ZE9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGNvcmUod2ViVmlldyktPmZpbmRTdHJpbmcoU3RyaW5n
Ojpmcm9tVVRGOCh0YXJnZXRTdHJpbmcpLCBmaW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oCmluZGV4IDBjNDA5MjdjYjAyM2RmMTZhZDA2Zjk0MjdmOTU1NTJlYTg2MGY0YjAuLmI1NDcw
ZTJkOTM0ZjQ3ZDUyZjhkNWZkMzM4ZTg0OTgwYWM5YTE5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oCkBAIC0xMTUsNyArMTE1LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdoaXRlTGlz
dEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29uc3QgZ2NoYXIq
IGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2lu
QWNjZXNzV2hpdGVMaXN0cygpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgd29ya2VyVGhyZWFk
Q291bnQoKTsKLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRXZWJGcmFtZVNlbGVjdGlvbkhhc1NwZWxs
aW5nTWFya2VyKFdlYktpdFdlYkZyYW1lKiwgZ2ludCBmcm9tLCBnaW50IGxlbmd0aCk7CiAKICAg
ICBzdGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9uQ2xpZW50TW9jayhXZWJLaXRXZWJWaWV3Kik7
CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihXZWJLaXRXZWJW
aWV3KiwgYm9vbCBhbGxvd2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktp
dC5vcmRlciBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgppbmRleCAwNDBhZTkwNmU2
Zjk2NWI1MjE0NzQyZWJhYzJlM2ZhNjJhYmUwNjFlLi41YjU4NDk3MDVjNDUwNDI3OGQ0NjZiOTVj
MmZkNDhkNDExZTk4NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3Jk
ZXIKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCkBAIC0xNjkxLDcgKzE2OTEs
NiBAQCBfX1pUaG44X04xNVdlYkVkaXRvckNsaWVudDE3Z2V0R3Vlc3Nlc0ZvcldvcmRFUktOM1dU
RjZTdHJpbmdFUzNfUk5TMF82VmVjdG9ySVMxXwogX19aTjE1V2ViRWRpdG9yQ2xpZW50MTdnZXRH
dWVzc2VzRm9yV29yZEVSS04zV1RGNlN0cmluZ0VTM19STlMwXzZWZWN0b3JJUzFfTG0wRUVFCiBf
X1pOM1dURjZWZWN0b3JJTlNfNlN0cmluZ0VMbTBFRTE0c2hyaW5rQ2FwYWNpdHlFbQogX19aTjE1
V2ViRWRpdG9yQ2xpZW50MzR1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkRVJLTjNX
VEY2U3RyaW5nRQotLVtXZWJGcmFtZShXZWJQcml2YXRlKSBoYXNTcGVsbGluZ01hcmtlcjpsZW5n
dGg6XQogLVtXZWJGcmFtZShXZWJQcml2YXRlKSBoYXNHcmFtbWFyTWFya2VyOmxlbmd0aDpdCiBf
X1pUaG44X04xNVdlYkVkaXRvckNsaWVudDIzcmVxdWVzdENoZWNraW5nT2ZTdHJpbmdFUE43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyRWlqUktOM1dURjZTdHJpbmdFCiBfX1pOMTVXZWJFZGl0b3JDbGll
bnQyM3JlcXVlc3RDaGVja2luZ09mU3RyaW5nRVBON1dlYkNvcmUxMlNwZWxsQ2hlY2tlckVpalJL
TjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZTA4
NWJjMTdmNTczMWZiNjgyNDM1NmYwNWIwNDhmMTNmYjI3MzhhNi4uMWJkYzMwMDllYmE5YmRjMmM2
N2EyYmU0ZDA2YWY5MDBjYjM1NmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0xMjIzLDE0ICsxMjIzLDYgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpk
YXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0dXJuIGNvcmVGcmFtZS0+
bGF5ZXJUcmVlQXNUZXh0KCk7CiB9CiAKLS0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClm
cm9tIGxlbmd0aDooaW50KWxlbmd0aAotewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHNl
bGYpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gTk87Ci0gICAgcmV0dXJu
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50
TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKLX0KLQogLSAoQk9PTCloYXNHcmFtbWFy
TWFya2VyOihpbnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJp
dmF0ZS5oCmluZGV4IDg5OWNlZWRkZjFmODdiMDNmZDJmNmI1ZjYzOTdlNTIxMDg3Zjc3YWIuLjEz
OGEwZjQ0OTM3ZTQ0OTNhYzk2ZDc3YzMxMDk5Y2UyOTlhYmI5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaApAQCAtMTM2LDkgKzEzNiw2IEBAIHR5cGVk
ZWYgZW51bSB7CiAKIC0gKE5TU3RyaW5nKilfbGF5ZXJUcmVlQXNUZXh0OwogCi0vLyBSZXR1cm5z
IHdoZXRoZXIgdGhlcmUgaXMgYSBzcGVsbGluZyBtYXJrZXIgaW4gdGhlIHNwZWNpZmllZCByYW5n
ZSBvZiB0aGUgZm9jdXNlZCBub2RlLgotLSAoQk9PTCloYXNTcGVsbGluZ01hcmtlcjooaW50KWxv
Y2F0aW9uIGxlbmd0aDooaW50KWxlbmd0aDsKLQogLSAoQk9PTCloYXNHcmFtbWFyTWFya2VyOihp
bnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGg7CiAKIC8vIFRoZSB0b3Agb2YgdGhlIGFjY2Vzc2li
aWxpdHkgdHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lUHJpdmF0ZS5pZGwgYi9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFt
ZVByaXZhdGUuaWRsCmluZGV4IDkwYmE0YmRiOWRhZTBmZTdmNDM3MGY0OWU0OTBkNDIwYzYzOWQ2
NGUuLmNiN2E0Njk5NzI4NDZkZjcwNzFjMjE2YTFiNjQyZDg5NDVhYTk5ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKKysrIGIv
U291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbApAQCAtMTE1
LDggKzExNSw2IEBAIGludGVyZmFjZSBJV2ViRnJhbWVQcml2YXRlIDogSVVua25vd24KIAogICAg
IEhSRVNVTFQgbG9hZFBsYWluVGV4dFN0cmluZyhbaW5dIEJTVFIgc3RyaW5nLCBbaW5dIEJTVFIg
dXJsKTsKIAotICAgIEhSRVNVTFQgaGFzU3BlbGxpbmdNYXJrZXIoW2luXSBVSU5UIGZyb20sIFtp
bl0gVUlOVCBsZW5ndGgsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKLSAgICAKICAgICBI
UkVTVUxUIGNsZWFyT3BlbmVyKCk7CiAKICAgICBIUkVTVUxUIHNldFRleHREaXJlY3Rpb24oW2lu
XSBCU1RSIGRpcmVjdGlvbik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggOTU4YzQ0YTExNGU4YzNjOGI1Y2M3YjgyMTdjODcwMzA2YjUwZjFiMy4u
MTAzMTEwNmUzYWE2MmEzZmM0MThmNWU2NDY5NGJhMzA2MTBmYWIzZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTAzLTE1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgQ29udmVydCBoYXNTcGVsbGluZ01hcmtlciB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGhh
c1NwZWxsaW5nTWFya2VyIGZ1bmN0aW9ucywgYmVjYXVzZSBpdCBpcyBhYmxlIHRvIHdvcmsgaW4g
dGhlCisgICAgICAgIGNyb3NzLXBvcnQgd2F5IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRlcmZh
Y2UuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
TGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RD
b250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcDoKKwogMjAxMi0wMy0xMyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50
b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtEUlRdIEV4cG9z
ZSB3aW5kb3cuaW50ZXJuYWxzIG9iamVjdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDk2YWVlZGQwNGNmNmE1NWZmODY4YjAyYjZmYThhNmU5
YmFlODc3ZjcuLjY2ODNjZTk3NGJlNjExZjI0OWU5YTlmMzI4NDUxYzFjMWNlMWVhY2EgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIwMzQs
MTkgKzIwMzQsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBhYm9ydE1vZGFsQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLAogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgaGFzU3BlbGxp
bmdNYXJrZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgaWYg
KGFyZ3VtZW50Q291bnQgIT0gMikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwotCi0gICAgaW50IGZyb20gPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJn
dW1lbnRzWzBdLCAwKTsKLSAgICBpbnQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1sxXSwgMCk7Ci0gICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7Ci0gICAgYm9vbCBvayA9IGNvbnRyb2xsZXItPmhhc1NwZWxsaW5nTWFya2Vy
KGZyb20sIGxlbmd0aCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQs
IG9rKTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgaGFzR3JhbW1hck1hcmtlckNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAy
KQpAQCAtMjM3MSw3ICsyMzU4LDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgIm9yaWdpbnNXaXRoQXBwbGljYXRp
b25DYWNoZSIsIG9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImdvQmFjayIsIGdvQmFja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sIAogICAgICAgICB7ICJn
cmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uIiwgZ3JhbnREZXNrdG9wTm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sIAotICAgICAgICB7ICJoYXNTcGVsbGluZ01h
cmtlciIsIGhhc1NwZWxsaW5nTWFya2VyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaGFz
R3JhbW1hck1hcmtlciIsIGhhc0dyYW1tYXJNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJpZ25vcmVEZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzIiwgaWdub3Jl
RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0c0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImlzQ29tbWFuZEVuYWJsZWQiLCBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4
IGIzMjQ4ZDA1MjkxNzFhODE2ZTIzZDY5ZWZmNjQ3MDU3NjVhNDk5ZWMuLjUzMTBjNjZlODY5OTk2
ODQwOGY4ZDc1ODFmOWYxMmJhMWY1NjZkZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzI4LDcgKzMyOCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWJvcnRNb2RhbCgpOwogCi0gICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwg
aW50IGxlbmd0aCk7CiAgICAgYm9vbCBoYXNHcmFtbWFyTWFya2VyKGludCBmcm9tLCBpbnQgbGVu
Z3RoKTsKIAogICAgIHZvaWQgZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgZGV2aWNl
RFBJLCBpbnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0
aCwgaW50IGF2YWlsYWJsZUhlaWdodCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5j
cHAKaW5kZXggZDRkMjNkMmYxNDg0OGU1YmY2OWM1MDdhMGZkNzlhY2M4NzgzNzJiNC4uNDI3NDdj
OTgzZGUyODkzNTg3NGY1YmRkYmMwMjE4YzgzMmI0ZWRhNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xs
ZXJCbGFja0JlcnJ5LmNwcApAQCAtNzE1LDE0ICs3MTUsNiBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKCkgY29uc3QKICAgICAgICAgbWFpbkZyYW1lLT5hbmlt
YXRpb24oKS0+cmVzdW1lQW5pbWF0aW9ucygpOwogfQogCi1ib29sIExheW91dFRlc3RDb250cm9s
bGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAo
IW1haW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1haW5GcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKFdlYkNvcmU6OkRvY3VtZW50
TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpCiB7CiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBpZiBuZWVkZWQgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDc1OC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA5YzY4ZGZmZGNkNzkyZGZhOWRiZDhlZGE4OWY2
NzYzYWNjYzZhNTIxLi5jNmM2NjVkZGZjOWU3NzBkNTRmY2Y3MTAyNTEwZmFhNjI3NTc1NTcxIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCkBAIC0xMzIsNyArMTMyLDYgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6Okxh
eW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgiZXhl
Y0NvbW1hbmQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV4ZWNDb21tYW5kKTsKICAgICBiaW5k
TWV0aG9kKCJmb3JjZVJlZFNlbGVjdGlvbkNvbG9ycyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Zm9yY2VSZWRTZWxlY3Rpb25Db2xvcnMpOwogICAgIGJpbmRNZXRob2QoImdyYW50RGVza3RvcE5v
dGlmaWNhdGlvblBlcm1pc3Npb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmdyYW50RGVza3Rv
cE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOwotICAgIGJpbmRNZXRob2QoImhhc1NwZWxsaW5nTWFy
a2VyIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcik7CiAgICAgYmlu
ZE1ldGhvZCgiZmluZFN0cmluZyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZmluZFN0cmluZyk7
CiAgICAgYmluZE1ldGhvZCgiaXNDb21tYW5kRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6aXNDb21tYW5kRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgiaGFzQ3VzdG9tUGFnZVNpemVT
dHlsZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzQ3VzdG9tUGFnZVNpemVTdHlsZSk7CkBA
IC0yMDAzLDEzICsyMDAyLDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4
dEZvckxpc3RJdGVtKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3AKICAgICAgICAgcmVz
dWx0LT5zZXQoZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPm1hcmtlclRleHRGb3JMaXN0SXRl
bShlbGVtZW50KS51dGY4KCkpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNT
cGVsbGluZ01hcmtlcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRz
WzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpKQotICAgICAgICByZXR1
cm47Ci0gICAgcmVzdWx0LT5zZXQobV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2Vs
ZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtlckZvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBh
cmd1bWVudHNbMV0udG9JbnQzMigpKSk7Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmZpbmRTdHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1sw
XS5pc1N0cmluZygpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggMGY1MDU5YjJjODYyMzU0NjYzOGQwMTYyZTAzNTM2
YjBhZDU5ZDY5NS4uNTM2NzdlMmRhYzZhODI2ZThjZDFiMjk1NzdjYzFmZmYwZTQzYWExMSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCkBAIC0zODUsNyArMzg1LDYgQEAgcHVibGljOgogICAgIHZvaWQgbG9zZUNvbXBvc2l0
b3JDb250ZXh0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0
KTsKIAogICAgIHZvaWQgbWFya2VyVGV4dEZvckxpc3RJdGVtKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIGhhc1NwZWxsaW5nTWFya2VyKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAppbmRl
eCBiOWY1NGNjMmJhMTI1NWU4OGJiODM1MGZlNmYwYjdhNjY0ZjA5Y2I4Li40MzMzMDZiMmIxNDZh
ZmFmNDJmNDg5MzdlOWU5N2NjMjBiYWRhMTMzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTcxOCwxMiArNzE4LDYg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbCgpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJr
ZXIoaW50LCBpbnQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc0dyYW1tYXJNYXJrZXIoaW50LCBp
bnQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDY5ZDVkNTFiMGI3YmNk
Nzk2YTU2YzVjY2FlODI4MThkODA5ZDllODMuLjdjNmE1MGY5MjY1M2NjOTkwZTdmMDQwZGQ3MjI4
ZmY2NWU1MDNiOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtOTc3LDExICs5NzcsNiBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIHsKIH0KIAotYm9vbCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d2Via2l0V2ViRnJhbWVTZWxlY3Rpb25IYXNT
cGVsbGluZ01hcmtlcihtYWluRnJhbWUsIGZyb20sIGxlbmd0aCk7Ci19Ci0KIGJvb2wgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Omhhc0dyYW1tYXJNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCiB7
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGQyNjc1ZGJkMDQ3N2Y2YTQzNzk2Zjg5MTgz
YWMwOTZkNjM3ZGY0ODAuLmI2MTU1YTllNDZmODc3NmM3NjI3NDRkZGQ3OTUxNWE3NzMwMDUzYTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0KQEAgLTExNTksMTEgKzExNTksNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjphYm9ydE1vZGFsKCkKICAgICBbTlNBcHAgYWJvcnRNb2RhbF07CiB9CiAKLWJvb2wgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQot
ewotICAgIHJldHVybiBbbWFpbkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmZyb20gbGVuZ3RoOmxl
bmd0aF07Ci19Ci0KIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc0dyYW1tYXJNYXJrZXIo
aW50IGZyb20sIGludCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIFttYWluRnJhbWUgaGFzR3JhbW1h
ck1hcmtlcjpmcm9tIGxlbmd0aDpsZW5ndGhdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA4NjlmMjYzZmFkYjJiYWFhMmQy
ZjE2ZWExZTAwODcxZWNiN2ExNTdjLi43MzY1YTNhMTU1MDFmM2RkNGI4ODY4MDEzYjg2ZDNiOGZl
NDdmMTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcApAQCAtOTQzLDEyICs5NDMsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2tzKHRydWUpOwogfQogCi1ib29sIExheW91dFRlc3RD
b250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQsIGludCkKLXsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50LgotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWRkVVJMVG9SZWRpcmVjdChjb25zdCBRU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFFTdHJp
bmcmIGRlc3RpbmF0aW9uKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjphZGRVUkxU
b1JlZGlyZWN0KG9yaWdpbiwgZGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDMyZjYxZTdhMDI2NjNmNmJiNzEw
MzRjZTgyNjE2ZjY5YWU2MjFmZGEuLmEzOTdmYmFhZDJmN2JkNjQyN2Y4MjY3MjViMzcyNmRkMzAz
OWVmNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmgKQEAgLTI0MSw3ICsyNDEsNiBAQCBwdWJsaWMgc2xvdHM6CiAKICAgICAvLyBFbXB0
eSBzdHViIG1ldGhvZCB0byBrZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5
IGdsb2JhbCBMYXlvdXRUZXN0Q29udHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoKSB7fQot
ICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOwogCiAgICAg
dm9pZCBhZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9yaWdpbiwgY29uc3QgUVN0cmlu
ZyYgZGVzdGluYXRpb24pOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCA4NzRjZDE1ZTRhNzNhZjAxMGE1NjNkMDA3
MDJhYzY5YjQ0ZTFkNzQxLi45YmRiYTMwMTEyYzEzNjAzYTliNzU2Yzc0OGMyYWU1MTkzNWRhOWI1
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAKQEAgLTE0MzEsMTcgKzE0MzEsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjphYm9ydE1vZGFsKCkKIHsKIH0KIAotYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFz
U3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCi17Ci0gICAgQ09NUHRyPElXZWJG
cmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVyeSwgZnJhbWUpOwotICAgIGlmICghZnJhbWVQ
cml2YXRlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQk9PTCByZXQgPSBGQUxTRTsKLSAg
ICBpZiAoRkFJTEVEKGZyYW1lUHJpdmF0ZS0+aGFzU3BlbGxpbmdNYXJrZXIoZnJvbSwgbGVuZ3Ro
LCAmcmV0KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcmV0OwotfQotCiBi
b29sIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNHcmFtbWFyTWFya2VyKGludCBmcm9tLCBpbnQg
bGVuZ3RoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggMTk2OTU5
YmQxMWFjYTRmMzJmMzVkNzYyN2E3MDY4ODJlYzgyOTNlMS4uZmM2YTI2OTEyOTdmNTUwM2JiMjBj
NGEyOWZiYTQ5M2E1MTdlNDQ3YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
TGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
TGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTU1MCwxMiArNTUwLDYgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbCgpCiB7CiB9CiAKLWJvb2wgTGF5b3V0VGVzdENv
bnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCwgaW50KQotewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Omhhc0dyYW1tYXJNYXJrZXIoaW50LCBpbnQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDNkOWJmODQzODQyZmUzN2IwN2Q0ZDgwN2MwMTEyNmQxMjNjYzc5ZjAuLjM5ZjYx
N2JjODBlM2NkMWY0ZGQxMThkNGI5YTAwM2U3ZTNiZWUyMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAxMi0wMy0xNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgor
CisgICAgICAgIENvbnZlcnQgaGFzU3BlbGxpbmdNYXJrZXIgdG8gdXNlIEludGVybmFscyBpbnRl
cmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTMwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
anVzdCBoYXNTcGVsbGluZ01hcmtlciB0ZXN0cyB0byB1c2UgSW50ZXJuYWxzIGluc3RlYWQgb2Yg
TGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgICogZWRp
dGluZy9zcGVsbGluZy9kZXNpZ24tbW9kZS1zcGVsbGNoZWNrLW9mZi5odG1sOgorICAgICAgICAq
IGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanM6CisgICAg
ICAgICh2ZXJpZnlNYXJrZXIpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRl
c3RzL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5qczoKKyAgICAgICAgKGNoaWxkSGFzU3Bl
bGxpbmdNYXJrZXIpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3Nw
ZWxsaW5nLWF0dHJpYnV0ZS1jaGFuZ2UuanM6CisgICAgICAgICh0ZXN0U3BlbGxDaGVja2luZ0Vu
YWJsZWQpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5n
LWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzOgorICAgICAgICAodGVzdFdpdGhEZWxldGUpOgor
ICAgICAgICAodGVzdFdpdGhGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxs
aW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1oYXNzcGVsbGluZ21hcmtlci5qczoKKyAgICAgICAg
KGhhc01hcmtlZCk6CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJp
YnV0ZS5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRl
LWNoYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1oYXNzcGVsbGluZ21hcmtlci1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1saW5lYnJlYWsuaHRtbDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJl
dHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRv
LW1pc3NwZWxsZWQtd29yZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL2VkaXRpbmctbXVsdGlwbGUtd29yZHMtd2l0aC1tYXJrZXJzLmh0bWw6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2Vy
LTEuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5n
LXdvcmQtd2l0aC1tYXJrZXItMi5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL21vdmUtY3Vyc29yLWFyb3VuZC1taXNzcGVsbGVkLXdvcmQuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0
d2Vlbi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6
CisKIDIwMTItMDMtMTMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBGUkVFRUVFRE9PTSEhISBMYXN0IHNldCBvZiBidWxrIENocm9taXVtLUxpb24gcmViYXNlbGlu
ZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2Rlc2lnbi1tb2Rl
LXNwZWxsY2hlY2stb2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2Rlc2ln
bi1tb2RlLXNwZWxsY2hlY2stb2ZmLmh0bWwKaW5kZXggZTcxMjhlNWVjOGZhYzBkNzRkZGRmZWE2
NDE0OGEzZDAwYTE5YmFiYi4uOWQ0ZjgwY2Q5MzVlZWUzMDNiZjAzZjAyMDM4MThiMjE2MWZlM2M0
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9kZXNpZ24tbW9kZS1z
cGVsbGNoZWNrLW9mZi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZGVz
aWduLW1vZGUtc3BlbGxjaGVjay1vZmYuaHRtbApAQCAtMTgsNyArMTgsNyBAQCBlbHNlIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAg
ZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbigpIHsK
ICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT0gZG9jdW1lbnQuYm9keSkKICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ0ZBSUw6IGFjdGl2ZSBlbGVtZW50IGFmdGVyIGNsaWNrIGlzIG5vdCBib2R5IGVsZW1lbnQn
KSk7Ci0gICAgICAgIGVsc2UgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFy
a2VyKDAsIDQpKQorICAgICAgICBlbHNlIGlmIChpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDAsIDQpKQogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnRkFJTDogc3BlbGwgY2hlY2sgd2FzIGludm9rZWQnKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1BBU1MnKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qcwpp
bmRleCA2YWIwYWZkOThmZDZjZGEyYzRiZjc2MjY3ZjlmN2FhODZmMTcxNjgxLi5kMTE2NTcxNjU3
YThjMjNmNWI3ZDBiMTllN2RiN2VjOWY2YTQ2M2JiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUu
anMKQEAgLTU0LDcgKzU0LDcgQEAgZnVuY3Rpb24gdmVyaWZ5TWFya2VyKG5vZGUsIGV4cGVjdGVk
TWFya2VkKQogCiAgICAgdmFyIG9rID0gdHJ1ZTsKICAgICBmb3IgKHZhciBpID0gMDsgb2sgJiYg
aSA8IGV4cGVjdGVkTWFya2VkLmxlbmd0aDsgKytpKQotICAgICAgICBvayA9IGxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKGV4cGVjdGVkTWFya2VkW2ldWzBdLCBleHBlY3Rl
ZE1hcmtlZFtpXVsxXSk7CisgICAgICAgIG9rID0gaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2Vy
KGRvY3VtZW50LCBleHBlY3RlZE1hcmtlZFtpXVswXSwgZXhwZWN0ZWRNYXJrZWRbaV1bMV0pOwog
ICAgIHJldHVybiBvazsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0
LWNoaWxkLmpzCmluZGV4IDAwMjg2NzJmMGVhOWVjMWMxNWExMzFkMDJkODI2MThjODI3YjkzMDQu
LjE4MTBjMjg5N2Y1M2U5NTZjNDIyY2FmNTY5MzZjYjNmNmY0YmE0OTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10
ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMKQEAgLTExLDcgKzExLDcgQEAgZnVu
Y3Rpb24gY2hpbGRIYXNTcGVsbGluZ01hcmtlcihtYXJrdXApCiAgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKICAgICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicpOwogICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJ
bnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7Ci0gICAgdmFyIG1hcmtlZCA9IGxheW91dFRlc3RDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDEsIDIpOworICAgIHZhciBtYXJrZWQgPSBpbnRlcm5h
bHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDEsIDIpOwogICAgIHJvb3QuaW5uZXJIVE1M
ID0gIiI7CiAgICAgcmV0dXJuIG1hcmtlZDsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0ZS1jaGFuZ2UuanMg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRy
aWJ1dGUtY2hhbmdlLmpzCmluZGV4IDdkYmY4MGEyY2M1YzFiNTMzNDhhMzUwOTIwMTM3YjVhZGU3
MmFkM2MuLmZmNGVhYTdiNzZmYmEzZTExMjFiYzEwNWU3ODk1NTlmNDJlYTgzMTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0
dHJpYnV0ZS1jaGFuZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3Jp
cHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWNoYW5nZS5qcwpAQCAtMjIsNyArMjIsNyBAQCBm
dW5jdGlvbiB0ZXN0U3BlbGxDaGVja2luZ0VuYWJsZWQodGFyZ2V0LCBlbmFibGVkKQogCiAgICAg
d2luZG93LnRhcmdldCA9IHRhcmdldDsKICAgICBzaG91bGRCZSgidGFyZ2V0LnNwZWxsY2hlY2si
LCBlbmFibGVkID8gInRydWUiIDogImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIiwgZW5hYmxlZCA/ICJ0cnVlIiA6ICJm
YWxzZSIpOworICAgIHNob3VsZEJlKCJpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1l
bnQsIDYsIDIpIiwgZW5hYmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogfQogCiBmdW5jdGlvbiBj
cmVhdGVFbGVtZW50KHRhZ05hbWUsIHNwZWxsY2hlY2spCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vl
bi1saW5lcy5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3Nw
ZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzCmluZGV4IGQwZjI0MTc0ZDNkZTY3ZDdj
ODc3YTA4MWNjODFiNGI2NDg4MjNjNWQuLjYxNmYwMDFmZDJmOGFkODY4NDg5YmRmNTk1NzQ4Mjhk
NjBhMmY4NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0
LXRlc3RzL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3
ZWVuLWxpbmVzLmpzCkBAIC0yNiw3ICsyNiw3IEBAIGZ1bmN0aW9uIHRlc3RXaXRoRGVsZXRlKCkK
IAogICAgIHNob3VsZEJlKCJmaXJzdExpbmVUZXh0KCkiLCAiJ09LJyIpOwogICAgIHNob3VsZEJl
KCJzZWwuYW5jaG9yTm9kZS5kYXRhIiwgIidPSyB6eiBPSyciKTsKLSAgICBzaG91bGRCZVRydWUo
ImxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIik7CisgICAgc2hv
dWxkQmVUcnVlKCJpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMsIDIpIik7
CiAKICAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgImxlZnQiLCAibGluZWJvdW5kYXJ5Iik7CiAgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIsIGZhbHNlKTsKQEAgLTM0LDcgKzM0LDcgQEAg
ZnVuY3Rpb24gdGVzdFdpdGhEZWxldGUoKQogCiAgICAgc2hvdWxkQmUoInNlbC5hbmNob3JOb2Rl
LmRhdGEiLCAiJ09LT0sgenogT0snIik7CiAgICAgc2hvdWxkQmUoImZpcnN0TGluZVRleHQoKSIs
ICInT0tPSyB6eiBPSyciKTsKLSAgICBzaG91bGRCZVRydWUoImxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDUsIDIpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMu
aGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIik7CiB9CiAKIGZ1bmN0aW9uIHRlc3RX
aXRoRm9yd2FyZERlbGV0ZSgpCkBAIC00Nyw3ICs0Nyw3IEBAIGZ1bmN0aW9uIHRlc3RXaXRoRm9y
d2FyZERlbGV0ZSgpCiAKICAgICBzaG91bGRCZSgiZmlyc3RMaW5lVGV4dCgpIiwgIidPSyciKTsK
ICAgICBzaG91bGRCZSgic2VsLmFuY2hvck5vZGUuZGF0YSIsICInT0sgenogT0snIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigzLCAy
KSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCAzLCAyKSIpOwogCiAgICAgc2VsLm1vZGlmeSgibW92ZSIsICJsZWZ0IiwgImxpbmUiKTsK
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRm9yd2FyZERlbGV0ZSIsIGZhbHNlKTsKQEAgLTU1
LDcgKzU1LDcgQEAgZnVuY3Rpb24gdGVzdFdpdGhGb3J3YXJkRGVsZXRlKCkKIAogICAgIHNob3Vs
ZEJlKCJmaXJzdExpbmVUZXh0KCkiLCAiJ09LT0sgenogT0snIik7CiAgICAgc2hvdWxkQmUoInNl
bC5hbmNob3JOb2RlLmRhdGEiLCAiJ09LT0sgenogT0snIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJs
YXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA1LCAyKSIpOwog
fQogCiB0ZXN0V2l0aERlbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctaGFzc3BlbGxpbmdtYXJrZXIuanMgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1oYXNzcGVsbGlu
Z21hcmtlci5qcwppbmRleCBkMDhkZGQwMzU0MTc3ZjE1MWZhMTliNmRiNzJmMTM5ZWRlYjY4MzNm
Li5jMTA3ZmY4YmVkZTljMzY3MDc5MzM3YzNjMjhjZjJiZTNkN2VhNjYxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1oYXNzcGVs
bGluZ21hcmtlci5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10
ZXN0cy9zcGVsbGluZy1oYXNzcGVsbGluZ21hcmtlci5qcwpAQCAtMSw0ICsxLDQgQEAKLWRlc2Ny
aXB0aW9uKCdUaGlzIHRlc3RzIExheW91dHRlc3Rjb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
IHdvcmtzIGZvciBkaWZmZXJudCB0eXBlIG9mIGVsZW1lbnRzLicpOworZGVzY3JpcHRpb24oJ1Ro
aXMgdGVzdHMgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyIHdvcmtzIGZvciBkaWZmZXJudCB0
eXBlIG9mIGVsZW1lbnRzLicpOwogCiB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CkBAIC0xMSw3ICsx
MSw3IEBAIGZ1bmN0aW9uIGhhc01hcmtlZChtYXJrdXApCiAgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgi
SW5zZXJ0VGV4dCIsIGZhbHNlLCAnICcpOwogCi0gICAgcmV0dXJuIGxheW91dFRlc3RDb250cm9s
bGVyLmhhc1NwZWxsaW5nTWFya2VyKDAsIDIpOworICAgIHJldHVybiBpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpOwogfQogCiBzaG91bGRCZVRydWUoImhhc01hcmtl
ZChcIjx0ZXh0YXJlYSBpZD0ndGVzdCcgY29scz0nODAnIHJvd3M9JzEwJz48L3RleHRhcmVhPlwi
KTsiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVj
ay1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVj
ay1hdHRyaWJ1dGUuaHRtbAppbmRleCAwNzE1OTkzZGFjYjQzZWVlMmY3NDQ5ZGRmZGMxZDhmZjYz
NjgyMjk1Li43OWFiNDdhZGJiZDI4MDQ4N2JkOTA0NWQxM2VlZDg1M2JhYjU1MDQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXR0cmlidXRlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJpYnV0
ZS5odG1sCkBAIC01Myw3ICs1Myw3IEBAIGZ1bmN0aW9uIHRlc3RUeXBpbmdJbnZhbGlkV29yZChp
ZCwgc2hvdWxkQmVNYXJrZWQpIHsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4
dCIsIGZhbHNlLCAneicpOwogICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0Iiwg
ZmFsc2UsICd6Jyk7CiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgJyAnKTsKLSAgICBpZiAoc2hvdWxkQmVNYXJrZWQgPT0gbGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoMCwgMikpCisgICAgaWYgKHNob3VsZEJlTWFya2VkID09IGludGVy
bmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwgMikpCiAgICAgICAgIGxvZygiUEFT
UzoiICsgaWQpOwogICAgIGVsc2UKICAgICAgICAgbG9nKCJGQUlMOiIgKyBpZCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1jaGFu
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1h
dHRyaWJ1dGUtY2hhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBmMjZmNGYyOGNkYWYyNTYxNTIzMWVh
YjBkZDI0N2Y1ODI4MThmYTUyLi5mOGVkYTJjNGU1NTUzNDlhMzdlY2JiNzU5NGY1NTc2OTRhMzRm
NjdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0
dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTQsNDEgKzQs
NDEgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNr
IGlzIHRydWUKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwg
MikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYs
IDIpIGlzIHRydWUKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgZmFsc2UKLVBBU1MgbGF5b3V0
VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyBmYWxzZQogUEFTUyB0
YXJnZXQuc3BlbGxjaGVjayBpcyB0cnVlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1Nw
ZWxsaW5nTWFya2VyKDYsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKGRvY3VtZW50LCA2LCAyKSBpcyB0cnVlCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIGZh
bHNlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlz
IGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikg
aXMgZmFsc2UKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgdHJ1ZQotUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFs
cy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgdHJ1ZQogUEFTUyB0YXJnZXQu
c3BlbGxjaGVjayBpcyBmYWxzZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGlu
Z01hcmtlcig2LCAyKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDYsIDIpIGlzIGZhbHNlCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIHRydWUK
LVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgdHJ1
ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIHRy
dWUKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgZmFsc2UKLVBBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyBmYWxzZQogUEFTUyB0YXJnZXQuc3Bl
bGxjaGVjayBpcyB0cnVlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFy
a2VyKDYsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCA2LCAyKSBpcyB0cnVlCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIGZhbHNlCi1QQVNT
IGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIGZhbHNlCitQ
QVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgZmFsc2UK
IFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgdHJ1ZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVs
bGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgdHJ1ZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVj
ayBpcyBmYWxzZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2
LCAyKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQs
IDYsIDIpIGlzIGZhbHNlCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIHRydWUKLVBBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgdHJ1ZQorUEFTUyBp
bnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIHRydWUKIFBBU1Mg
dGFyZ2V0LnNwZWxsY2hlY2sgaXMgZmFsc2UKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5n
TWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyBmYWxzZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBp
cyB0cnVlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIp
IGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAy
KSBpcyB0cnVlCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIGZhbHNlCi1QQVNTIGxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIGZhbHNlCitQQVNTIGludGVy
bmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgZmFsc2UKIFBBU1MgdGFy
Z2V0LnNwZWxsY2hlY2sgaXMgdHJ1ZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVs
bGluZ01hcmtlcig2LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtl
cihkb2N1bWVudCwgNiwgMikgaXMgdHJ1ZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyBmYWxz
ZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyBm
YWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlz
IGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3Nw
YWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKaW5kZXgg
NDE2Y2YwMmZhZjBkZDQ0YWFhZTVhNTI5YWE2MzQzNDc5Mjc0Zjc5Yi4uMjIyZjU2OWE4NmQwZGRh
OTIwYzc1M2YzMTQ2ZDI0NzUwNDM4OTk3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0
d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKQEAgLTUsMTYgKzUsMTYgQEAgT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUKIAogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBzZWwuYW5jaG9y
Tm9kZS5kYXRhIGlzICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIoZG9jdW1lbnQsIDMsIDIpIGlzIHRydWUKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAn
T0tPSyB6eiBPSycKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwotUEFTUyBs
YXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBpcyB0cnVlCitQQVNT
IGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNSwgMikgaXMgdHJ1ZQogUEFT
UyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdP
SyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywg
MikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMs
IDIpIGlzIHRydWUKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwogUEFTUyBz
ZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPS09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNT
cGVsbGluZ01hcmtlcihkb2N1bWVudCwgNSwgMikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWhhc3NwZWxsaW5nbWFya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaGFzc3BlbGxpbmdtYXJrZXIt
ZXhwZWN0ZWQudHh0CmluZGV4IDJiODU4MmEyNjM2ZjIxOTFjNTZjMjRmZjY4NDg0NzI2NmFkNTI2
MzEuLjdhYTU3YjVmNzRhZDJjNTIxZGMyMjMxZmM0MjkxMDM1NDdhN2YzODcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaGFzc3BlbGxpbmdtYXJrZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
aGFzc3BlbGxpbmdtYXJrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0
cyBMYXlvdXR0ZXN0Y29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlciB3b3JrcyBmb3IgZGlmZmVy
bnQgdHlwZSBvZiBlbGVtZW50cy4KK1RoaXMgdGVzdHMgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyIHdvcmtzIGZvciBkaWZmZXJudCB0eXBlIG9mIGVsZW1lbnRzLgogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctbGluZWJyZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWxpbmVicmVhay5odG1sCmluZGV4IGY1ODE4ZTZkMjk2MjhlZDQxZjRhOGJkZWE0MmVm
Zjg5ZjU5ZWM5NWIuLmU4ODdiZmU1ZjI1Y2FhMzExMjkyOTExYWUyOGVjZjFhYWVjMWVkZTYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbGluZWJyZWFr
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1saW5lYnJl
YWsuaHRtbApAQCAtMzQsNyArMzQsNyBAQCBmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKIAogICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgc2VsZWN0aW9uLnNl
dFBvc2l0aW9uKGVsZW0sIDApOwotICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIoNiwgMikpCisgICAgICAgIGlmIChpbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIoZG9jdW1lbnQsIDYsIDIpKQogICAgICAgICAgICBsb2coIlBBU1MiKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICBsb2coIkZBSUwiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJh
Y2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dAppbmRleCA0MTZjZjAyZmFmMGRkNDRh
YWFlNWE1MjlhYTYzNDM0NzkyNzRmNzliLi4yMjJmNTY5YTg2ZDBkZGE5MjBjNzUzZjMxNDZkMjQ3
NTA0Mzg5OTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMt
c25vd2xlb3BhcmQvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1s
aW5lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFj
LXNub3dsZW9wYXJkL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4t
bGluZXMtZXhwZWN0ZWQudHh0CkBAIC01LDE2ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFCiAKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUu
ZGF0YSBpcyAnT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5n
TWFya2VyKDMsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRv
Y3VtZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LT0sg
enogT0snCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKLVBBU1MgbGF5b3V0
VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgaXMgdHJ1ZQorUEFTUyBpbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIGlzIHRydWUKIFBBU1MgZmly
c3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0sgenog
T0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlz
IHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAzLCAyKSBp
cyB0cnVlCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKIFBBU1Mgc2VsLmFu
Y2hvck5vZGUuZGF0YSBpcyAnT0tPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0td2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdl
ZW4tbGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2lu
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0
ZWQudHh0CmluZGV4IDQxNmNmMDJmYWYwZGQ0NGFhYWU1YTUyOWFhNjM0MzQ3OTI3NGY3OWIuLjIy
MmY1NjlhODZkMGRkYTkyMGM3NTNmMzE0NmQyNDc1MDQzODk5NzUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJh
Y2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0
d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKQEAgLTUsMTYgKzUsMTYgQEAgT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUKIAogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBzZWwuYW5jaG9y
Tm9kZS5kYXRhIGlzICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIoZG9jdW1lbnQsIDMsIDIpIGlzIHRydWUKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAn
T0tPSyB6eiBPSycKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwotUEFTUyBs
YXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBpcyB0cnVlCitQQVNT
IGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNSwgMikgaXMgdHJ1ZQogUEFT
UyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdP
SyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywg
MikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMs
IDIpIGlzIHRydWUKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwogUEFTUyBz
ZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPS09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNT
cGVsbGluZ01hcmtlcihkb2N1bWVudCwgNSwgMikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3
ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IDk0MDRhZDQwN2JlYzBhYWI3MjFmM2YwNTljMGNlY2Y4ODhkNWJkZWUuLmMzMjBh
NTUxNDlhMzE0NjBhZDAyNDUzZWE1Zjc0NTI2ZWQzOGI0MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNl
LWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMt
ZXhwZWN0ZWQudHh0CkBAIC01LDE2ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAK
IFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBp
cyAnT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KDMsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50
LCAzLCAyKSBpcyB0cnVlCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwog
UEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNTIGZpcnN0TGluZVRl
eHQoKSBpcyAnT0snCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwotUEFT
UyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigzLCAyKSBpcyB0cnVlCitQ
QVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMywgMikgaXMgdHJ1ZQog
UEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LT0sgenogT0snCiBQQVNTIHNlbC5hbmNob3JOb2Rl
LmRhdGEgaXMgJ09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGlu
Z01hcmtlcigzLCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihk
b2N1bWVudCwgMywgMikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1pc3NwZWxsZWQt
d29yZC5odG1sCmluZGV4IDU1NTkyYTg1NTI0NWNhOTc2NWQ4YjU4NDRlY2Y4OTcxYTViZjMwMjgu
LjA5MDliN2E2ZGY1Njg3NTVjM2ZlNzg4NjhlOThmNTk5ZjZhZTYxYmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1pc3Nw
ZWxsZWQtd29yZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL2RlbGV0ZS1pbnRvLW1pc3NwZWxsZWQtd29yZC5odG1sCkBAIC0zMiw4ICszMiw4IEBA
IHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdnJyk7CiB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnYScpOwog
dHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKIGV4ZWNEZWxldGVDb21tYW5kKCk7Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5o
YXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoNyw4KSA9PSAxKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3
aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMSkgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICdTVUNDRVNTPGJy
Pic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5pbm5lckhUTUwgPSAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdlc2dhJyBkb2VzIG5vdCBo
YXZlIHVuZGVybGluZS48YnI+IjsKQEAgLTQ1LDggKzQ1LDggQEAgdGV4dGFyZWEuc2V0U2VsZWN0
aW9uUmFuZ2UoNiwgNik7CiB0ZXh0YXJlYS5mb2N1cygpOwogdHlwZUNoYXJhY3RlckNvbW1hbmQo
JyAnKTsKIGV4ZWNGb3J3YXJkRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFy
a2VyKDcsOCkgPT0gMSkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFs
cy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxs
aW5nTWFya2VyKGRvY3VtZW50LCA3LDgpID09IDEpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29y
ZCAnbWVhZ2VzZ2EnIGRvZXMgbm90IGhhdmUgdW5kZXJsaW5lLjxicj4iOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBs
ZS13b3Jkcy13aXRoLW1hcmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL2VkaXRpbmctbXVsdGlwbGUtd29yZHMtd2l0aC1tYXJrZXJzLmh0bWwKaW5k
ZXggYjEyYTk2NjdmNDdkYTVhZTY2OGNhN2RjN2YzNDdiYzA2MjRiZDJmYi4uNDRmOWE3MGNhYjAy
MWNkNjhkM2U1Y2YwYzVjOTNkNzNhMmU3ODQ2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRoLW1h
cmtlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9lZGl0aW5nLW11bHRpcGxlLXdvcmRzLXdpdGgtbWFya2Vycy5odG1sCkBAIC01MCw4ICs1MCw4
IEBAIHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIHJlc2V0VGV4
dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDIwKTsKIGV4ZWNEZWxldGVDb21t
YW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNyw0KSA9PSAwICYmIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigxMSw0KSA9PSAwKSB7CitpZiAod2lu
ZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDcsNCkg
PT0gMCAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAxMSw0
KSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5u
ZXJIVE1MID0gJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJGQUlMVVJFLiBUaGUgd29yZCAn
bWVhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC02MSw4ICs2MSw4IEBAIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyCiByZXNldFRleHQoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdl
KDExLCAxNik7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIp
IHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KDcsNCkgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoMTEsOCkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFs
cy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxs
aW5nTWFya2VyKGRvY3VtZW50LCA3LDQpID09IDAgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVs
bGluZ01hcmtlcihkb2N1bWVudCwgMTEsOCkgPT0gMCkgewogICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3
b3JkICdtZWFnbWVhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC03Miw4ICs3Miw4IEBA
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiByZXNldFRleHQoKTsKIHRleHRhcmVhLnNldFNlbGVj
dGlvblJhbmdlKDE1LCAyMCk7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxs
aW5nTWFya2VyKDcsOCkgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIoMTUsNCkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDgpID09IDAgJiYgd2luZG93LmludGVybmFs
cy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTUsNCkgPT0gMCkgewogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVs
c2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRN
TCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxV
UkUuIFRoZSB3b3JkICdtZWFnZXNnYWVzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLXdv
cmQtd2l0aC1tYXJrZXItMS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTEuaHRtbAppbmRleCA2ZTdkYzA4MzI0
MWUwMjVhMjFiOWM1ZjJjYWRhYzdlNTA2ZmFlYWRmLi5iNDdkOTczN2E5YzNmMjMzY2QxNmIwYzU2
N2E5NjI0MjIwNDYxMzQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zcGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJrZXItMS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRoLW1h
cmtlci0xLmh0bWwKQEAgLTQxLDggKzQxLDggQEAgdGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdCcpOwogdGV4dGFyZWEuZm9jdXMoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlv
blJhbmdlKDE0LCAxNSk7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5n
TWFya2VyKDcsNykgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVy
bmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1Nw
ZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDcpID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUzxicj4nOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJI
VE1MID0gIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnZXNnJyBoYXMgdW5kZXJsaW5lLjxicj4iOwpA
QCAtNTMsOCArNTMsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogcmVzZXRUZXh0KCk7CiB0
ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSg2LCA2KTsKIGV4ZWNGb3J3YXJkRGVsZXRlQ29tbWFu
ZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsOCkgPT0gMCkgeworaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LDgpID09IDAp
IHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNT
PGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlu
bmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnYW1lYWdlc2dhJyBoYXMgdW5kZXJsaW5lLjxi
cj4iOwpAQCAtNjQsOCArNjQsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYm
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogcmVzZXRUZXh0
KCk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSg3LCA3KTsKIGV4ZWNGb3J3YXJkRGVsZXRl
Q29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDcsNykgPT0gMCkgeworaWYgKHdp
bmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgewor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDcp
ID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdT
VUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnZWFnZXNnYScgaGFzIHVuZGVybGlu
ZS48YnI+IjsKQEAgLTc1LDggKzc1LDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIKIHJlc2V0
VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTAsIDEwKTsKIHR5cGVDaGFyYWN0
ZXJDb21tYW5kKCcgJyk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNywzKSA9PSAwICYmIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigxMSw1KSA9PSAwKSB7
CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1l
bnQsIDcsMykgPT0gMCAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCAxMSw1KSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHNlZ21lbnQgJ21lYSBnZXNn
YScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTg2LDggKzg2LDggQEAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTAsIDEz
KTsKIGV4ZWNEZWxldGVDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
ICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNyw1KSA9
PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxs
aW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDcsNSkgPT0gMCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyku
aW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnYScg
aGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTk3LDggKzk3LDggQEAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTAsIDEzKTsK
IHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNywz
KSA9PSAwICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigx
MSwyKSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIoZG9jdW1lbnQsIDcsMykgPT0gMCAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5n
TWFya2VyKGRvY3VtZW50LCAxMSwyKSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5pbm5lckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHNlZ21l
bnQgJ21lYSBnYScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTEwOSw4ICsxMDksOCBAQCBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcgogcmVzZXRUZXh0KCk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25S
YW5nZSg3LCA3KTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGlu
Z01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIoOCw4KSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDgsOCkgPT0gMCkgewogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2Ugewog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRo
ZSB3b3JkICdhbWVhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC0xMjAsOCArMTIwLDgg
QEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2Vs
ZWN0aW9uUmFuZ2UoMTUsIDE1KTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5o
YXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoNyw4KSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3
aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMCkgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9
IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVy
SFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZB
SUxVUkUuIFRoZSB3b3JkICdtZWFnZXNnYWEnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC0xMzUs
OCArMTM1LDggQEAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMCw0KTsKIGV4ZWNDb3B5Q29t
bWFuZCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoNywgNyk7CiBleGVjUGFzdGVDb21t
YW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMTEsOCkgPT0gMCkgeworaWYgKHdpbmRv
dy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAxMSw4KSA9
PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJI
VE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAnU1VD
Q0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdlc2dhJyBoYXMgdW5kZXJsaW5l
Ljxicj4iOwpAQCAtMTQ5LDggKzE0OSw4IEBAIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKDAs
NCk7CiBleGVjQ29weUNvbW1hbmQoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKDE1LCAx
NSk7CiBleGVjUGFzdGVDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
ICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNyw4KSA9
PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxs
aW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDcsOCkgPT0gMCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyku
aW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnZXNn
YScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTE2Myw4ICsxNjMsOCBAQCB0ZXh0YXJlYS5zZXRT
ZWxlY3Rpb25SYW5nZSgwLDQpOwogZXhlY0NvcHlDb21tYW5kKCk7CiB0ZXh0YXJlYS5zZXRTZWxl
Y3Rpb25SYW5nZSgxMCwgMTApOwogZXhlY1Bhc3RlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxs
aW5nTWFya2VyKDcsMykgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIoMTUsNSkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDMpID09IDAgJiYgd2luZG93LmludGVybmFs
cy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTUsNSkgPT0gMCkgewogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVs
c2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRN
TCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxV
UkUuIFRoZSB3b3JkICdtZWFpdFwnc2dlc2dhJyBoYXMgdW5kZXJsaW5lLjxicj4iOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13
b3JkLXdpdGgtbWFya2VyLTIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRoLW1hcmtlci0yLmh0bWwKaW5kZXggZTBlMGVjOGFm
MWFhNjVjYmZmMGUxOWRjMGVjYjU1NjBlMGFjMDIzNi4uNGZjYjA1MDE2YWU3OWFjMGMxY2ViZTIy
Yjk4MTk1ZjRjNzc0YzZmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1t
YXJrZXItMi5odG1sCkBAIC00MSw4ICs0MSw4IEBAIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFu
Z2UoNyw3KTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01h
cmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIoOCw4KSA9PSAxKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJu
YWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDgsOCkgPT0gMSkgewogICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3
b3JkICdtZWFnZXNnYScgZG9lc24ndCBoYXZlIHVuZGVybGluZS48YnI+IjsKQEAgLTUzLDggKzUz
LDggQEAgcmVzZXRUZXh0KCk7CiB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXN0Jyk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgxNSwxNSk7CiB0eXBlQ2hhcmFjdGVy
Q29tbWFuZCgnICcpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDcsOCkgPT0gMSkgeworaWYg
KHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3
LDgpID09IDEpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCAr
ICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGRvZXNuJ3Qg
aGF2ZSB1bmRlcmxpbmUuPGJyPiI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci1hcm91bmQtbWlzc3BlbGxlZC13b3JkLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNv
ci1hcm91bmQtbWlzc3BlbGxlZC13b3JkLmh0bWwKaW5kZXggMDFiNjhjNGY0NmYyMDYxM2Y4Y2Rl
MDAyMDFmZDkyZmU1MThjZTgwYy4uYTcxNzQ4NTgwN2MwZmJhYzdlMGMxMjgyYjI4ZjQ5YjFjM2Qw
MjBjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxp
bmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29yLWFyb3VuZC1taXNz
cGVsbGVkLXdvcmQuaHRtbApAQCAtMzMsOCArMzMsOCBAQCB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgn
YScpOwogdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKIGV4ZWNNb3ZlU2VsZWN0aW9uQmFja3dh
cmRCeUNoYXJhY3RlckNvbW1hbmQoKTsKICAgICAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3
LDgpID09IDEpIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01h
cmtlcihkb2N1bWVudCwgNyw4KSA9PSAxKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2Ugewog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJG
QUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGRvZXMgbm90IGhhdmUgbWlzc3BlbGwgdW5kZXJs
aW5lLjxicj4iOwpAQCAtNDQsOCArNDQsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogdGV4
dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwogdGV4dGFyZWEuc2V0U2Vs
ZWN0aW9uUmFuZ2UoMTAsIDEwKTsKIHRleHRhcmVhLmZvY3VzKCk7Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGlu
Z01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIoNyw4KSA9PSAxKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMSkgewogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2Ugewog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRo
ZSB3b3JkICdtZWFnZXNnYScgZG9lcyBub3QgaGF2ZSBtaXNzcGVsbCB1bmRlcmxpbmUuPGJyPiI7
CkBAIC01NSw4ICs1NSw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiB0ZXh0YXJlYS5zZXRT
ZWxlY3Rpb25SYW5nZSg2LCA2KTsKIHRleHRhcmVhLmZvY3VzKCk7CiBleGVjTW92ZVNlbGVjdGlv
bkZvcndhcmRCeUNoYXJhY3RlckNvbW1hbmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3
LDgpID09IDEpIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01h
cmtlcihkb2N1bWVudCwgNyw4KSA9PSAxKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5pbm5lckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQgJ21l
YWdlc2dhJyBkb2VzIG5vdCBoYXZlIG1pc3NwZWxsIHVuZGVybGluZS48YnI+IjsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJh
Y2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4
cGVjdGVkLnR4dAppbmRleCAwMWNkYzUyZmFkYzVjODI4Yzk0NDI5MTEwMmM0MGI1MDYxOTQ5YjM1
Li5hZWYyOGI4YTIyYzZkNzE3MjRmYmYzNGFlODQxMjQzZjhkM2JjYjkxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3Bh
Y2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhw
ZWN0ZWQudHh0CkBAIC01LDE2ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBB
U1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAn
T0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMs
IDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAz
LCAyKSBpcyB0cnVlCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LT0sgenogT0snCiBQ
QVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKLUZBSUwgbGF5b3V0VGVzdENvbnRy
b2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4K
K0ZBSUwgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA1LCAyKSBzaG91bGQg
YmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBz
ZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMsIDIpIGlzIHRydWUKIFBBU1MgZmlyc3RMaW5lVGV4dCgp
IGlzICdPS09LIHp6IE9LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPS09LIHp6IE9L
JwotRkFJTCBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBzaG91
bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDUsIDIpIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBw
ZWQKaW5kZXggNWY3NTc5ZjhkNWRlODcwOTk0NDlkN2MxZWI3N2NmYzY1NzA4YTE0Ny4uOWQ2ZmMw
OTg0Yjg4MzEzYWQ3NTNmMTdiOWQ3ZDcwNzk0NzMxYmU2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Nr
aXBwZWQKQEAgLTkxOSw3ICs5MTksNyBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1p
bmxpbmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbAogIyBXZWJLaXRUZXN0UnVubmVy
IG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VQcm9wZXJ0eQogcHJpbnRpbmcvcGFnZS1y
dWxlLXNlbGVjdGlvbi5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgorIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGlu
dGVybmFscy5oYXNTcGVsbGluZ01hcmtlcgogZWRpdGluZy9zcGVsbGluZy9kZXNpZ24tbW9kZS1z
cGVsbGNoZWNrLW9mZi5odG1sCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXR0cmlidXRl
Lmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmh0bWwK
</data>
<flag name="review"
          id="135795"
          type_id="1"
          status="-"
          setter="morrita"
    />
    <flag name="commit-queue"
          id="135757"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132264</attachid>
            <date>2012-03-16 05:58:32 -0700</date>
            <delta_ts>2012-03-16 08:49:28 -0700</delta_ts>
            <desc>Test patch for EWS - Plz do not review</desc>
            <filename>hasSpellingMarker.patch</filename>
            <type>text/plain</type>
            <size>61231</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3Mzg3Y2RmLi4yZjBlYjll
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDMtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBDb252ZXJ0IGhhc1NwZWxsaW5nTWFya2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJm
YWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEz
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEV4cG9ydCBhIHN5bWJvbCBmb3IgaGFzU3Bl
bGxpbmdNYXJrZXIuCisKIDIwMTItMDMtMTUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gTWFrZSB6bGliIGEgZ2VuZXJhbCBidWlsZCByZXF1
aXJlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGEyNjY3MzcuLjNjNGEyMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAor
MjAxMi0wMy0xNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIENvbnZlcnQgaGFzU3BlbGxpbmdNYXJrZXIgdG8gdXNlIEludGVybmFscyBpbnRlcmZh
Y2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTMw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVz
dCBoYXNTcGVsbGluZ01hcmtlciB0ZXN0cyB0byB1c2UgSW50ZXJuYWxzIGluc3RlYWQgb2YgTGF5
b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9kZXNpZ24tbW9kZS1zcGVsbGNoZWNrLW9mZi5odG1sOgorICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanM6CisgICAgICAg
ICh2ZXJpZnlNYXJrZXIpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3Rz
L3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5qczoKKyAgICAgICAgKGNoaWxkSGFzU3BlbGxp
bmdNYXJrZXIpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxs
aW5nLWF0dHJpYnV0ZS1jaGFuZ2UuanM6CisgICAgICAgICh0ZXN0U3BlbGxDaGVja2luZ0VuYWJs
ZWQpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWJh
Y2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzOgorICAgICAgICAodGVzdFdpdGhEZWxldGUpOgorICAg
ICAgICAodGVzdFdpdGhGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGluZy1oYXNzcGVsbGluZ21hcmtlci5qczoKKyAgICAgICAgKGhh
c01hcmtlZCk6CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJpYnV0
ZS5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWNo
YW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1i
YWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1oYXNzcGVsbGluZ21hcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1saW5lYnJlYWsuaHRtbDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0td2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdl
ZW4tbGluZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1p
c3NwZWxsZWQtd29yZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL2VkaXRpbmctbXVsdGlwbGUtd29yZHMtd2l0aC1tYXJrZXJzLmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTEu
aHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLXdv
cmQtd2l0aC1tYXJrZXItMi5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL21vdmUtY3Vyc29yLWFyb3VuZC1taXNzcGVsbGVkLXdvcmQuaHRtbDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vl
bi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisK
IDIwMTItMDMtMTYgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcsIG1hcmtpbmcgYSBmYWlsaW5nIHRlc3QuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2Rlc2lnbi1tb2RlLXNwZWxsY2hl
Y2stb2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2Rlc2lnbi1tb2RlLXNw
ZWxsY2hlY2stb2ZmLmh0bWwKaW5kZXggZTcxMjhlNS4uOWQ0ZjgwYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9kZXNpZ24tbW9kZS1zcGVsbGNoZWNrLW9mZi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZGVzaWduLW1vZGUtc3BlbGxjaGVj
ay1vZmYuaHRtbApAQCAtMTgsNyArMTgsNyBAQCBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgZG9jdW1lbnQuYm9keS5hZGRF
dmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbigpIHsKICAgICAgICAgaWYgKGRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQgIT0gZG9jdW1lbnQuYm9keSkKICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0ZBSUw6IGFjdGl2ZSBl
bGVtZW50IGFmdGVyIGNsaWNrIGlzIG5vdCBib2R5IGVsZW1lbnQnKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDAsIDQpKQorICAgICAg
ICBlbHNlIGlmIChpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDQpKQog
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnRkFJTDogc3BlbGwgY2hlY2sgd2FzIGludm9rZWQnKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ1BBU1MnKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nj
cmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qcwppbmRleCA2YWIwYWZkLi5kMTE2
NTcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0
cy9zcGVsbGNoZWNrLXBhc3RlLmpzCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMKQEAgLTU0LDcgKzU0LDcgQEAgZnVuY3Rp
b24gdmVyaWZ5TWFya2VyKG5vZGUsIGV4cGVjdGVkTWFya2VkKQogCiAgICAgdmFyIG9rID0gdHJ1
ZTsKICAgICBmb3IgKHZhciBpID0gMDsgb2sgJiYgaSA8IGV4cGVjdGVkTWFya2VkLmxlbmd0aDsg
KytpKQotICAgICAgICBvayA9IGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KGV4cGVjdGVkTWFya2VkW2ldWzBdLCBleHBlY3RlZE1hcmtlZFtpXVsxXSk7CisgICAgICAgIG9r
ID0gaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCBleHBlY3RlZE1hcmtlZFtp
XVswXSwgZXhwZWN0ZWRNYXJrZWRbaV1bMV0pOwogICAgIHJldHVybiBvazsKIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmct
YXR0cmlidXRlLWF0LWNoaWxkLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3Jp
cHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzCmluZGV4IDAwMjg2NzIuLjE4
MTBjMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRl
c3RzL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMK
QEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gY2hpbGRIYXNTcGVsbGluZ01hcmtlcihtYXJrdXAp
CiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKICAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicpOwogICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7Ci0gICAgdmFyIG1h
cmtlZCA9IGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDEsIDIpOworICAg
IHZhciBtYXJrZWQgPSBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDEsIDIp
OwogICAgIHJvb3QuaW5uZXJIVE1MID0gIiI7CiAgICAgcmV0dXJuIG1hcmtlZDsKIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5n
LWF0dHJpYnV0ZS1jaGFuZ2UuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Njcmlw
dC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtY2hhbmdlLmpzCmluZGV4IDdkYmY4MGEuLmZmNGVh
YTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3Rz
L3NwZWxsaW5nLWF0dHJpYnV0ZS1jaGFuZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWNoYW5nZS5qcwpAQCAtMjIs
NyArMjIsNyBAQCBmdW5jdGlvbiB0ZXN0U3BlbGxDaGVja2luZ0VuYWJsZWQodGFyZ2V0LCBlbmFi
bGVkKQogCiAgICAgd2luZG93LnRhcmdldCA9IHRhcmdldDsKICAgICBzaG91bGRCZSgidGFyZ2V0
LnNwZWxsY2hlY2siLCBlbmFibGVkID8gInRydWUiIDogImZhbHNlIik7Ci0gICAgc2hvdWxkQmUo
ImxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIiwgZW5hYmxlZCA/
ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJpbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIoZG9jdW1lbnQsIDYsIDIpIiwgZW5hYmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogfQog
CiBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIHNwZWxsY2hlY2spCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1iYWNr
c3BhY2UtYmV0d2Vlbi1saW5lcy5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2Ny
aXB0LXRlc3RzL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzCmluZGV4IGQwZjI0
MTcuLjYxNmYwMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2Ny
aXB0LXRlc3RzL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmpzCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWJhY2tzcGFjZS1i
ZXR3ZWVuLWxpbmVzLmpzCkBAIC0yNiw3ICsyNiw3IEBAIGZ1bmN0aW9uIHRlc3RXaXRoRGVsZXRl
KCkKIAogICAgIHNob3VsZEJlKCJmaXJzdExpbmVUZXh0KCkiLCAiJ09LJyIpOwogICAgIHNob3Vs
ZEJlKCJzZWwuYW5jaG9yTm9kZS5kYXRhIiwgIidPSyB6eiBPSyciKTsKLSAgICBzaG91bGRCZVRy
dWUoImxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIik7CisgICAg
c2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMsIDIp
Iik7CiAKICAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgImxlZnQiLCAibGluZWJvdW5kYXJ5Iik7CiAg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIsIGZhbHNlKTsKQEAgLTM0LDcgKzM0LDcg
QEAgZnVuY3Rpb24gdGVzdFdpdGhEZWxldGUoKQogCiAgICAgc2hvdWxkQmUoInNlbC5hbmNob3JO
b2RlLmRhdGEiLCAiJ09LT0sgenogT0snIik7CiAgICAgc2hvdWxkQmUoImZpcnN0TGluZVRleHQo
KSIsICInT0tPSyB6eiBPSyciKTsKLSAgICBzaG91bGRCZVRydWUoImxheW91dFRlc3RDb250cm9s
bGVyLmhhc1NwZWxsaW5nTWFya2VyKDUsIDIpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbnRlcm5h
bHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIik7CiB9CiAKIGZ1bmN0aW9uIHRl
c3RXaXRoRm9yd2FyZERlbGV0ZSgpCkBAIC00Nyw3ICs0Nyw3IEBAIGZ1bmN0aW9uIHRlc3RXaXRo
Rm9yd2FyZERlbGV0ZSgpCiAKICAgICBzaG91bGRCZSgiZmlyc3RMaW5lVGV4dCgpIiwgIidPSyci
KTsKICAgICBzaG91bGRCZSgic2VsLmFuY2hvck5vZGUuZGF0YSIsICInT0sgenogT0snIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigz
LCAyKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRv
Y3VtZW50LCAzLCAyKSIpOwogCiAgICAgc2VsLm1vZGlmeSgibW92ZSIsICJsZWZ0IiwgImxpbmUi
KTsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRm9yd2FyZERlbGV0ZSIsIGZhbHNlKTsKQEAg
LTU1LDcgKzU1LDcgQEAgZnVuY3Rpb24gdGVzdFdpdGhGb3J3YXJkRGVsZXRlKCkKIAogICAgIHNo
b3VsZEJlKCJmaXJzdExpbmVUZXh0KCkiLCAiJ09LT0sgenogT0snIik7CiAgICAgc2hvdWxkQmUo
InNlbC5hbmNob3JOb2RlLmRhdGEiLCAiJ09LT0sgenogT0snIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA1LCAyKSIp
OwogfQogCiB0ZXN0V2l0aERlbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctaGFzc3BlbGxpbmdtYXJrZXIuanMgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1oYXNzcGVs
bGluZ21hcmtlci5qcwppbmRleCBkMDhkZGQwLi5jMTA3ZmY4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1oYXNzcGVsbGluZ21h
cmtlci5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9z
cGVsbGluZy1oYXNzcGVsbGluZ21hcmtlci5qcwpAQCAtMSw0ICsxLDQgQEAKLWRlc2NyaXB0aW9u
KCdUaGlzIHRlc3RzIExheW91dHRlc3Rjb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyIHdvcmtz
IGZvciBkaWZmZXJudCB0eXBlIG9mIGVsZW1lbnRzLicpOworZGVzY3JpcHRpb24oJ1RoaXMgdGVz
dHMgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyIHdvcmtzIGZvciBkaWZmZXJudCB0eXBlIG9m
IGVsZW1lbnRzLicpOwogCiB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CkBAIC0xMSw3ICsxMSw3IEBA
IGZ1bmN0aW9uIGhhc01hcmtlZChtYXJrdXApCiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydFRleHQiLCBmYWxzZSwgJ3onKTsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0
VGV4dCIsIGZhbHNlLCAnICcpOwogCi0gICAgcmV0dXJuIGxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDAsIDIpOworICAgIHJldHVybiBpbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIoZG9jdW1lbnQsIDAsIDIpOwogfQogCiBzaG91bGRCZVRydWUoImhhc01hcmtlZChcIjx0
ZXh0YXJlYSBpZD0ndGVzdCcgY29scz0nODAnIHJvd3M9JzEwJz48L3RleHRhcmVhPlwiKTsiKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hdHRy
aWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hdHRy
aWJ1dGUuaHRtbAppbmRleCAwNzE1OTkzLi43OWFiNDdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXR0cmlidXRlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJpYnV0ZS5odG1sCkBAIC01Myw3
ICs1Myw3IEBAIGZ1bmN0aW9uIHRlc3RUeXBpbmdJbnZhbGlkV29yZChpZCwgc2hvdWxkQmVNYXJr
ZWQpIHsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicp
OwogICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CiAg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJyAnKTsKLSAgICBp
ZiAoc2hvdWxkQmVNYXJrZWQgPT0gbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoMCwgMikpCisgICAgaWYgKHNob3VsZEJlTWFya2VkID09IGludGVybmFscy5oYXNTcGVsbGlu
Z01hcmtlcihkb2N1bWVudCwgMCwgMikpCiAgICAgICAgIGxvZygiUEFTUzoiICsgaWQpOwogICAg
IGVsc2UKICAgICAgICAgbG9nKCJGQUlMOiIgKyBpZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtY2hhbmdl
LWV4cGVjdGVkLnR4dAppbmRleCBmMjZmNGYyLi5mOGVkYTJjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRl
LWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTQsNDEgKzQsNDEgQEAgT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUKIAogCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIHRydWUKLVBBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5h
bHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIHRydWUKIFBBU1MgdGFyZ2V0
LnNwZWxsY2hlY2sgaXMgZmFsc2UKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIoNiwgMikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2Vy
KGRvY3VtZW50LCA2LCAyKSBpcyBmYWxzZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyB0cnVl
Ci1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIHRy
dWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyB0
cnVlCiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIGZhbHNlCi1QQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5o
YXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgZmFsc2UKIFBBU1MgdGFyZ2V0LnNw
ZWxsY2hlY2sgaXMgdHJ1ZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01h
cmtlcig2LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1
bWVudCwgNiwgMikgaXMgdHJ1ZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyBmYWxzZQotUEFT
UyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyBmYWxzZQor
UEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIGZhbHNl
CiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIHRydWUKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIHRydWUKIFBBU1MgdGFyZ2V0LnNwZWxsY2hl
Y2sgaXMgZmFsc2UKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIo
NiwgMikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50
LCA2LCAyKSBpcyBmYWxzZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyB0cnVlCi1QQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIHRydWUKK1BBU1Mg
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyB0cnVlCiBQQVNT
IHRhcmdldC5zcGVsbGNoZWNrIGlzIGZhbHNlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGlu
Z01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgZmFsc2UKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sg
aXMgdHJ1ZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAy
KSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwg
MikgaXMgdHJ1ZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyBmYWxzZQotUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyBmYWxzZQorUEFTUyBpbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIGZhbHNlCiBQQVNTIHRh
cmdldC5zcGVsbGNoZWNrIGlzIHRydWUKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIoNiwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIoZG9jdW1lbnQsIDYsIDIpIGlzIHRydWUKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgZmFs
c2UKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMg
ZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBp
cyBmYWxzZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyB0cnVlCi1QQVNTIGxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyB0cnVlCiBQQVNTIHRhcmdldC5z
cGVsbGNoZWNrIGlzIGZhbHNlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5n
TWFya2VyKDYsIDIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihk
b2N1bWVudCwgNiwgMikgaXMgZmFsc2UKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgdHJ1ZQot
UEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyB0cnVl
CitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgdHJ1
ZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyBmYWxzZQotUEFTUyBsYXlvdXRUZXN0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2Ut
YmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKaW5kZXggNDE2Y2YwMi4uMjIyZjU2OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0
d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKQEAgLTUsMTYg
KzUsMTYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyBmaXJzdExpbmVUZXh0KCkg
aXMgJ09LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPSyB6eiBPSycKLVBBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQorUEFTUyBp
bnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMsIDIpIGlzIHRydWUKIFBBU1Mg
c2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0tPSyB6eiBPSycKIFBBU1MgZmlyc3RMaW5lVGV4dCgp
IGlzICdPS09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01h
cmtlcig1LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1
bWVudCwgNSwgMikgaXMgdHJ1ZQogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBz
ZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMsIDIpIGlzIHRydWUKIFBBU1MgZmlyc3RMaW5lVGV4dCgp
IGlzICdPS09LIHp6IE9LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPS09LIHp6IE9L
JwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBpcyB0
cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNSwgMikgaXMg
dHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWhhc3NwZWxs
aW5nbWFya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctaGFzc3BlbGxpbmdtYXJrZXItZXhwZWN0ZWQudHh0CmluZGV4IDJiODU4MmEuLjdhYTU3
YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaGFz
c3BlbGxpbmdtYXJrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctaGFzc3BlbGxpbmdtYXJrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
NCBAQAotVGhpcyB0ZXN0cyBMYXlvdXR0ZXN0Y29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlciB3
b3JrcyBmb3IgZGlmZmVybnQgdHlwZSBvZiBlbGVtZW50cy4KK1RoaXMgdGVzdHMgaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyIHdvcmtzIGZvciBkaWZmZXJudCB0eXBlIG9mIGVsZW1lbnRzLgog
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbGluZWJyZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWxpbmVicmVhay5odG1sCmluZGV4IGY1ODE4ZTYuLmU4ODdi
ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbGlu
ZWJyZWFrLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1s
aW5lYnJlYWsuaHRtbApAQCAtMzQsNyArMzQsNyBAQCBmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsK
IAogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgc2VsZWN0
aW9uLnNldFBvc2l0aW9uKGVsZW0sIDApOwotICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikpCisgICAgICAgIGlmIChpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpKQogICAgICAgICAgICBsb2coIlBBU1MiKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICBsb2coIkZBSUwiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dAppbmRleCA0MTZjZjAyLi4y
MjJmNTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25v
d2xlb3BhcmQvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5l
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNu
b3dsZW9wYXJkL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGlu
ZXMtZXhwZWN0ZWQudHh0CkBAIC01LDE2ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
CiAKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0
YSBpcyAnT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFy
a2VyKDMsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LT0sgenog
T0snCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5h
bHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIGlzIHRydWUKIFBBU1MgZmlyc3RM
aW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0sgenogT0sn
Ci1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlzIHRy
dWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAzLCAyKSBpcyB0
cnVlCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKIFBBU1Mgc2VsLmFuY2hv
ck5vZGUuZGF0YSBpcyAnT0tPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIoNSwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIoZG9jdW1lbnQsIDUsIDIpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4t
bGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IDQxNmNmMDIuLjIyMmY1NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3
ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS13aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1l
eHBlY3RlZC50eHQKQEAgLTUsMTYgKzUsMTYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAog
UEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlz
ICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIo
MywgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQs
IDMsIDIpIGlzIHRydWUKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0tPSyB6eiBPSycK
IFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5o
YXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNSwgMikgaXMgdHJ1ZQogUEFTUyBmaXJzdExpbmVU
ZXh0KCkgaXMgJ09LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPSyB6eiBPSycKLVBB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQor
UEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMsIDIpIGlzIHRydWUK
IFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwogUEFTUyBzZWwuYW5jaG9yTm9k
ZS5kYXRhIGlzICdPS09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVs
bGluZ01hcmtlcig1LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtl
cihkb2N1bWVudCwgNSwgMikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CmluZGV4IDk0
MDRhZDQuLmMzMjBhNTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CkBAIC01LDE2
ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgZmlyc3RMaW5lVGV4dCgp
IGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0sgenogT0snCi1QQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlzIHRydWUKK1BBU1Mg
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNT
IHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwogUEFTUyBmaXJzdExpbmVUZXh0KCkg
aXMgJ09LT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFy
a2VyKDMsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0snCiBQQVNTIHNl
bC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcigzLCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVs
bGluZ01hcmtlcihkb2N1bWVudCwgMywgMikgaXMgdHJ1ZQogUEFTUyBmaXJzdExpbmVUZXh0KCkg
aXMgJ09LT0sgenogT0snCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwot
UEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigzLCAyKSBpcyB0cnVl
CitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMywgMikgaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUt
aW50by1taXNzcGVsbGVkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1pc3NwZWxsZWQtd29yZC5odG1sCmluZGV4IDU1NTky
YTguLjA5MDliN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1pc3NwZWxsZWQtd29yZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1pc3NwZWxsZWQt
d29yZC5odG1sCkBAIC0zMiw4ICszMiw4IEBAIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdnJyk7CiB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnYScpOwogdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKIGV4
ZWNEZWxldGVDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNyw4KSA9PSAxKSB7
CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1l
bnQsIDcsOCkgPT0gMSkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmlubmVySFRNTCA9ICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAiRkFJTFVSRS4gVGhl
IHdvcmQgJ21lYWdlc2dhJyBkb2VzIG5vdCBoYXZlIHVuZGVybGluZS48YnI+IjsKQEAgLTQ1LDgg
KzQ1LDggQEAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgNik7CiB0ZXh0YXJlYS5mb2N1
cygpOwogdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKIGV4ZWNGb3J3YXJkRGVsZXRlQ29tbWFu
ZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDcsOCkgPT0gMSkgeworaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDgpID09IDEp
IHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNT
PGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlu
bmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGRvZXMgbm90IGhhdmUgdW5k
ZXJsaW5lLjxicj4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13aXRoLW1hcmtlcnMuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctbXVsdGlwbGUt
d29yZHMtd2l0aC1tYXJrZXJzLmh0bWwKaW5kZXggYjEyYTk2Ni4uNDRmOWE3MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0
aXBsZS13b3Jkcy13aXRoLW1hcmtlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLW11bHRpcGxlLXdvcmRzLXdpdGgtbWFya2Vycy5o
dG1sCkBAIC01MCw4ICs1MCw4IEBAIHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3QnKTsKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDIw
KTsKIGV4ZWNEZWxldGVDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
ICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNyw0KSA9
PSAwICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigxMSw0
KSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1Nw
ZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIoZG9jdW1lbnQsIDcsNCkgPT0gMCAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKGRvY3VtZW50LCAxMSw0KSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2Ugewog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJG
QUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC02MSw4
ICs2MSw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiByZXNldFRleHQoKTsKIHRleHRhcmVh
LnNldFNlbGVjdGlvblJhbmdlKDExLCAxNik7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDcsNCkgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoMTEsOCkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMg
JiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDQpID09IDAgJiYgd2luZG93
LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTEsOCkgPT0gMCkgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsK
ICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
LmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1M
ICsgIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnbWVhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7
CkBAIC03Miw4ICs3Miw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiByZXNldFRleHQoKTsK
IHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKDE1LCAyMCk7CiBleGVjRGVsZXRlQ29tbWFuZCgp
OwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDcsOCkgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMTUsNCkgPT0gMCkgeworaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDgpID09IDAg
JiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTUsNCkgPT0g
MCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRN
TCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NF
U1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyku
aW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnZXNnYWVzZ2EnIGhhcyB1bmRlcmxp
bmUuPGJyPiI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9z
cGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJrZXItMS5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTEuaHRt
bAppbmRleCA2ZTdkYzA4Li5iNDdkOTczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJrZXItMS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctd29y
ZC13aXRoLW1hcmtlci0xLmh0bWwKQEAgLTQxLDggKzQxLDggQEAgdGV4dGFyZWEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwogdGV4dGFyZWEuZm9jdXMoKTsKIHRleHRhcmVhLnNl
dFNlbGVjdGlvblJhbmdlKDE0LCAxNSk7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDcsNykgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2lu
ZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDcpID09IDApIHsKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUzxicj4n
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuaW5uZXJIVE1MID0gIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnZXNnJyBoYXMgdW5kZXJsaW5l
Ljxicj4iOwpAQCAtNTMsOCArNTMsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
ICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogcmVzZXRU
ZXh0KCk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSg2LCA2KTsKIGV4ZWNGb3J3YXJkRGVs
ZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsOCkgPT0gMCkgeworaWYg
KHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2
LDgpID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCAr
ICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnYW1lYWdlc2dhJyBoYXMgdW5k
ZXJsaW5lLjxicj4iOwpAQCAtNjQsOCArNjQsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgog
cmVzZXRUZXh0KCk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSg3LCA3KTsKIGV4ZWNGb3J3
YXJkRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDcsNykgPT0gMCkg
eworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01h
cmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCA3LDcpID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVy
SFRNTCArICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnZWFnZXNnYScgaGFz
IHVuZGVybGluZS48YnI+IjsKQEAgLTc1LDggKzc1LDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTAsIDEwKTsKIHR5
cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
ICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNywzKSA9
PSAwICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigxMSw1
KSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1Nw
ZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIoZG9jdW1lbnQsIDcsMykgPT0gMCAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKGRvY3VtZW50LCAxMSw1KSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5pbm5lckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHNlZ21lbnQg
J21lYSBnZXNnYScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTg2LDggKzg2LDggQEAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFu
Z2UoMTAsIDEzKTsKIGV4ZWNEZWxldGVDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoNyw1KSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDcsNSkgPT0gMCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3Jk
ICdtZWFnYScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTk3LDggKzk3LDggQEAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2Uo
MTAsIDEzKTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01h
cmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIoNywzKSA9PSAwICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGlu
Z01hcmtlcigxMSwyKSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDcsMykgPT0gMCAmJiB3aW5kb3cuaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAxMSwyKSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4g
VGhlIHNlZ21lbnQgJ21lYSBnYScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTEwOSw4ICsxMDks
OCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogcmVzZXRUZXh0KCk7CiB0ZXh0YXJlYS5zZXRT
ZWxlY3Rpb25SYW5nZSg3LCA3KTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5o
YXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoOCw4KSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3
aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDgsOCkgPT0gMCkgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9
IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVy
SFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZB
SUxVUkUuIFRoZSB3b3JkICdhbWVhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC0xMjAs
OCArMTIwLDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFy
ZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTUsIDE1KTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNyw4KSA9PSAwKSB7CitpZiAod2luZG93LmludGVy
bmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMCkgewog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+
JzsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJI
VE1MICsgIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnZXNnYWEnIGhhcyB1bmRlcmxpbmUuPGJyPiI7
CkBAIC0xMzUsOCArMTM1LDggQEAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMCw0KTsKIGV4
ZWNDb3B5Q29tbWFuZCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoNywgNyk7CiBleGVj
UGFzdGVDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikgewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMTEsOCkgPT0gMCkgewor
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtl
cikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50
LCAxMSw4KSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhU
TUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdlc2dhJyBoYXMg
dW5kZXJsaW5lLjxicj4iOwpAQCAtMTQ5LDggKzE0OSw4IEBAIHRleHRhcmVhLnNldFNlbGVjdGlv
blJhbmdlKDAsNCk7CiBleGVjQ29weUNvbW1hbmQoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlvblJh
bmdlKDE1LCAxNSk7CiBleGVjUGFzdGVDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoNyw4KSA9PSAwKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3Jk
ICdtZWFnZXNnYScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTE2Myw4ICsxNjMsOCBAQCB0ZXh0
YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgwLDQpOwogZXhlY0NvcHlDb21tYW5kKCk7CiB0ZXh0YXJl
YS5zZXRTZWxlY3Rpb25SYW5nZSgxMCwgMTApOwogZXhlY1Bhc3RlQ29tbWFuZCgpOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDcsMykgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoMTUsNSkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMg
JiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDMpID09IDAgJiYgd2luZG93
LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTUsNSkgPT0gMCkgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsK
ICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
LmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1M
ICsgIkZBSUxVUkUuIFRoZSB3b3JkICdtZWFpdFwnc2dlc2dhJyBoYXMgdW5kZXJsaW5lLjxicj4i
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcv
ZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTIuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRoLW1hcmtlci0yLmh0bWwKaW5kZXgg
ZTBlMGVjOC4uNGZjYjA1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1t
YXJrZXItMi5odG1sCkBAIC00MSw4ICs0MSw4IEBAIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFu
Z2UoNyw3KTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01h
cmtlcikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIoOCw4KSA9PSAxKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJu
YWxzLmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDgsOCkgPT0gMSkgewogICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3
b3JkICdtZWFnZXNnYScgZG9lc24ndCBoYXZlIHVuZGVybGluZS48YnI+IjsKQEAgLTUzLDggKzUz
LDggQEAgcmVzZXRUZXh0KCk7CiB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXN0Jyk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgxNSwxNSk7CiB0eXBlQ2hhcmFjdGVy
Q29tbWFuZCgnICcpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDcsOCkgPT0gMSkgeworaWYg
KHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3
LDgpID09IDEpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCAr
ICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGRvZXNuJ3Qg
aGF2ZSB1bmRlcmxpbmUuPGJyPiI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci1hcm91bmQtbWlzc3BlbGxlZC13b3JkLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNv
ci1hcm91bmQtbWlzc3BlbGxlZC13b3JkLmh0bWwKaW5kZXggMDFiNjhjNC4uYTcxNzQ4NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1j
dXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL21vdmUtY3Vyc29yLWFyb3VuZC1taXNzcGVsbGVkLXdv
cmQuaHRtbApAQCAtMzMsOCArMzMsOCBAQCB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnYScpOwogdHlw
ZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKIGV4ZWNNb3ZlU2VsZWN0aW9uQmFja3dhcmRCeUNoYXJh
Y3RlckNvbW1hbmQoKTsKICAgICAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDgpID09IDEp
IHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1
bWVudCwgNyw4KSA9PSAxKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuaW5uZXJIVE1MID0gJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJGQUlMVVJFLiBU
aGUgd29yZCAnbWVhZ2VzZ2EnIGRvZXMgbm90IGhhdmUgbWlzc3BlbGwgdW5kZXJsaW5lLjxicj4i
OwpAQCAtNDQsOCArNDQsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogdGV4dGFyZWEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFu
Z2UoMTAsIDEwKTsKIHRleHRhcmVhLmZvY3VzKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcikg
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIo
Nyw4KSA9PSAxKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMSkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3JkICdt
ZWFnZXNnYScgZG9lcyBub3QgaGF2ZSBtaXNzcGVsbCB1bmRlcmxpbmUuPGJyPiI7CkBAIC01NSw4
ICs1NSw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25S
YW5nZSg2LCA2KTsKIHRleHRhcmVhLmZvY3VzKCk7CiBleGVjTW92ZVNlbGVjdGlvbkZvcndhcmRC
eUNoYXJhY3RlckNvbW1hbmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDgpID09IDEp
IHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1
bWVudCwgNyw4KSA9PSAxKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdlc2dhJyBk
b2VzIG5vdCBoYXZlIG1pc3NwZWxsIHVuZGVybGluZS48YnI+IjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1i
ZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4
dAppbmRleCAwMWNkYzUyLi5hZWYyOGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CkBAIC01LDE2
ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgZmlyc3RMaW5lVGV4dCgp
IGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0sgenogT0snCi1QQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlzIHRydWUKK1BBU1Mg
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNT
IHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LT0sgenogT0snCiBQQVNTIGZpcnN0TGluZVRleHQo
KSBpcyAnT0tPSyB6eiBPSycKLUZBSUwgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIoNSwgMikgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA1LCAyKSBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNl
LgogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRh
IGlzICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoMywgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1l
bnQsIDMsIDIpIGlzIHRydWUKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwog
UEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPS09LIHp6IE9LJwotRkFJTCBsYXlvdXRUZXN0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZh
bHNlLgorRkFJTCBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIHNo
b3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKaW5kZXggZTk5MjkyMC4u
ZmQ2ZDM0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKQEAgLTkxNiw3ICs5MTYsNyBAQCBl
ZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxpbmUtZmlyc3QtbGFzdC1jb250ZW50ZWRp
dGFibGUuaHRtbAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VQcm9wZXJ0eQogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCiAKLSMgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cgorIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcgog
ZWRpdGluZy9zcGVsbGluZy9kZXNpZ24tbW9kZS1zcGVsbGNoZWNrLW9mZi5odG1sCiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsY2hlY2stYXR0cmlidXRlLmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMGU5NWUzLi5mZTk0
NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDMtMTUgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBDb252ZXJ0IGhhc1NwZWxs
aW5nTWFya2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgaGFzU3BlbGxpbmdNYXJrZXIgZnVu
Y3Rpb25zLCBiZWNhdXNlIGl0IGlzIGFibGUgdG8gd29yayBpbiB0aGUKKyAgICAgICAgY3Jvc3Mt
cG9ydCB3YXkgdGhyb3VnaCB0aGUgSW50ZXJuYWxzIGludGVyZmFjZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIHNpbmNlIHdlIGFyZSBpbXByb3ZpbmcgaGVyZSB0aGUgaW5mcmEtc3RydWN0dXJl
CisgICAgICAgIGZvciB0ZXN0aW5nIGEgc3BlY2lmaWMgbWV0aG9kLgorCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTcGVs
bGluZ01hcmtlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisKIDIwMTItMDMtMTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhlYXBTbmFwc2hvdDogc3BlZWR1cCBidWls
ZFJldmVyc2VJbmRleC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMjkz
Njg2Li5hMDIwMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03MTQs
NCArNzE0LDEyIEBAIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUo
KQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsRnJhbWUoZnJhbWUoKS0+
cGFnZSgpKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6Omhhc1NwZWxsaW5nTWFya2VyKERvY3VtZW50
KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKQoreworICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0
SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNjdjMDkyMi4uZTUxZjg3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMzIsNiArMTMyLDggQEAgcHVibGlj
OgogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICB2b2lkIGVtaXRJ
bnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwogCisgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihE
b2N1bWVudCosIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJik7CisKICAgICBz
dGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7CiAKICAgICBJbnRlcm5hbFNldHRpbmdzKiBz
ZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBkOTg1NmFkLi4zY2Q5ZTYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMDksNiArMTA5LDggQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICAgICAgdm9p
ZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKIAorICAgICAgICBib29sZWFuIGhhc1Nw
ZWxsaW5nTWFya2VyKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBsb25nIGZyb20sIGluIGxvbmcg
bGVuZ3RoKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEludGVybmFsU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpp
bmRleCA0MThlZTJkLi5kNDY0NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDMtMTUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBDb252ZXJ0IGhhc1NwZWxsaW5nTWFya2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJm
YWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEz
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3ZWJraXRXZWJGcmFtZVNlbGVjdGlvbkhhc1Nw
ZWxsaW5nTWFya2VyIHN1cHBvcnQsCisgICAgICAgIHNpbmNlIGl0IGNhbiBzdXBwb3J0IGluIHRo
ZSBjcm9zcy1wb3J0IHdheSB0aHJvdWdoIHRoZSBJbnRlcm5hbHMgaW50ZXJmYWNlLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ayk6CisKIDIwMTItMDMtMTYgIFphbiBEb2JlcnNlayAg
PHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbR3RrXSBBZGQgY29tcHV0ZWRTdHls
ZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5jcHAKaW5kZXggM2Y3MzYzZC4uMzAwZjFkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuY3BwCkBAIC02ODQsMTMgKzY4NCw2IEBAIHVuc2lnbmVkIGludCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OndvcmtlclRocmVhZENvdW50KCkKICNlbmRpZgogfQogCi1ib29sIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6d2Via2l0V2ViRnJhbWVTZWxlY3Rpb25IYXNTcGVsbGluZ01h
cmtlcihXZWJLaXRXZWJGcmFtZSAqZnJhbWUsIGdpbnQgZnJvbSwgZ2ludCBsZW5ndGgpCi17Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIEZBTFNF
KTsKLQotICAgIHJldHVybiBjb3JlKGZyYW1lKS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKLX0KLQog
Ym9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmZpbmRTdHJpbmcoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgZ2NoYXIqIHRhcmdldFN0cmluZywgV2ViS2l0RmluZE9wdGlvbnMgZmlu
ZE9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGNvcmUod2ViVmlldyktPmZpbmRTdHJpbmcoU3RyaW5n
Ojpmcm9tVVRGOCh0YXJnZXRTdHJpbmcpLCBmaW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oCmluZGV4IDUwMmVjNGQuLjY5ODg0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC0x
MTYsNyArMTE2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdoaXRlTGlzdEFjY2Vzc0Zy
b21PcmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29uc3QgZ2NoYXIqIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVMaXN0cygpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgd29ya2VyVGhyZWFkQ291bnQoKTsK
LSAgICBzdGF0aWMgYm9vbCB3ZWJraXRXZWJGcmFtZVNlbGVjdGlvbkhhc1NwZWxsaW5nTWFya2Vy
KFdlYktpdFdlYkZyYW1lKiwgZ2ludCBmcm9tLCBnaW50IGxlbmd0aCk7CiAKICAgICBzdGF0aWMg
dm9pZCByZXNldEdlb2xvY2F0aW9uQ2xpZW50TW9jayhXZWJLaXRXZWJWaWV3Kik7CiAgICAgc3Rh
dGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihXZWJLaXRXZWJWaWV3KiwgYm9v
bCBhbGxvd2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2YWU2NjJlLi5kNWEzNjMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMTUgIEd5dXlvdW5nIEtpbSAgPGd5
dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBDb252ZXJ0IGhhc1NwZWxsaW5nTWFy
a2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgaGFzU3BlbGxpbmdNYXJrZXIgc3VwcG9ydCwg
c2luY2UgaXQgY2FuIHN1cHBvcnQgaW4gdGhlIGNyb3NzLXBvcnQgd2F5CisgICAgICAgIHRocm91
Z2ggdGhlIEludGVybmFscyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJLaXQub3JkZXI6Cisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
UHJpdmF0ZS5oOgorCiAyMDEyLTAzLTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIE5vdGlmaWNhdGlvbkNvbnRlbnRzIGludG8gTm90aWZpY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXQub3JkZXIKaW5kZXggMDQwYWU5MC4uNWI1ODQ5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5v
cmRlcgpAQCAtMTY5MSw3ICsxNjkxLDYgQEAgX19aVGhuOF9OMTVXZWJFZGl0b3JDbGllbnQxN2dl
dEd1ZXNzZXNGb3JXb3JkRVJLTjNXVEY2U3RyaW5nRVMzX1JOUzBfNlZlY3RvcklTMV8KIF9fWk4x
NVdlYkVkaXRvckNsaWVudDE3Z2V0R3Vlc3Nlc0ZvcldvcmRFUktOM1dURjZTdHJpbmdFUzNfUk5T
MF82VmVjdG9ySVMxX0xtMEVFRQogX19aTjNXVEY2VmVjdG9ySU5TXzZTdHJpbmdFTG0wRUUxNHNo
cmlua0NhcGFjaXR5RW0KIF9fWk4xNVdlYkVkaXRvckNsaWVudDM0dXBkYXRlU3BlbGxpbmdVSVdp
dGhNaXNzcGVsbGVkV29yZEVSS04zV1RGNlN0cmluZ0UKLS1bV2ViRnJhbWUoV2ViUHJpdmF0ZSkg
aGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0KIC1bV2ViRnJhbWUoV2ViUHJpdmF0ZSkgaGFzR3Jh
bW1hck1hcmtlcjpsZW5ndGg6XQogX19aVGhuOF9OMTVXZWJFZGl0b3JDbGllbnQyM3JlcXVlc3RD
aGVja2luZ09mU3RyaW5nRVBON1dlYkNvcmUxMlNwZWxsQ2hlY2tlckVpalJLTjNXVEY2U3RyaW5n
RQogX19aTjE1V2ViRWRpdG9yQ2xpZW50MjNyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZ0VQTjdXZWJD
b3JlMTJTcGVsbENoZWNrZXJFaWpSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IGUwODViYzEuLjFiZGMzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtMTIyMywxNCArMTIyMyw2IEBAIHN0YXRpYyBpbmxpbmUgV2Vi
RGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIHJldHVy
biBjb3JlRnJhbWUtPmxheWVyVHJlZUFzVGV4dCgpOwogfQogCi0tIChCT09MKWhhc1NwZWxsaW5n
TWFya2VyOihpbnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKLXsKLSAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShzZWxmKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIE5P
OwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0aCk7Ci19Ci0KIC0gKEJP
T0wpaGFzR3JhbW1hck1hcmtlcjooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoCiB7CiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoc2VsZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZVByaXZhdGUuaAppbmRleCA4OTljZWVkLi4xMzhhMGY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKQEAgLTEzNiw5ICsxMzYsNiBAQCB0
eXBlZGVmIGVudW0gewogCiAtIChOU1N0cmluZyopX2xheWVyVHJlZUFzVGV4dDsKIAotLy8gUmV0
dXJucyB3aGV0aGVyIHRoZXJlIGlzIGEgc3BlbGxpbmcgbWFya2VyIGluIHRoZSBzcGVjaWZpZWQg
cmFuZ2Ugb2YgdGhlIGZvY3VzZWQgbm9kZS4KLS0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGlu
dClsb2NhdGlvbiBsZW5ndGg6KGludClsZW5ndGg7Ci0KIC0gKEJPT0wpaGFzR3JhbW1hck1hcmtl
cjooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoOwogCiAvLyBUaGUgdG9wIG9mIHRoZSBhY2Nl
c3NpYmlsaXR5IHRyZWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggN2M5ZGI1My4uM2JjOTEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTE1ICBHeXV5b3VuZyBLaW0g
IDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ29udmVydCBoYXNTcGVsbGlu
Z01hcmtlciB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGhhc1NwZWxsaW5nTWFya2VyIGludGVy
ZmFjZSBzdXBwb3J0LCBzaW5jZSBpdCBjYW4gc3VwcG9ydCBpbiB0aGUgY3Jvc3MtcG9ydAorICAg
ICAgICB3YXkgdGhyb3VnaCB0aGUgSW50ZXJuYWxzIGludGVyZmFjZS4KKworICAgICAgICAqIElu
dGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6CisKIDIwMTItMDMtMTMgIEpvbiBMZWUgIDxq
b25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcGFyYXRlIE5PVElGSUNBVElPTlMgYW5kIExF
R0FDWV9OT1RJRklDQVRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsIGIvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViRnJhbWVQcml2YXRlLmlkbAppbmRleCA5MGJhNGJkLi5jYjdhNDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKQEAgLTExNSw4
ICsxMTUsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lUHJpdmF0ZSA6IElVbmtub3duCiAKICAgICBI
UkVTVUxUIGxvYWRQbGFpblRleHRTdHJpbmcoW2luXSBCU1RSIHN0cmluZywgW2luXSBCU1RSIHVy
bCk7CiAKLSAgICBIUkVTVUxUIGhhc1NwZWxsaW5nTWFya2VyKFtpbl0gVUlOVCBmcm9tLCBbaW5d
IFVJTlQgbGVuZ3RoLCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7Ci0gICAgCiAgICAgSFJF
U1VMVCBjbGVhck9wZW5lcigpOwogCiAgICAgSFJFU1VMVCBzZXRUZXh0RGlyZWN0aW9uKFtpbl0g
QlNUUiBkaXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcxNmM2YmYuLjUzNWFjN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMy0xNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcu
a2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIENvbnZlcnQgaGFzU3BlbGxpbmdNYXJrZXIgdG8g
dXNlIEludGVybmFscyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MTMwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOiBFeHBvcnQgYSBzeW1ib2wgZm9yIGhh
c1NwZWxsaW5nTWFya2VyLgorCiAyMDEyLTAzLTE2ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3Rh
ZWNrLnNvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgUHJvY2Vzc0xh
dW5jaGVyRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGZiYjJiYmMuLjFmZjI0MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIyMywzICsyMjMsNCBAQCBFWFBPUlRTCiAgICAg
ICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCiAgICAgICAg
ID93aWxsRGV0YWNoUGFnZUBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFha
CiAgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1Jl
ZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX05AWgorICAgICAgICA/c2VsZWN0
aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERv
Y3VtZW50TWFya2VyQDJASEhAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMDI5NGRhZC4u
NjUyZjE4MiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysg
Yi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0xMjIsNiArMTIyLDcgQEAgX1pO
N1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMzMnNldE11bHRpcGxlU2hhZG93U3VidHJl
ZXNFbmFibGVkRWI7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4aXNTaGFk
b3dET01FbmFibGVkRTsKIF9aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpq
ampiOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU184Tm9kZUxpc3RFOworX1pOSzdXZWJDb3JlNkVkaXRvcjI2c2VsZWN0aW9uU3Rh
cnRIYXNNYXJrZXJGb3JFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUVpaTsKIGxvY2Fs
OgogX1oqOwogY3RpKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA0ZjQ5ZjIxLi5mODdiMTVmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDMtMTUgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBDb252ZXJ0IGhh
c1NwZWxsaW5nTWFya2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzMDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgaGFzU3BlbGxpbmdNYXJr
ZXIgZnVuY3Rpb25zLCBiZWNhdXNlIGl0IGlzIGFibGUgdG8gd29yayBpbiB0aGUKKyAgICAgICAg
Y3Jvc3MtcG9ydCB3YXkgdGhyb3VnaCB0aGUgSW50ZXJuYWxzIGludGVyZmFjZS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29u
dHJvbGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwu
Y3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwOgorCiAyMDEyLTAzLTE2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW3dlYmtpdHB5XSBTdGF0dXNTZXJ2ZXIubmV4dF93b3JrX2l0ZW0gaGFzIGFuIGlu
Y29ycmVjdGx5IG5hbWVkIGxvY2FsIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOTZhZWVkZC4uNjY4M2NlOSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjAzNCwxOSAr
MjAzNCw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFib3J0TW9kYWxDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBoYXNTcGVsbGluZ01h
cmtlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoYXJn
dW1lbnRDb3VudCAhPSAyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Ci0KLSAgICBpbnQgZnJvbSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVu
dHNbMF0sIDApOwotICAgIGludCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJn
dW1lbnRzWzFdLCAwKTsKLSAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKLSAgICBib29sIG9rID0gY29udHJvbGxlci0+aGFzU3BlbGxpbmdNYXJrZXIoZnJv
bSwgbGVuZ3RoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgb2sp
OwotfQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBoYXNHcmFtbWFyTWFya2VyQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIpCkBA
IC0yMzcxLDcgKzIzNTgsNiBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAib3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNh
Y2hlIiwgb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiZ29CYWNrIiwgZ29CYWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCiAgICAgICAgIHsgImdyYW50
RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBncmFudERlc2t0b3BOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCi0gICAgICAgIHsgImhhc1NwZWxsaW5nTWFya2Vy
IiwgaGFzU3BlbGxpbmdNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJoYXNHcmFt
bWFyTWFya2VyIiwgaGFzR3JhbW1hck1hcmtlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
Imlnbm9yZURlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMiLCBpZ25vcmVEZXNr
dG9wTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiaXNDb21tYW5kRW5hYmxlZCIsIGlzQ29tbWFuZEVuYWJsZWRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYjMy
NDhkMC4uNTMxMGM2NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCkBAIC0zMjgsNyArMzI4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhYm9ydE1vZGFs
KCk7CiAKLSAgICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsK
ICAgICBib29sIGhhc0dyYW1tYXJNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOwogCiAgICAg
dm9pZCBkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KGludCBkZXZpY2VEUEksIGludCBkZXZp
Y2VXaWR0aCwgaW50IGRldmljZUhlaWdodCwgaW50IGF2YWlsYWJsZVdpZHRoLCBpbnQgYXZhaWxh
YmxlSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
TGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcAppbmRleCBkNGQy
M2QyLi40Mjc0N2M5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCkBAIC03
MTUsMTQgKzcxNSw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlv
bnMoKSBjb25zdAogICAgICAgICBtYWluRnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRp
b25zKCk7CiB9CiAKLWJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2Vy
KGludCBmcm9tLCBpbnQgbGVuZ3RoKQotewotICAgIGlmICghbWFpbkZyYW1lKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbWFpbkZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3IoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9t
LCBsZW5ndGgpOwotfQotCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVI
VFRQTG9hZHMoYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGlmIG5lZWRlZCBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzU4LgpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CmluZGV4IGFmNTYzNjAuLjU1YTFjYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEzMiw3ICsxMzIsNiBA
QCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBz
aGVsbCkKICAgICBiaW5kTWV0aG9kKCJleGVjQ29tbWFuZCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6ZXhlY0NvbW1hbmQpOwogICAgIGJpbmRNZXRob2QoImZvcmNlUmVkU2VsZWN0aW9uQ29sb3Jz
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpmb3JjZVJlZFNlbGVjdGlvbkNvbG9ycyk7CiAgICAg
YmluZE1ldGhvZCgiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbik7Ci0gICAg
YmluZE1ldGhvZCgiaGFzU3BlbGxpbmdNYXJrZXIiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhh
c1NwZWxsaW5nTWFya2VyKTsKICAgICBiaW5kTWV0aG9kKCJmaW5kU3RyaW5nIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpmaW5kU3RyaW5nKTsKICAgICBiaW5kTWV0aG9kKCJpc0NvbW1hbmRFbmFi
bGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKTsKICAgICBiaW5k
TWV0aG9kKCJoYXNDdXN0b21QYWdlU2l6ZVN0eWxlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpo
YXNDdXN0b21QYWdlU2l6ZVN0eWxlKTsKQEAgLTIwMDMsMTMgKzIwMDIsNiBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmdzLCBDcAogICAgICAgICByZXN1bHQtPnNldChlbGVtZW50LmRvY3VtZW50KCkuZnJh
bWUoKS0+bWFya2VyVGV4dEZvckxpc3RJdGVtKGVsZW1lbnQpLnV0ZjgoKSk7CiB9CiAKLXZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFd
LmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZXN1bHQtPnNldChtX3NoZWxsLT53
ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9y
KGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCkpKTsKLX0KLQog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAwZjUw
NTliLi41MzY3N2UyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTM4NSw3ICszODUsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBD
cHBWYXJpYW50KiByZXN1bHQpOwogCiAgICAgdm9pZCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQgaGFzU3BlbGxpbmdN
YXJrZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZmlu
ZFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2b2lk
IHNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29u
dHJvbGxlckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRy
b2xsZXJFZmwuY3BwCmluZGV4IDdjZGUxMjYuLmMyODFjNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcApAQCAtNzI2LDEy
ICs3MjYsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVs
bGluZ01hcmtlcihpbnQsIGludCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzR3JhbW1hck1hcmtl
cihpbnQsIGludCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMDZlNDU2
Yy4uZDRlMTIxMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC05NzYsMTEgKzk3Niw2IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogewogfQogCi1ib29sIExheW91dFRlc3RDb250cm9s
bGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKLXsKLSAgICByZXR1
cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3ZWJraXRXZWJGcmFtZVNlbGVjdGlvbkhhc1Nw
ZWxsaW5nTWFya2VyKG1haW5GcmFtZSwgZnJvbSwgbGVuZ3RoKTsKLX0KLQogYm9vbCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6aGFzR3JhbW1hck1hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKIHsK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZDI2NzVkYi4uYjYxNTVhOSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpA
QCAtMTE1OSwxMSArMTE1OSw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9k
YWwoKQogICAgIFtOU0FwcCBhYm9ydE1vZGFsXTsKIH0KIAotYm9vbCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIFttYWluRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6ZnJvbSBsZW5ndGg6bGVuZ3RoXTsKLX0K
LQogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzR3JhbW1hck1hcmtlcihpbnQgZnJvbSwg
aW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gW21haW5GcmFtZSBoYXNHcmFtbWFyTWFya2VyOmZy
b20gbGVuZ3RoOmxlbmd0aF07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDg2OWYyNjMuLjczNjVhM2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC05
NDMsMTIgKzk0Myw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFZpc2l0
ZWRMaW5rcygpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBWaXNpdGVkTGlua3ND
YWxsYmFja3ModHJ1ZSk7CiB9CiAKLWJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxs
aW5nTWFya2VyKGludCwgaW50KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRVUkxUb1JlZGly
ZWN0KGNvbnN0IFFTdHJpbmcmIG9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pCiB7
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVSTFRvUmVkaXJlY3Qob3JpZ2luLCBk
ZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmgKaW5kZXggMzJmNjFlNy4uYTM5N2ZiYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMjQxLDcgKzI0MSw2IEBA
IHB1YmxpYyBzbG90czoKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5
IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVy
LgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9Ci0gICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihp
bnQgZnJvbSwgaW50IGxlbmd0aCk7CiAKICAgICB2b2lkIGFkZFVSTFRvUmVkaXJlY3QoY29uc3Qg
UVN0cmluZyYgb3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmlu
ZGV4IDI1NDgzYzIuLmU2MzliZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTQ0OSwxNyArMTQ0OSw2IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogewogfQogCi1ib29sIExheW91
dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkK
LXsKLSAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFt
ZSk7Ci0gICAgaWYgKCFmcmFtZVByaXZhdGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBC
T09MIHJldCA9IEZBTFNFOwotICAgIGlmIChGQUlMRUQoZnJhbWVQcml2YXRlLT5oYXNTcGVsbGlu
Z01hcmtlcihmcm9tLCBsZW5ndGgsICZyZXQpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiByZXQ7Ci19Ci0KIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc0dyYW1tYXJN
YXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxl
cld4LmNwcAppbmRleCAxOTY5NTliLi5mYzZhMjY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNTUwLDEyICs1NTAsNiBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIHsKIH0KIAotYm9vbCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50LCBpbnQpCi17Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6aGFzR3JhbW1hck1hcmtlcihpbnQsIGludCkKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132291</attachid>
            <date>2012-03-16 08:49:28 -0700</date>
            <delta_ts>2012-03-20 10:00:02 -0700</delta_ts>
            <desc>Test patch for EWS - Plz do not review</desc>
            <filename>hasSpellingMarker.patch</filename>
            <type>text/plain</type>
            <size>61360</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmZjZlMmJhLi40NjZlNjIz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDMtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBDb252ZXJ0IGhhc1NwZWxsaW5nTWFya2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJm
YWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEz
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEV4cG9ydCBhIHN5bWJvbCBmb3IgaGFzU3Bl
bGxpbmdNYXJrZXIuCisKIDIwMTItMDMtMTYgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgU3VwcG9ydCBmb3IgQmF0dGVyeSBTdGF0dXMgQVBJLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGRlOTM2YmYuLjdkNGQwNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMi0wMy0xNiAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIENvbnZl
cnQgaGFzU3BlbGxpbmdNYXJrZXIgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2UuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTMwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCBoYXNTcGVsbGlu
Z01hcmtlciB0ZXN0cyB0byB1c2UgSW50ZXJuYWxzIGluc3RlYWQgb2YgTGF5b3V0VGVzdENvbnRy
b2xsZXIKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9k
ZXNpZ24tbW9kZS1zcGVsbGNoZWNrLW9mZi5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxp
bmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanM6CisgICAgICAgICh2ZXJpZnlNYXJr
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0
dHJpYnV0ZS1hdC1jaGlsZC5qczoKKyAgICAgICAgKGNoaWxkSGFzU3BlbGxpbmdNYXJrZXIpOgor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0
ZS1jaGFuZ2UuanM6CisgICAgICAgICh0ZXN0U3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAg
ICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3
ZWVuLWxpbmVzLmpzOgorICAgICAgICAodGVzdFdpdGhEZWxldGUpOgorICAgICAgICAodGVzdFdp
dGhGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0
cy9zcGVsbGluZy1oYXNzcGVsbGluZ21hcmtlci5qczoKKyAgICAgICAgKGhhc01hcmtlZCk6Cisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJpYnV0ZS5odG1sOgorICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWNoYW5nZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0
d2Vlbi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1oYXNzcGVsbGluZ21hcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1saW5lYnJlYWsuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS1tYWMtc25vd2xlb3BhcmQvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2Ut
YmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0t
d2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1pbnRvLW1pc3NwZWxsZWQtd29y
ZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmct
bXVsdGlwbGUtd29yZHMtd2l0aC1tYXJrZXJzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTEuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJr
ZXItMi5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL21vdmUt
Y3Vyc29yLWFyb3VuZC1taXNzcGVsbGVkLXdvcmQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDMtMTYg
IFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbRm9ybXNd
IFRoZSAicHJvZ3Jlc3MiIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBhIGZvcm0tYXNzb2NpYXRlZCBl
bGVtZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9kZXNpZ24t
bW9kZS1zcGVsbGNoZWNrLW9mZi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9k
ZXNpZ24tbW9kZS1zcGVsbGNoZWNrLW9mZi5odG1sCmluZGV4IGU3MTI4ZTUuLjlkNGY4MGMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvZGVzaWduLW1vZGUtc3BlbGxj
aGVjay1vZmYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2Rlc2lnbi1t
b2RlLXNwZWxsY2hlY2stb2ZmLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAgZWxzZSBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIGRvY3Vt
ZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9IGRvY3VtZW50LmJvZHkpCiAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdG
QUlMOiBhY3RpdmUgZWxlbWVudCBhZnRlciBjbGljayBpcyBub3QgYm9keSBlbGVtZW50JykpOwot
ICAgICAgICBlbHNlIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigw
LCA0KSkKKyAgICAgICAgZWxzZSBpZiAoaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCAwLCA0KSkKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ0ZBSUw6IHNwZWxsIGNoZWNrIHdhcyBpbnZva2VkJykpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdQQVNTJykpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qcyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMKaW5kZXgg
NmFiMGFmZC4uZDExNjU3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzCkBAIC01NCw3ICs1
NCw3IEBAIGZ1bmN0aW9uIHZlcmlmeU1hcmtlcihub2RlLCBleHBlY3RlZE1hcmtlZCkKIAogICAg
IHZhciBvayA9IHRydWU7CiAgICAgZm9yICh2YXIgaSA9IDA7IG9rICYmIGkgPCBleHBlY3RlZE1h
cmtlZC5sZW5ndGg7ICsraSkKLSAgICAgICAgb2sgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNT
cGVsbGluZ01hcmtlcihleHBlY3RlZE1hcmtlZFtpXVswXSwgZXhwZWN0ZWRNYXJrZWRbaV1bMV0p
OworICAgICAgICBvayA9IGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgZXhw
ZWN0ZWRNYXJrZWRbaV1bMF0sIGV4cGVjdGVkTWFya2VkW2ldWzFdKTsKICAgICByZXR1cm4gb2s7
CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRl
c3RzL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5qcwppbmRl
eCAwMDI4NjcyLi4xODEwYzI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLmpzCkBAIC0xMSw3ICsxMSw3IEBAIGZ1bmN0aW9uIGNoaWxkSGFzU3BlbGxpbmdN
YXJrZXIobWFya3VwKQogICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFs
c2UsICd6Jyk7CiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwg
J3onKTsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAnICcp
OwotICAgIHZhciBtYXJrZWQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cigxLCAyKTsKKyAgICB2YXIgbWFya2VkID0gaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRv
Y3VtZW50LCAxLCAyKTsKICAgICByb290LmlubmVySFRNTCA9ICIiOwogICAgIHJldHVybiBtYXJr
ZWQ7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10
ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtY2hhbmdlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWNoYW5nZS5qcwppbmRleCA3
ZGJmODBhLi5mZjRlYWE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtY2hhbmdlLmpzCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0ZS1jaGFu
Z2UuanMKQEAgLTIyLDcgKzIyLDcgQEAgZnVuY3Rpb24gdGVzdFNwZWxsQ2hlY2tpbmdFbmFibGVk
KHRhcmdldCwgZW5hYmxlZCkKIAogICAgIHdpbmRvdy50YXJnZXQgPSB0YXJnZXQ7CiAgICAgc2hv
dWxkQmUoInRhcmdldC5zcGVsbGNoZWNrIiwgZW5hYmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwot
ICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAy
KSIsIGVuYWJsZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgiaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSIsIGVuYWJsZWQgPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKIH0KIAogZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBzcGVsbGNoZWNr
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMv
c3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy5q
cwppbmRleCBkMGYyNDE3Li42MTZmMDAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy5q
cworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGlu
Zy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy5qcwpAQCAtMjYsNyArMjYsNyBAQCBmdW5jdGlvbiB0
ZXN0V2l0aERlbGV0ZSgpCiAKICAgICBzaG91bGRCZSgiZmlyc3RMaW5lVGV4dCgpIiwgIidPSyci
KTsKICAgICBzaG91bGRCZSgic2VsLmFuY2hvck5vZGUuZGF0YSIsICInT0sgenogT0snIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigz
LCAyKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRv
Y3VtZW50LCAzLCAyKSIpOwogCiAgICAgc2VsLm1vZGlmeSgibW92ZSIsICJsZWZ0IiwgImxpbmVi
b3VuZGFyeSIpOwogICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGUiLCBmYWxzZSk7CkBA
IC0zNCw3ICszNCw3IEBAIGZ1bmN0aW9uIHRlc3RXaXRoRGVsZXRlKCkKIAogICAgIHNob3VsZEJl
KCJzZWwuYW5jaG9yTm9kZS5kYXRhIiwgIidPS09LIHp6IE9LJyIpOwogICAgIHNob3VsZEJlKCJm
aXJzdExpbmVUZXh0KCkiLCAiJ09LT0sgenogT0snIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJsYXlv
dXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig1LCAyKSIpOworICAgIHNob3VsZEJl
VHJ1ZSgiaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA1LCAyKSIpOwogfQog
CiBmdW5jdGlvbiB0ZXN0V2l0aEZvcndhcmREZWxldGUoKQpAQCAtNDcsNyArNDcsNyBAQCBmdW5j
dGlvbiB0ZXN0V2l0aEZvcndhcmREZWxldGUoKQogCiAgICAgc2hvdWxkQmUoImZpcnN0TGluZVRl
eHQoKSIsICInT0snIik7CiAgICAgc2hvdWxkQmUoInNlbC5hbmNob3JOb2RlLmRhdGEiLCAiJ09L
IHp6IE9LJyIpOwotICAgIHNob3VsZEJlVHJ1ZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIoMywgMikiKTsKKyAgICBzaG91bGRCZVRydWUoImludGVybmFscy5oYXNTcGVs
bGluZ01hcmtlcihkb2N1bWVudCwgMywgMikiKTsKIAogICAgIHNlbC5tb2RpZnkoIm1vdmUiLCAi
bGVmdCIsICJsaW5lIik7CiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkZvcndhcmREZWxldGUi
LCBmYWxzZSk7CkBAIC01NSw3ICs1NSw3IEBAIGZ1bmN0aW9uIHRlc3RXaXRoRm9yd2FyZERlbGV0
ZSgpCiAKICAgICBzaG91bGRCZSgiZmlyc3RMaW5lVGV4dCgpIiwgIidPS09LIHp6IE9LJyIpOwog
ICAgIHNob3VsZEJlKCJzZWwuYW5jaG9yTm9kZS5kYXRhIiwgIidPS09LIHp6IE9LJyIpOwotICAg
IHNob3VsZEJlVHJ1ZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNSwg
MikiKTsKKyAgICBzaG91bGRCZVRydWUoImludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1
bWVudCwgNSwgMikiKTsKIH0KIAogdGVzdFdpdGhEZWxldGUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWhhc3NwZWxsaW5n
bWFya2VyLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3Bl
bGxpbmctaGFzc3BlbGxpbmdtYXJrZXIuanMKaW5kZXggZDA4ZGRkMC4uYzEwN2ZmOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmct
aGFzc3BlbGxpbmdtYXJrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
Y3JpcHQtdGVzdHMvc3BlbGxpbmctaGFzc3BlbGxpbmdtYXJrZXIuanMKQEAgLTEsNCArMSw0IEBA
Ci1kZXNjcmlwdGlvbignVGhpcyB0ZXN0cyBMYXlvdXR0ZXN0Y29udHJvbGxlci5oYXNTcGVsbGlu
Z01hcmtlciB3b3JrcyBmb3IgZGlmZmVybnQgdHlwZSBvZiBlbGVtZW50cy4nKTsKK2Rlc2NyaXB0
aW9uKCdUaGlzIHRlc3RzIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlciB3b3JrcyBmb3IgZGlm
ZmVybnQgdHlwZSBvZiBlbGVtZW50cy4nKTsKIAogdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOwpAQCAt
MTEsNyArMTEsNyBAQCBmdW5jdGlvbiBoYXNNYXJrZWQobWFya3VwKQogICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CiAgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJyAnKTsKIAotICAgIHJldHVybiBsYXlvdXRUZXN0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigwLCAyKTsKKyAgICByZXR1cm4gaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKTsKIH0KIAogc2hvdWxkQmVUcnVlKCJo
YXNNYXJrZWQoXCI8dGV4dGFyZWEgaWQ9J3Rlc3QnIGNvbHM9JzgwJyByb3dzPScxMCc+PC90ZXh0
YXJlYT5cIik7Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stYXR0cmlidXRlLmh0bWwKaW5kZXggMDcxNTk5My4uNzlhYjQ3YSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJpYnV0ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hdHRyaWJ1dGUu
aHRtbApAQCAtNTMsNyArNTMsNyBAQCBmdW5jdGlvbiB0ZXN0VHlwaW5nSW52YWxpZFdvcmQoaWQs
IHNob3VsZEJlTWFya2VkKSB7CiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQi
LCBmYWxzZSwgJ3onKTsKICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZh
bHNlLCAneicpOwogICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2Us
ICcgJyk7Ci0gICAgaWYgKHNob3VsZEJlTWFya2VkID09IGxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDAsIDIpKQorICAgIGlmIChzaG91bGRCZU1hcmtlZCA9PSBpbnRlcm5h
bHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpKQogICAgICAgICBsb2coIlBBU1M6
IiArIGlkKTsKICAgICBlbHNlCiAgICAgICAgIGxvZygiRkFJTDoiICsgaWQpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtY2hhbmdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0
cmlidXRlLWNoYW5nZS1leHBlY3RlZC50eHQKaW5kZXggZjI2ZjRmMi4uZjhlZGEyYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtY2hh
bmdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC00LDQxICs0LDQxIEBAIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyB0cnVlCi1Q
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIHRydWUK
K1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyB0cnVl
CiBQQVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIGZhbHNlCi1QQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNT
cGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgZmFsc2UKIFBBU1MgdGFyZ2V0LnNwZWxs
Y2hlY2sgaXMgdHJ1ZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cig2LCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVu
dCwgNiwgMikgaXMgdHJ1ZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyBmYWxzZQotUEFTUyBs
YXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyBmYWxzZQorUEFT
UyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIGZhbHNlCiBQ
QVNTIHRhcmdldC5zcGVsbGNoZWNrIGlzIHRydWUKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIHRydWUKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sg
aXMgZmFsc2UKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwg
MikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2
LCAyKSBpcyBmYWxzZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyB0cnVlCi1QQVNTIGxheW91
dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIHRydWUKK1BBU1MgaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyB0cnVlCiBQQVNTIHRh
cmdldC5zcGVsbGNoZWNrIGlzIGZhbHNlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1Nw
ZWxsaW5nTWFya2VyKDYsIDIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01h
cmtlcihkb2N1bWVudCwgNiwgMikgaXMgZmFsc2UKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMg
dHJ1ZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBp
cyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikg
aXMgdHJ1ZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyBmYWxzZQotUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5h
bHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIGZhbHNlCiBQQVNTIHRhcmdl
dC5zcGVsbGNoZWNrIGlzIHRydWUKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIoNiwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDYsIDIpIGlzIHRydWUKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgZmFsc2UK
LVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgZmFs
c2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyBm
YWxzZQogUEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyB0cnVlCi1QQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyB0cnVlCiBQQVNTIHRhcmdldC5zcGVs
bGNoZWNrIGlzIGZhbHNlCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFy
a2VyKDYsIDIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1
bWVudCwgNiwgMikgaXMgZmFsc2UKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgdHJ1ZQotUEFT
UyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyB0cnVlCitQ
QVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNiwgMikgaXMgdHJ1ZQog
UEFTUyB0YXJnZXQuc3BlbGxjaGVjayBpcyBmYWxzZQotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcig2LCAyKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDYsIDIpIGlzIGZhbHNlCiBQQVNTIHRhcmdldC5zcGVsbGNo
ZWNrIGlzIHRydWUKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIo
NiwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQs
IDYsIDIpIGlzIHRydWUKIFBBU1MgdGFyZ2V0LnNwZWxsY2hlY2sgaXMgZmFsc2UKLVBBU1MgbGF5
b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNiwgMikgaXMgZmFsc2UKK1BBU1Mg
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSBpcyBmYWxzZQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVu
LWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CmluZGV4IDQxNmNmMDIuLjIy
MmY1NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
YmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMtZXhwZWN0ZWQu
dHh0CkBAIC01LDE2ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgZmly
c3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0sgenog
T0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlz
IHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAzLCAyKSBp
cyB0cnVlCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LT0sgenogT0snCiBQQVNTIGZp
cnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIGlzIHRydWUKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlz
ICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0sgenogT0snCi1QQVNTIGxheW91
dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMsIDIpIGlzIHRydWUKK1BBU1MgaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNTIGZp
cnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBp
cyAnT0tPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoNSwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1l
bnQsIDUsIDIpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1oYXNzcGVsbGluZ21hcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWhhc3NwZWxsaW5nbWFya2VyLWV4cGVjdGVkLnR4dAppbmRleCAy
Yjg1ODJhLi43YWE1N2I1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWhhc3NwZWxsaW5nbWFya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWhhc3NwZWxsaW5nbWFya2VyLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKLVRoaXMgdGVzdHMgTGF5b3V0dGVzdGNvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIgd29ya3MgZm9yIGRpZmZlcm50IHR5cGUgb2YgZWxlbWVudHMuCitUaGlzIHRl
c3RzIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlciB3b3JrcyBmb3IgZGlmZmVybnQgdHlwZSBv
ZiBlbGVtZW50cy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWxpbmVicmVhay5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1saW5lYnJlYWsuaHRtbAppbmRleCBm
NTgxOGU2Li5lODg3YmZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWxpbmVicmVhay5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctbGluZWJyZWFrLmh0bWwKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gZWRp
dGluZ1Rlc3QoKSB7CiAKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAg
ICAgICAgIHNlbGVjdGlvbi5zZXRQb3NpdGlvbihlbGVtLCAwKTsKLSAgICAgICAgaWYgKGxheW91
dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDYsIDIpKQorICAgICAgICBpZiAoaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA2LCAyKSkKICAgICAgICAgICAgbG9n
KCJQQVNTIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgbG9nKCJGQUlMIik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKaW5k
ZXggNDE2Y2YwMi4uMjIyZjU2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbWFjLXNub3dsZW9wYXJkL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNl
LWJldHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLW1hYy1zbm93bGVvcGFyZC9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFj
ZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dApAQCAtNSwxNiArNSwxNiBAQCBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURQogCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0snCiBQQVNTIHNlbC5h
bmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5o
YXNTcGVsbGluZ01hcmtlcigzLCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGlu
Z01hcmtlcihkb2N1bWVudCwgMywgMikgaXMgdHJ1ZQogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRh
IGlzICdPS09LIHp6IE9LJwogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LT0sgenogT0snCi1Q
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDUsIDIpIGlzIHRydWUK
K1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA1LCAyKSBpcyB0cnVl
CiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0snCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEg
aXMgJ09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cigzLCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVu
dCwgMywgMikgaXMgdHJ1ZQogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMgJ09LT0sgenogT0snCiBQ
QVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDUsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA1LCAyKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tz
cGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxp
bmVzLWV4cGVjdGVkLnR4dAppbmRleCA0MTZjZjAyLi4yMjJmNTY5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1i
YWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJl
dHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CkBAIC01LDE2ICs1LDE2IEBAIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFCiAKIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hv
ck5vZGUuZGF0YSBpcyAnT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1Nw
ZWxsaW5nTWFya2VyKDMsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKGRvY3VtZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMg
J09LT0sgenogT0snCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKLVBBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgaXMgdHJ1ZQorUEFT
UyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIGlzIHRydWUKIFBB
U1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAn
T0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDMs
IDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAz
LCAyKSBpcyB0cnVlCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAnT0tPSyB6eiBPSycKIFBBU1Mg
c2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0tPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDUsIDIpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0
d2Vlbi1saW5lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVk
LnR4dAppbmRleCA5NDA0YWQ0Li5jMzIwYTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVu
LWxpbmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVk
LnR4dApAQCAtNSwxNiArNSwxNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIGZp
cnN0TGluZVRleHQoKSBpcyAnT0snCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6
IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigzLCAyKSBp
cyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMywgMikg
aXMgdHJ1ZQogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPSyB6eiBPSycKIFBBU1MgZmly
c3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5o
YXNTcGVsbGluZ01hcmtlcigzLCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGlu
Z01hcmtlcihkb2N1bWVudCwgMywgMikgaXMgdHJ1ZQogUEFTUyBmaXJzdExpbmVUZXh0KCkgaXMg
J09LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0
VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMywgMikgaXMgdHJ1ZQorUEFTUyBpbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDMsIDIpIGlzIHRydWUKIFBBU1MgZmly
c3RMaW5lVGV4dCgpIGlzICdPS09LIHp6IE9LJwogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlz
ICdPSyB6eiBPSycKLVBBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIo
MywgMikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQs
IDMsIDIpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3Bl
bGxpbmcvZGVsZXRlLWludG8tbWlzc3BlbGxlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRt
bAppbmRleCA1NTU5MmE4Li4wOTA5YjdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdvcmQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50
by1taXNzcGVsbGVkLXdvcmQuaHRtbApAQCAtMzIsOCArMzIsOCBAQCB0eXBlQ2hhcmFjdGVyQ29t
bWFuZCgnZycpOwogdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2EnKTsKIHR5cGVDaGFyYWN0ZXJDb21t
YW5kKCcgJyk7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIp
IHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KDcsOCkgPT0gMSkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5o
YXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5n
TWFya2VyKGRvY3VtZW50LCA3LDgpID09IDEpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0g
IkZBSUxVUkUuIFRoZSB3b3JkICdtZWFnZXNnYScgZG9lcyBub3QgaGF2ZSB1bmRlcmxpbmUuPGJy
PiI7CkBAIC00NSw4ICs0NSw4IEBAIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKDYsIDYpOwog
dGV4dGFyZWEuZm9jdXMoKTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7CiBleGVjRm9yd2Fy
ZERlbGV0ZUNvbW1hbmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDgpID09IDEpIHsK
K2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVu
dCwgNyw4KSA9PSAxKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhU
TUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdlc2dhJyBkb2Vz
IG5vdCBoYXZlIHVuZGVybGluZS48YnI+IjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctbXVsdGlwbGUtd29yZHMtd2l0aC1tYXJr
ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0
aW5nLW11bHRpcGxlLXdvcmRzLXdpdGgtbWFya2Vycy5odG1sCmluZGV4IGIxMmE5NjYuLjQ0Zjlh
NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5n
L2VkaXRpbmctbXVsdGlwbGUtd29yZHMtd2l0aC1tYXJrZXJzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13b3Jkcy13
aXRoLW1hcmtlcnMuaHRtbApAQCAtNTAsOCArNTAsOCBAQCB0ZXh0YXJlYSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CiByZXNldFRleHQoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlv
blJhbmdlKDExLCAyMCk7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5n
TWFya2VyKDcsNCkgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIoMTEsNCkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93Lmlu
dGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDQpID09IDAgJiYgd2luZG93LmludGVybmFscy5o
YXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTEsNCkgPT0gMCkgewogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICdTVUNDRVNTPGJyPic7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lckhUTUwgPSAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdlc2dhJyBoYXMgdW5kZXJsaW5lLjxi
cj4iOwpAQCAtNjEsOCArNjEsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYm
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogcmVzZXRUZXh0
KCk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTYpOwogZXhlY0RlbGV0ZUNvbW1h
bmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDQpID09IDAgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDExLDgpID09IDApIHsKK2lmICh3aW5k
b3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIpIHsKKyAg
ICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNyw0KSA9
PSAwICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDExLDgp
ID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdT
VUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhZ21lYWdlc2dhJyBoYXMgdW5k
ZXJsaW5lLjxicj4iOwpAQCAtNzIsOCArNzIsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgog
cmVzZXRUZXh0KCk7CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgxNSwgMjApOwogZXhlY0Rl
bGV0ZUNvbW1hbmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDgpID09IDAgJiYgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDE1LDQpID09IDApIHsK
K2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVu
dCwgNyw4KSA9PSAwICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1l
bnQsIDE1LDQpID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVy
SFRNTCArICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2Flc2dh
JyBoYXMgdW5kZXJsaW5lLjxicj4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFya2VyLTEuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRo
LW1hcmtlci0xLmh0bWwKaW5kZXggNmU3ZGMwOC4uYjQ3ZDk3MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy13b3JkLXdpdGgtbWFy
a2VyLTEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJrZXItMS5odG1sCkBAIC00MSw4ICs0MSw4IEBAIHRleHRh
cmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIHRleHRhcmVhLmZvY3VzKCk7
CiB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTUpOwogZXhlY0RlbGV0ZUNvbW1hbmQo
KTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDcpID09IDApIHsKK2lmICh3aW5kb3cuaW50
ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIpIHsKKyAgICBpZiAo
d2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNyw3KSA9PSAwKSB7
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0g
J1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZycg
aGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTUzLDggKzUzLDggQEAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgNik7CiBl
eGVjRm9yd2FyZERlbGV0ZUNvbW1hbmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig2LDgp
ID09IDApIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtl
cihkb2N1bWVudCwgNiw4KSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KS5pbm5lckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQgJ2FtZWFn
ZXNnYScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTY0LDggKzY0LDggQEAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIKIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoNywg
Nyk7CiBleGVjRm9yd2FyZERlbGV0ZUNvbW1hbmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cig3LDcpID09IDApIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMu
aGFzU3BlbGxpbmdNYXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGlu
Z01hcmtlcihkb2N1bWVudCwgNyw3KSA9PSAwKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5pbm5lckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQg
J2VhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC03NSw4ICs3NSw4IEBAIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyCiByZXNldFRleHQoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdl
KDEwLCAxMCk7CiB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOwotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5n
TWFya2VyKDcsMykgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXIoMTEsNSkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93Lmlu
dGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhh
c1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDMpID09IDAgJiYgd2luZG93LmludGVybmFscy5o
YXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTEsNSkgPT0gMCkgewogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2Ug
ewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUu
IFRoZSBzZWdtZW50ICdtZWEgZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC04Niw4ICs4
Niw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiByZXNldFRleHQoKTsKIHRleHRhcmVhLnNl
dFNlbGVjdGlvblJhbmdlKDEwLCAxMyk7CiBleGVjRGVsZXRlQ29tbWFuZCgpOwotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDcsNSkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2lu
ZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDUpID09IDApIHsKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNTPGJyPic7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhU
TUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICJGQUlM
VVJFLiBUaGUgd29yZCAnbWVhZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC05Nyw4ICs5Nyw4
IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiByZXNldFRleHQoKTsKIHRleHRhcmVhLnNldFNl
bGVjdGlvblJhbmdlKDEwLCAxMyk7CiB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDcsMykgPT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoMTEsMikgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMg
JiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDMpID09IDAgJiYgd2luZG93
LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMTEsMikgPT0gMCkgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsK
ICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
LmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1M
ICsgIkZBSUxVUkUuIFRoZSBzZWdtZW50ICdtZWEgZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBA
IC0xMDksOCArMTA5LDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIKIHJlc2V0VGV4dCgpOwog
dGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoNywgNyk7CiB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgn
YScpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDgsOCkgPT0gMCkgeworaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA4LDgpID09IDAp
IHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNT
PGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlu
bmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnYW1lYWdlc2dhJyBoYXMgdW5kZXJsaW5lLjxi
cj4iOwpAQCAtMTIwLDggKzEyMCw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIg
JiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyCiByZXNldFRl
eHQoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKDE1LCAxNSk7CiB0eXBlQ2hhcmFjdGVy
Q29tbWFuZCgnYScpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDcsOCkgPT0gMCkgeworaWYg
KHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3
LDgpID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCAr
ICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2FhJyBoYXMgdW5k
ZXJsaW5lLjxicj4iOwpAQCAtMTM1LDggKzEzNSw4IEBAIHRleHRhcmVhLnNldFNlbGVjdGlvblJh
bmdlKDAsNCk7CiBleGVjQ29weUNvbW1hbmQoKTsKIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdl
KDcsIDcpOwogZXhlY1Bhc3RlQ29tbWFuZCgpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDEx
LDgpID09IDApIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01h
cmtlcihkb2N1bWVudCwgMTEsOCkgPT0gMCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3JkICdt
ZWFnZXNnYScgaGFzIHVuZGVybGluZS48YnI+IjsKQEAgLTE0OSw4ICsxNDksOCBAQCB0ZXh0YXJl
YS5zZXRTZWxlY3Rpb25SYW5nZSgwLDQpOwogZXhlY0NvcHlDb21tYW5kKCk7CiB0ZXh0YXJlYS5z
ZXRTZWxlY3Rpb25SYW5nZSgxNSwgMTUpOwogZXhlY1Bhc3RlQ29tbWFuZCgpOwotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDcsOCkgPT0gMCkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2lu
ZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDgpID09IDApIHsKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNTPGJyPic7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhU
TUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICJGQUlM
VVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGhhcyB1bmRlcmxpbmUuPGJyPiI7CkBAIC0xNjMsOCAr
MTYzLDggQEAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMCw0KTsKIGV4ZWNDb3B5Q29tbWFu
ZCgpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTAsIDEwKTsKIGV4ZWNQYXN0ZUNvbW1h
bmQoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDMpID09IDAgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDE1LDUpID09IDApIHsKK2lmICh3aW5k
b3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIpIHsKKyAg
ICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNywzKSA9
PSAwICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDE1LDUp
ID09IDApIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdT
VUNDRVNTPGJyPic7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmlubmVySFRNTCArICJGQUlMVVJFLiBUaGUgd29yZCAnbWVhaXRcJ3NnZXNnYScgaGFzIHVu
ZGVybGluZS48YnI+IjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRoLW1hcmtlci0yLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9lZGl0aW5nLXdvcmQtd2l0aC1tYXJrZXIt
Mi5odG1sCmluZGV4IGUwZTBlYzguLjRmY2IwNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL2VkaXRpbmctd29yZC13aXRoLW1hcmtlci0yLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGlu
Zy13b3JkLXdpdGgtbWFya2VyLTIuaHRtbApAQCAtNDEsOCArNDEsOCBAQCByZXNldFRleHQoKTsK
IHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIHRleHRhcmVhLnNl
dFNlbGVjdGlvblJhbmdlKDcsNyk7CiB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDgsOCkgPT0gMSkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYg
d2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA4LDgpID09IDEpIHsKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNTPGJyPic7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICJG
QUlMVVJFLiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGRvZXNuJ3QgaGF2ZSB1bmRlcmxpbmUuPGJyPiI7
CkBAIC01Myw4ICs1Myw4IEBAIHJlc2V0VGV4dCgpOwogdGV4dGFyZWEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdCcpOwogdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMTUsMTUpOwog
dHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKSB7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcig3LDgp
ID09IDEpIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtl
cihkb2N1bWVudCwgNyw4KSA9PSAxKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KS5pbm5lckhUTUwgKyAnU1VDQ0VTUzxicj4nOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKyAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdl
c2dhJyBkb2Vzbid0IGhhdmUgdW5kZXJsaW5lLjxicj4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3Nw
ZWxsZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxp
bmcvbW92ZS1jdXJzb3ItYXJvdW5kLW1pc3NwZWxsZWQtd29yZC5odG1sCmluZGV4IDAxYjY4YzQu
LmE3MTc0ODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL21vdmUtY3Vyc29yLWFyb3VuZC1taXNzcGVsbGVkLXdvcmQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9tb3ZlLWN1cnNvci1hcm91bmQt
bWlzc3BlbGxlZC13b3JkLmh0bWwKQEAgLTMzLDggKzMzLDggQEAgdHlwZUNoYXJhY3RlckNvbW1h
bmQoJ2EnKTsKIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7CiBleGVjTW92ZVNlbGVjdGlvbkJh
Y2t3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7CiAgICAgCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoNyw4KSA9PSAxKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMSkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwg
PSAiRkFJTFVSRS4gVGhlIHdvcmQgJ21lYWdlc2dhJyBkb2VzIG5vdCBoYXZlIG1pc3NwZWxsIHVu
ZGVybGluZS48YnI+IjsKQEAgLTQ0LDggKzQ0LDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIK
IHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIHRleHRhcmVhLnNl
dFNlbGVjdGlvblJhbmdlKDEwLCAxMCk7CiB0ZXh0YXJlYS5mb2N1cygpOwotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmhhc1Nw
ZWxsaW5nTWFya2VyKDcsOCkgPT0gMSkgeworaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LmludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCA3LDgpID09IDEpIHsKICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICdTVUNDRVNTPGJyPic7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArICJGQUlMVVJF
LiBUaGUgd29yZCAnbWVhZ2VzZ2EnIGRvZXMgbm90IGhhdmUgbWlzc3BlbGwgdW5kZXJsaW5lLjxi
cj4iOwpAQCAtNTUsOCArNTUsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYm
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcgogdGV4dGFyZWEu
c2V0U2VsZWN0aW9uUmFuZ2UoNiwgNik7CiB0ZXh0YXJlYS5mb2N1cygpOwogZXhlY01vdmVTZWxl
Y3Rpb25Gb3J3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cikgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoNyw4KSA9PSAxKSB7CitpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxz
Lmhhc1NwZWxsaW5nTWFya2VyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDcsOCkgPT0gMSkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJykuaW5uZXJIVE1MICsgJ1NVQ0NFU1M8YnI+JzsKICAgICB9IGVsc2UgewogICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICsgIkZBSUxVUkUuIFRoZSB3b3Jk
ICdtZWFnZXNnYScgZG9lcyBub3QgaGF2ZSBtaXNzcGVsbCB1bmRlcmxpbmUuPGJyPiI7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5l
cy1leHBlY3RlZC50eHQKaW5kZXggMDFjZGM1Mi4uYWVmMjhiOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJl
dHdlZW4tbGluZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLWV4cGVjdGVk
LnR4dApAQCAtNSwxNiArNSwxNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIGZp
cnN0TGluZVRleHQoKSBpcyAnT0snCiBQQVNTIHNlbC5hbmNob3JOb2RlLmRhdGEgaXMgJ09LIHp6
IE9LJwotUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigzLCAyKSBp
cyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMywgMikg
aXMgdHJ1ZQogUEFTUyBzZWwuYW5jaG9yTm9kZS5kYXRhIGlzICdPS09LIHp6IE9LJwogUEFTUyBm
aXJzdExpbmVUZXh0KCkgaXMgJ09LT0sgenogT0snCi1GQUlMIGxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDUsIDIpIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlM
IGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgNSwgMikgc2hvdWxkIGJlIHRy
dWUuIFdhcyBmYWxzZS4KIFBBU1MgZmlyc3RMaW5lVGV4dCgpIGlzICdPSycKIFBBU1Mgc2VsLmFu
Y2hvck5vZGUuZGF0YSBpcyAnT0sgenogT0snCi1QQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VyKDMsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5n
TWFya2VyKGRvY3VtZW50LCAzLCAyKSBpcyB0cnVlCiBQQVNTIGZpcnN0TGluZVRleHQoKSBpcyAn
T0tPSyB6eiBPSycKIFBBU1Mgc2VsLmFuY2hvck5vZGUuZGF0YSBpcyAnT0tPSyB6eiBPSycKLUZB
SUwgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoNSwgMikgc2hvdWxkIGJl
IHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3Vt
ZW50LCA1LCAyKSBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmlu
ZGV4IGU5OTI5MjAuLmZkNmQzNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC05MTYs
NyArOTE2LDcgQEAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2staW5saW5lLWZpcnN0LWxh
c3QtY29udGVudGVkaXRhYmxlLmh0bWwKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlUHJvcGVydHkKIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24u
aHRtbAogCi0jIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIKKyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIKIGVkaXRpbmcvc3BlbGxpbmcvZGVzaWduLW1vZGUtc3BlbGxjaGVjay1vZmYu
aHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJpYnV0ZS5odG1sCiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWY1NmFiYy4uM2FkYTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTE2
ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ29u
dmVydCBoYXNTcGVsbGluZ01hcmtlciB0byB1c2UgSW50ZXJuYWxzIGludGVyZmFjZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzAwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGhhc1NwZWxs
aW5nTWFya2VyIGZ1bmN0aW9ucywgYmVjYXVzZSBpdCBpcyBhYmxlIHRvIHdvcmsgaW4gdGhlCisg
ICAgICAgIGNyb3NzLXBvcnQgd2F5IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRlcmZhY2UuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB3ZSBhcmUgaW1wcm92aW5nIGhlcmUgdGhlIGlu
ZnJhLXN0cnVjdHVyZQorICAgICAgICBmb3IgdGVzdGluZyBhIHNwZWNpZmljIG1ldGhvZC4KKwor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6aGFzU3BlbGxpbmdNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTE2ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3Np
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Zvcm1zXSBUaGUgInByb2dyZXNzIiBlbGVtZW50
IHNob3VsZCBub3QgYmUgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCA2MjJiNjRlLi41MTA3ZDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC03MzYsNCArNzM2LDEyIEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRCYXR0ZXJ5U3RhdHVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBldmVudFR5
cGUsIGJvCiAjZW5kaWYKIH0KIAorYm9vbCBJbnRlcm5hbHM6Omhhc1NwZWxsaW5nTWFya2VyKERv
Y3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKQor
eworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGlv
blN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3Ro
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggOTcxNmEzYy4uM2Uy
OWE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMzIsNiArMTMyLDggQEAg
cHVibGljOgogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICB2b2lk
IGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwogCisgICAgYm9vbCBoYXNTcGVsbGluZ01h
cmtlcihEb2N1bWVudCosIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJik7CisK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7CiAKICAgICBJbnRlcm5hbFNldHRp
bmdzKiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA3MmJmOTA3Li4yNTEwZDgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMDksNiArMTA5LDggQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICAg
ICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKIAorICAgICAgICBib29sZWFu
IGhhc1NwZWxsaW5nTWFya2VyKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBsb25nIGZyb20sIGlu
IGxvbmcgbGVuZ3RoKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEludGVybmFsU2V0dGluZ3Mgc2V0dGluZ3M7CiAKICNpZiBkZWZpbmVkKEVOQUJM
RV9CQVRURVJZX1NUQVRVUykgJiYgRU5BQkxFX0JBVFRFUllfU1RBVFVTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggODIzNzJmOS4uOGRlZGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTAzLTE2ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgQ29udmVydCBoYXNTcGVsbGluZ01hcmtlciB0byB1c2UgSW50ZXJuYWxzIGludGVy
ZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
MzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d2Via2l0V2ViRnJhbWVTZWxlY3Rpb25IYXNT
cGVsbGluZ01hcmtlciBzdXBwb3J0LAorICAgICAgICBzaW5jZSBpdCBjYW4gc3VwcG9ydCBpbiB0
aGUgY3Jvc3MtcG9ydCB3YXkgdGhyb3VnaCB0aGUgSW50ZXJuYWxzIGludGVyZmFjZS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGspOgorCiAyMDEyLTAzLTE2ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxz
dmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gV2ViS2l0SWNvbkRhdGFiYXNlIGRv
ZXNuJ3Qga2VlcCBpY29ucyBjYWNoZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDNm
NzM2M2QuLjMwMGYxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtNjg0LDEzICs2
ODQsNiBAQCB1bnNpZ25lZCBpbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3b3JrZXJUaHJl
YWRDb3VudCgpCiAjZW5kaWYKIH0KIAotYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Ondl
YmtpdFdlYkZyYW1lU2VsZWN0aW9uSGFzU3BlbGxpbmdNYXJrZXIoV2ViS2l0V2ViRnJhbWUgKmZy
YW1lLCBnaW50IGZyb20sIGdpbnQgbGVuZ3RoKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBGQUxTRSk7Ci0KLSAgICByZXR1cm4gY29yZShm
cmFtZSktPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtl
cjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0aCk7Ci19Ci0KIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpmaW5kU3RyaW5nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB0
YXJnZXRTdHJpbmcsIFdlYktpdEZpbmRPcHRpb25zIGZpbmRPcHRpb25zKQogewogICAgIHJldHVy
biBjb3JlKHdlYlZpZXcpLT5maW5kU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgodGFyZ2V0U3RyaW5n
KSwgZmluZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCA1MDJlYzRkLi42OTg4
NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtMTE2LDcgKzExNiw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCB3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IGdjaGFyKiBz
b3VyY2VPcmlnaW4sIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBnY2hh
ciogZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAg
ICBzdGF0aWMgdm9pZCByZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKICAgICBzdGF0aWMg
dW5zaWduZWQgaW50IHdvcmtlclRocmVhZENvdW50KCk7Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0
V2ViRnJhbWVTZWxlY3Rpb25IYXNTcGVsbGluZ01hcmtlcihXZWJLaXRXZWJGcmFtZSosIGdpbnQg
ZnJvbSwgZ2ludCBsZW5ndGgpOwogCiAgICAgc3RhdGljIHZvaWQgcmVzZXRHZW9sb2NhdGlvbkNs
aWVudE1vY2soV2ViS2l0V2ViVmlldyopOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBlcm1pc3Npb24oV2ViS2l0V2ViVmlldyosIGJvb2wgYWxsb3dlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNmFlNjYyZS4uMGFkZTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTAzLTE2ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+
CisKKyAgICAgICAgQ29udmVydCBoYXNTcGVsbGluZ01hcmtlciB0byB1c2UgSW50ZXJuYWxzIGlu
dGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxMzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGhhc1NwZWxsaW5nTWFya2VyIHN1cHBvcnQsIHNpbmNlIGl0IGNhbiBzdXBwb3J0IGlu
IHRoZSBjcm9zcy1wb3J0IHdheQorICAgICAgICB0aHJvdWdoIHRoZSBJbnRlcm5hbHMgaW50ZXJm
YWNlLgorCisgICAgICAgICogV2ViS2l0Lm9yZGVyOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWUubW06CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaDoKKwogMjAxMi0wMy0w
NyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBOb3RpZmljYXRp
b25Db250ZW50cyBpbnRvIE5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViS2l0Lm9yZGVyIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCmluZGV4IDA0
MGFlOTAuLjViNTg0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKQEAgLTE2OTEsNyArMTY5MSw2
IEBAIF9fWlRobjhfTjE1V2ViRWRpdG9yQ2xpZW50MTdnZXRHdWVzc2VzRm9yV29yZEVSS04zV1RG
NlN0cmluZ0VTM19STlMwXzZWZWN0b3JJUzFfCiBfX1pOMTVXZWJFZGl0b3JDbGllbnQxN2dldEd1
ZXNzZXNGb3JXb3JkRVJLTjNXVEY2U3RyaW5nRVMzX1JOUzBfNlZlY3RvcklTMV9MbTBFRUUKIF9f
Wk4zV1RGNlZlY3RvcklOU182U3RyaW5nRUxtMEVFMTRzaHJpbmtDYXBhY2l0eUVtCiBfX1pOMTVX
ZWJFZGl0b3JDbGllbnQzNHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmRFUktOM1dU
RjZTdHJpbmdFCi0tW1dlYkZyYW1lKFdlYlByaXZhdGUpIGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0
aDpdCiAtW1dlYkZyYW1lKFdlYlByaXZhdGUpIGhhc0dyYW1tYXJNYXJrZXI6bGVuZ3RoOl0KIF9f
WlRobjhfTjE1V2ViRWRpdG9yQ2xpZW50MjNyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZ0VQTjdXZWJD
b3JlMTJTcGVsbENoZWNrZXJFaWpSS04zV1RGNlN0cmluZ0UKIF9fWk4xNVdlYkVkaXRvckNsaWVu
dDIzcmVxdWVzdENoZWNraW5nT2ZTdHJpbmdFUE43V2ViQ29yZTEyU3BlbGxDaGVja2VyRWlqUktO
M1dURjZTdHJpbmdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBlMDg1
YmMxLi4xYmRjMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEy
MjMsMTQgKzEyMjMsNiBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICByZXR1cm4gY29yZUZyYW1lLT5sYXllclRyZWVB
c1RleHQoKTsKIH0KIAotLSAoQk9PTCloYXNTcGVsbGluZ01hcmtlcjooaW50KWZyb20gbGVuZ3Ro
OihpbnQpbGVuZ3RoCi17Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoc2VsZik7Ci0gICAg
aWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBOTzsKLSAgICByZXR1cm4gY29yZUZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNw
ZWxsaW5nLCBmcm9tLCBsZW5ndGgpOwotfQotCiAtIChCT09MKWhhc0dyYW1tYXJNYXJrZXI6KGlu
dClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKaW5k
ZXggODk5Y2VlZC4uMTM4YTBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lUHJpdmF0ZS5oCkBAIC0xMzYsOSArMTM2LDYgQEAgdHlwZWRlZiBlbnVtIHsKIAogLSAoTlNT
dHJpbmcqKV9sYXllclRyZWVBc1RleHQ7CiAKLS8vIFJldHVybnMgd2hldGhlciB0aGVyZSBpcyBh
IHNwZWxsaW5nIG1hcmtlciBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIHRoZSBmb2N1c2VkIG5v
ZGUuCi0tIChCT09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQpbG9jYXRpb24gbGVuZ3RoOihpbnQp
bGVuZ3RoOwotCiAtIChCT09MKWhhc0dyYW1tYXJNYXJrZXI6KGludClmcm9tIGxlbmd0aDooaW50
KWxlbmd0aDsKIAogLy8gVGhlIHRvcCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDdjOWRiNTMuLjcxZGRjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0wMy0xNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIENvbnZlcnQgaGFzU3BlbGxpbmdNYXJrZXIgdG8gdXNlIEludGVybmFs
cyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MTMwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBoYXNTcGVsbGluZ01hcmtlciBpbnRlcmZhY2Ugc3VwcG9ydCwgc2luY2UgaXQg
Y2FuIHN1cHBvcnQgaW4gdGhlIGNyb3NzLXBvcnQKKyAgICAgICAgd2F5IHRocm91Z2ggdGhlIElu
dGVybmFscyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZh
dGUuaWRsOgorCiAyMDEyLTAzLTEzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTZXBhcmF0ZSBOT1RJRklDQVRJT05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlk
bCBiL1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKaW5k
ZXggOTBiYTRiZC4uY2I3YTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCkBAIC0xMTUsOCArMTE1LDYgQEAgaW50ZXJmYWNlIElX
ZWJGcmFtZVByaXZhdGUgOiBJVW5rbm93bgogCiAgICAgSFJFU1VMVCBsb2FkUGxhaW5UZXh0U3Ry
aW5nKFtpbl0gQlNUUiBzdHJpbmcsIFtpbl0gQlNUUiB1cmwpOwogCi0gICAgSFJFU1VMVCBoYXNT
cGVsbGluZ01hcmtlcihbaW5dIFVJTlQgZnJvbSwgW2luXSBVSU5UIGxlbmd0aCwgW291dCwgcmV0
dmFsXSBCT09MKiByZXN1bHQpOwotICAgIAogICAgIEhSRVNVTFQgY2xlYXJPcGVuZXIoKTsKIAog
ICAgIEhSRVNVTFQgc2V0VGV4dERpcmVjdGlvbihbaW5dIEJTVFIgZGlyZWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBkZTNlNGM5Li5jNDA3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTItMDMtMTYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBDb252ZXJ0IGhhc1NwZWxsaW5nTWFya2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzMDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi9X
ZWJLaXQyLmRlZjogRXhwb3J0IGEgc3ltYm9sIGZvciBoYXNTcGVsbGluZ01hcmtlci4KKwogMjAx
Mi0wMy0xNiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgTWVyZ2Ugc2V0VmlzaWJsZUNvbnRlbnRzRm9yU2NhbGluZyB3aXRoIHNldFZp
c2libGVDb250ZW50c1JlY3RGb3JQYW5uaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZmJi
MmJiYy4uMWZmMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjIzLDMgKzIyMyw0IEBA
IEVYUE9SVFMKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3
QDJAWFoKICAgICAgICAgP3dpbGxEZXRhY2hQYWdlQEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlckBX
ZWJDb3JlQEBVQUVYWFoKICAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBA
UUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTkBaCisg
ICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05X
NE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpp
bmRleCAwMjk0ZGFkLi42NTJmMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTEyMiw2
ICsxMjIsNyBAQCBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczMyc2V0TXVsdGlw
bGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWRFYjsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFOwogX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rl
c0Zyb21SZWN0RWlpampqamI7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5T
XzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlzdEU7CitfWk5LN1dlYkNvcmU2RWRpdG9y
MjZzZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckVOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJU
eXBlRWlpOwogbG9jYWw6CiBfWio7CiBjdGkqOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEzNzM1MWUuLmE4Y2UwYzAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAx
Mi0wMy0xNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIENvbnZlcnQgaGFzU3BlbGxpbmdNYXJrZXIgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2Uu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTMwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBo
YXNTcGVsbGluZ01hcmtlciBmdW5jdGlvbnMsIGJlY2F1c2UgaXQgaXMgYWJsZSB0byB3b3JrIGlu
IHRoZQorICAgICAgICBjcm9zcy1wb3J0IHdheSB0aHJvdWdoIHRoZSBJbnRlcm5hbHMgaW50ZXJm
YWNlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0
Q29udHJvbGxlckVmbC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHA6CisKIDIwMTItMDMtMTYgIFJvYmVydCBLcm9lZ2VyICA8cmpr
cm9lZ2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRFJUOiBBZGQgc3VwcG9y
dCBmb3Igc2VuZGluZyBnZXN0dXJlIHNjcm9sbHMgd2l0aG91dCBhIGJlZ2luCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOTZhZWVkZC4uNjY4
M2NlOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cApAQCAtMjAzNCwxOSArMjAzNCw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFib3J0TW9kYWxDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sCiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJl
ZiBoYXNTcGVsbGluZ01hcmtlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
LXsKLSAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBpbnQgZnJvbSA9IEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbMF0sIDApOwotICAgIGludCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCAwKTsKLSAgICBMYXlvdXRUZXN0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBib29sIG9rID0gY29udHJvbGxlci0+aGFzU3Bl
bGxpbmdNYXJrZXIoZnJvbSwgbGVuZ3RoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xl
YW4oY29udGV4dCwgb2spOwotfQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBoYXNHcmFtbWFyTWFya2Vy
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVu
dENvdW50ICE9IDIpCkBAIC0yMzcxLDcgKzIzNTgsNiBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAib3JpZ2luc1dp
dGhBcHBsaWNhdGlvbkNhY2hlIiwgb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiZ29CYWNrIiwgZ29CYWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCiAg
ICAgICAgIHsgImdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBncmFudERlc2t0
b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCi0gICAgICAgIHsgImhh
c1NwZWxsaW5nTWFya2VyIiwgaGFzU3BlbGxpbmdNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJoYXNHcmFtbWFyTWFya2VyIiwgaGFzR3JhbW1hck1hcmtlckNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgImlnbm9yZURlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMiLCBpZ25vcmVEZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiaXNDb21tYW5kRW5hYmxlZCIsIGlzQ29tbWFuZEVuYWJsZWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKaW5kZXggYjMyNDhkMC4uNTMxMGM2NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMjgsNyArMzI4LDYgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhYm9ydE1vZGFsKCk7CiAKLSAgICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9t
LCBpbnQgbGVuZ3RoKTsKICAgICBib29sIGhhc0dyYW1tYXJNYXJrZXIoaW50IGZyb20sIGludCBs
ZW5ndGgpOwogCiAgICAgdm9pZCBkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KGludCBkZXZp
Y2VEUEksIGludCBkZXZpY2VXaWR0aCwgaW50IGRldmljZUhlaWdodCwgaW50IGF2YWlsYWJsZVdp
ZHRoLCBpbnQgYXZhaWxhYmxlSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5
LmNwcAppbmRleCBkNGQyM2QyLi40Mjc0N2M5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ibGFja2JlcnJ5L0xheW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNr
QmVycnkuY3BwCkBAIC03MTUsMTQgKzcxNSw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdAogICAgICAgICBtYWluRnJhbWUtPmFuaW1hdGlvbigp
LT5yZXN1bWVBbmltYXRpb25zKCk7CiB9CiAKLWJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhh
c1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQotewotICAgIGlmICghbWFpbkZy
YW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbWFpbkZyYW1lLT5lZGl0
b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgpOwotfQotCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGlmIG5lZWRlZCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUw
NzU4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGFmNTYzNjAuLjU1YTFjYjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAg
LTEzMiw3ICsxMzIsNiBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJleGVjQ29tbWFuZCIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6ZXhlY0NvbW1hbmQpOwogICAgIGJpbmRNZXRob2QoImZvcmNlUmVk
U2VsZWN0aW9uQ29sb3JzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpmb3JjZVJlZFNlbGVjdGlv
bkNvbG9ycyk7CiAgICAgYmluZE1ldGhvZCgiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlz
c2lvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVy
bWlzc2lvbik7Ci0gICAgYmluZE1ldGhvZCgiaGFzU3BlbGxpbmdNYXJrZXIiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKTsKICAgICBiaW5kTWV0aG9kKCJmaW5kU3Ry
aW5nIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpmaW5kU3RyaW5nKTsKICAgICBiaW5kTWV0aG9k
KCJpc0NvbW1hbmRFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFi
bGVkKTsKICAgICBiaW5kTWV0aG9kKCJoYXNDdXN0b21QYWdlU2l6ZVN0eWxlIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpoYXNDdXN0b21QYWdlU2l6ZVN0eWxlKTsKQEAgLTIwMDMsMTMgKzIwMDIs
NiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcAogICAgICAgICByZXN1bHQtPnNldChlbGVtZW50
LmRvY3VtZW50KCkuZnJhbWUoKS0+bWFya2VyVGV4dEZvckxpc3RJdGVtKGVsZW1lbnQpLnV0Zjgo
KSk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0g
ICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8
fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZXN1bHQt
PnNldChtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25TdGFydEhhc1Nw
ZWxsaW5nTWFya2VyRm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0lu
dDMyKCkpKTsKLX0KLQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAppbmRleCAwZjUwNTliLi41MzY3N2UyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTM4NSw3ICszODUsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpOwogCiAgICAgdm9pZCBtYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZv
aWQgaGFzU3BlbGxpbmdNYXJrZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
TGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCmluZGV4IDdjZGUxMjYuLmMyODFjNGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZs
LmNwcApAQCAtNzI2LDEyICs3MjYsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9y
dE1vZGFsKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIExheW91dFRlc3RDb250
cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQsIGludCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
aGFzR3JhbW1hck1hcmtlcihpbnQsIGludCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKaW5kZXggMDZlNDU2Yy4uZDRlMTIxMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC05NzYsMTEgKzk3Niw2IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogewogfQogCi1ib29sIExh
eW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3ZWJraXRXZWJGcmFt
ZVNlbGVjdGlvbkhhc1NwZWxsaW5nTWFya2VyKG1haW5GcmFtZSwgZnJvbSwgbGVuZ3RoKTsKLX0K
LQogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzR3JhbW1hck1hcmtlcihpbnQgZnJvbSwg
aW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZDI2NzVkYi4uYjYx
NTVhOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQpAQCAtMTE1OSwxMSArMTE1OSw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmFib3J0TW9kYWwoKQogICAgIFtOU0FwcCBhYm9ydE1vZGFsXTsKIH0KIAotYm9vbCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5n
dGgpCi17Ci0gICAgcmV0dXJuIFttYWluRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6ZnJvbSBsZW5n
dGg6bGVuZ3RoXTsKLX0KLQogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzR3JhbW1hck1h
cmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gW21haW5GcmFtZSBoYXNH
cmFtbWFyTWFya2VyOmZyb20gbGVuZ3RoOmxlbmd0aF07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDg2OWYyNjMuLjczNjVh
M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCkBAIC05NDMsMTIgKzk0Myw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1
bXBWaXNpdGVkTGlua3NDYWxsYmFja3ModHJ1ZSk7CiB9CiAKLWJvb2wgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCwgaW50KQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjphZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9yaWdpbiwgY29uc3QgUVN0cmluZyYg
ZGVzdGluYXRpb24pCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVSTFRvUmVk
aXJlY3Qob3JpZ2luLCBkZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggMzJmNjFlNy4uYTM5N2ZiYSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAt
MjQxLDcgKzI0MSw2IEBAIHB1YmxpYyBzbG90czoKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9k
IHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91
dFRlc3RDb250cm9sbGVyLgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9Ci0gICAgYm9vbCBoYXNT
cGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCk7CiAKICAgICB2b2lkIGFkZFVSTFRv
UmVkaXJlY3QoY29uc3QgUVN0cmluZyYgb3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlv
bik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCmluZGV4IDI1NDgzYzIuLmU2MzliZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTQ0OSwx
NyArMTQ0OSw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogewog
fQogCi1ib29sIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJv
bSwgaW50IGxlbmd0aCkKLXsKLSAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2
YXRlKFF1ZXJ5LCBmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZVByaXZhdGUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBCT09MIHJldCA9IEZBTFNFOwotICAgIGlmIChGQUlMRUQoZnJhbWVQcml2
YXRlLT5oYXNTcGVsbGluZ01hcmtlcihmcm9tLCBsZW5ndGgsICZyZXQpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiByZXQ7Ci19Ci0KIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Omhhc0dyYW1tYXJNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
TGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlv
dXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCAxOTY5NTliLi5mYzZhMjY5IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAt
NTUwLDEyICs1NTAsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkK
IHsKIH0KIAotYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50
LCBpbnQpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzR3JhbW1hck1hcmtlcihpbnQsIGludCkK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>