<?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>146115</bug_id>
          
          <creation_ts>2015-06-18 10:50:44 -0700</creation_ts>
          <short_desc>Web Inspector: [Meta] Visualize code hotness using basic block execution counts</short_desc>
          <delta_ts>2026-01-12 09:08:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>151470</dependson>
    
    <dependson>151695</dependson>
    
    <dependson>151697</dependson>
    
    <dependson>146099</dependson>
    
    <dependson>147109</dependson>
    
    <dependson>151696</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>graouts</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jonowells</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1102959</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-06-18 10:50:44 -0700</bug_when>
    <thetext>Moved UI talk to here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103072</commentid>
    <comment_count>1</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-06-18 16:14:41 -0700</bug_when>
    <thetext>&gt; I&apos;m a much bigger fan of small widgets in gutters (left side) ...

I’m willing to explore that option.

I have used Adobe Theseus (https://github.com/adobe-research/theseus#theseus) which adds call counters for every function. I find it very helpful to see numbers changing in realtime.

I haven’t used any software that adds a heat map overlay on top of code. I think it could be useful to give a quick glance of what happened. We already gray out unexecuted code and I find it very helpful. Heat maps could be an extension to that. 

I’ll make two prototypes: gutter highlight and heat maps. I’ll post them here for anyone to play around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103106</commentid>
    <comment_count>2</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-06-18 17:26:39 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; &gt; I&apos;m a much bigger fan of small widgets in gutters (left side) ...
&gt; 
&gt; I’m willing to explore that option.
&gt; 
&gt; I have used Adobe Theseus
&gt; (https://github.com/adobe-research/theseus#theseus) which adds call counters
&gt; for every function. I find it very helpful to see numbers changing in
&gt; realtime.

Yeah, I love Tom&apos;s work on Theseus. We gotta take that stuff and ship it!

I am concerned that real numbers won&apos;t scale once you get to hot loops. The widely varying input domain also make it difficult to write a generic binning function.

A nice thing about gutters is that it provides a good place to hover for more information, either in a popover or by adding underlines to different subexpressions on the hovered line.

This is the most relevant academic project, which I think has a cool idea and a terrible visual encoding: http://scg.unibe.ch/research/senseo

&gt; I haven’t used any software that adds a heat map overlay on top of code. I
&gt; think it could be useful to give a quick glance of what happened. We already
&gt; gray out unexecuted code and I find it very helpful. Heat maps could be an
&gt; extension to that. 

In the other bug, I believe Oliver was referring to colors in the rows/cells of a profiler. Color seems fine there since a user isn&apos;t trying to comprehend what the words mean as much as find the heaviest line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103673</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-06-20 17:51:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/21475874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116474</commentid>
    <comment_count>4</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-08-10 21:16:24 -0700</bug_when>
    <thetext>We need to update CodeMirror to 5.3+ to be able to add inline CSS via addCssToTextRange. Our current version of CodeMirror only allows to add CSS class names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122125</commentid>
    <comment_count>5</comment_count>
      <attachid>260272</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-08-30 21:12:57 -0700</bug_when>
    <thetext>Created attachment 260272
WIP

Saam&apos;s patch from https://bugs.webkit.org/show_bug.cgi?id=146099#c14 + UI changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122126</commentid>
    <comment_count>6</comment_count>
      <attachid>260273</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-08-30 21:17:32 -0700</bug_when>
    <thetext>Created attachment 260273
[Image] With the patch applied

Unexecuted code highlighted with a dim purple background so I could see the ranges even if they&apos;re just a white space. This is for debugging only. I&apos;ll revert to text opacity when the patch is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122219</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-31 11:07:52 -0700</bug_when>
    <thetext>It isn&apos;t clear what the colors mean in the screenshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138116</commentid>
    <comment_count>8</comment_count>
      <attachid>264464</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2015-10-30 21:39:16 -0700</bug_when>
    <thetext>Created attachment 264464
WIP

Screenshot: https://cldup.com/5Zjt-ccMFl.png

Changes from the previous WIP:

- Execution counts
The idea is to show execution counts on the line gutter. This is inspired by Theseus (https://github.com/adobe-research/theseus). Currently, execution counts are shown for all blocks. I&apos;ll change it to show only for functions and loops in the future.

Execution counts are often shown one line before the line they were supposed to be in because white space isn&apos;t handled properly. I&apos;ll fix that.

- Efficient rendering. Only modified blocks are re-rendered.
The ranges from the backend may intersect and I implemented flattening. The rule is that the inner ranges always win over the outer ones. For example, given two ranges: 
{start: 30, end: 50, executionCount: 0}
{start: 0, end: 100, executionCount: 1}

The flattening algorithm returns:
{start: 0, end: 29, executionCount: 1}
{start: 30, end: 50, executionCount: 0}
{start: 51, end: 100, executionCount: 1}

I&apos;ll write tests for this later.


Lots of CodeMirro-related visual bugs that need to be fixed:
  — Hot code&apos;s background overlays the selection, making the selection invisible
  – Execution counts&apos; background overlaps the breakpoints&apos; background
  — White patches around the type pills
  — Many issues with white space highlighting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138439</commentid>
    <comment_count>9</comment_count>
      <attachid>264464</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-11-01 18:25:38 -0800</bug_when>
    <thetext>Comment on attachment 264464
WIP

I realize that this is a WIP patch, but here are some things I noticed while reading through it.

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

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:476
&gt; +        var result = [];

let instead of var

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:482
&gt; +            if (comparator(left[indexLeft], right[indexRight]) &lt; 0)

To make this more extensible, you may consider moving the &quot;&lt; 0&quot; into the comparator

&gt; Source/WebInspectorUI/UserInterface/Main.html:209
&gt; +    &lt;script src=&quot;External/Chroma/chroma.js&quot;&gt;&lt;/script&gt;

We already have a WebInspector.Color, so is there any way to try to merge the two classes?  I&apos;m not sure why exactly it is necessary to use an external library for just a few calls, but if you have a good reason then its fine by me (although please explain it).

&gt; Source/WebInspectorUI/UserInterface/Views/TextEditor.js:452
&gt; +        var doc = this._codeMirror.getDoc();

let instead of var

&gt; Source/WebInspectorUI/UserInterface/Views/TextEditor.js:462
&gt; +        m.className = &quot;CodeMirror-linenumber gutter-execution-count&quot;;

classList.add()

&gt; Source/WebInspectorUI/UserInterface/Views/TextEditor.js:468
&gt; +        if (text !== undefined)

Shouldn&apos;t this just be
if (text &amp;&amp; text.length)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260272</attachid>
            <date>2015-08-30 21:12:57 -0700</date>
            <delta_ts>2015-10-30 21:39:16 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>89588</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCmluZGV4IDJjZTRjYzMuLjBkZmFiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDY1NSwxMCArNDY1
NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAg
ICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6IHsKICAgICAgICAgQmFzaWNCbG9ja0xvY2F0aW9u
KiBiYXNpY0Jsb2NrTG9jYXRpb24gPSBub2RlLT5iYXNpY0Jsb2NrTG9jYXRpb24oKTsKLSAgICAg
ICAgaWYgKCFiYXNpY0Jsb2NrTG9jYXRpb24tPmhhc0V4ZWN1dGVkKCkpIHsKLSAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tMb2Nh
dGlvbi0+ZW1pdEV4ZWN1dGVDb2RlKG1faml0LCBzY3JhdGNoMS5ncHIoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgICAgICBiYXNpY0Jsb2Nr
TG9jYXRpb24tPmVtaXRFeGVjdXRlQ29kZShtX2ppdCwgc2NyYXRjaDEuZ3ByKCkpOwogICAgICAg
ICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggN2Y5MGJlZi4u
ZmNhOTkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC00Njk0LDEwICs0Njk0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzog
ewogICAgICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGJhc2ljQmxvY2tMb2NhdGlvbiA9IG5vZGUt
PmJhc2ljQmxvY2tMb2NhdGlvbigpOwotICAgICAgICBpZiAoIWJhc2ljQmxvY2tMb2NhdGlvbi0+
aGFzRXhlY3V0ZWQoKSkgewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMp
OwotICAgICAgICAgICAgYmFzaWNCbG9ja0xvY2F0aW9uLT5lbWl0RXhlY3V0ZUNvZGUobV9qaXQs
IHNjcmF0Y2gxLmdwcigpKTsKLSAgICAgICAgfQorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDEodGhpcyk7CisgICAgICAgIGJhc2ljQmxvY2tMb2NhdGlvbi0+ZW1pdEV4ZWN1dGVDb2RlKG1f
aml0LCBzY3JhdGNoMS5ncHIoKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBkOTg1NzE0
Li43NWIwY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM5Nyw2ICsz
OTcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgICAgICAgICAgLnNldFN0YXJ0T2Zm
c2V0KGJsb2NrLm1fc3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAuc2V0RW5kT2Zmc2V0KGJsb2Nr
Lm1fZW5kT2Zmc2V0KQogICAgICAgICAgICAgLnNldEhhc0V4ZWN1dGVkKGJsb2NrLm1faGFzRXhl
Y3V0ZWQpCisgICAgICAgICAgICAuc2V0RXhlY3V0aW9uQ291bnQoYmxvY2subV9leGVjdXRpb25D
b3VudCkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgICAgIGJhc2ljQmxvY2tzLT5hZGRJ
dGVtKFdURjo6bW92ZShsb2NhdGlvbikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KaW5kZXggYzMyMWY2YS4u
MGJhYjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9SdW50aW1lLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9SdW50aW1lLmpzb24KQEAgLTE4OCw3ICsxODgsOCBAQAogICAgICAgICAgICAgInBy
b3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydE9mZnNldCIsICJ0
eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnQgb2Zmc2V0IG9mIHRoZSBiYXNp
YyBibG9jay4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRPZmZzZXQiLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkVuZCBvZmZzZXQgb2YgdGhlIGJhc2ljIGJs
b2NrLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhc0V4ZWN1dGVkIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgaWYgdGhlIGJhc2ljIGJsb2Nr
IGhhcyBleGVjdXRlZCBiZWZvcmUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYXNF
eGVjdXRlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIGlm
IHRoZSBiYXNpYyBibG9jayBoYXMgZXhlY3V0ZWQgYmVmb3JlLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImV4ZWN1dGlvbkNvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlw
dGlvbiI6ICJJbmRpY2F0ZXMgaG93IG1hbnkgdGltZXMgdGhlIGJhc2ljIGJsb2NrIGhhcyBleGVj
dXRlZC4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjODNiY2M4Li5mNjBmNGI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEzNTQsOCArMTM1NCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3RvX2luZGV4X3N0cmluZyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGJh
c2ljQmxvY2tMb2NhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LmJhc2ljQmxvY2tMb2Nh
dGlvbjsKLSAgICBpZiAoIWJhc2ljQmxvY2tMb2NhdGlvbi0+aGFzRXhlY3V0ZWQoKSkKLSAgICAg
ICAgYmFzaWNCbG9ja0xvY2F0aW9uLT5lbWl0RXhlY3V0ZUNvZGUoKnRoaXMsIHJlZ1QxKTsKKyAg
ICBiYXNpY0Jsb2NrTG9jYXRpb24tPmVtaXRFeGVjdXRlQ29kZSgqdGhpcywgcmVnVDEpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDVhZDgzNDYuLjI0ZTRiMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTEzOTMsMTIgKzEzOTMsNiBAQCBfbGxpbnRfb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZykKICAgICBkaXNwYXRjaCgzKQog
Ci1fbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQotICAgIHN0b3JlYiAxLCBCYXNpY0Jsb2Nr
TG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCi0gICAgZGlzcGF0Y2goMikKLQogIyBMYXN0bHks
IG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQg
YWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNp
bmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CiAjIGFzIG11Y2guCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCmluZGV4IDdlZjZiODcuLjg4MGY5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzc0LDYg
KzIzNzQsMTMgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIC5vcFByb2ZpbGVUeXBlRG9uZToK
ICAgICBkaXNwYXRjaCg2KQogCitfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQorICAgIHN0
b3JlYiAxLCBCYXNpY0Jsb2NrTG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCisgICAgYWRkaSAx
LCBCYXNpY0Jsb2NrTG9jYXRpb246Om1fZXhlY3V0aW9uQ291bnRbdDBdCisgICAgZGlzcGF0Y2go
MikKKwogX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCkBAIC0yMzgx
LDQgKzIzODgsNCBAQCBfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAg
ICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBkaXNwYXRjaCgy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQppbmRleCBkMjE1MmEyLi4yZDBmMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjIyNywx
MCArMjIyNywxNyBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogLm9wUHJvZmlsZVR5cGVEb25l
OgogICAgIGRpc3BhdGNoKDYpCiAKK19sbGludF9vcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCisgICAg
c3RvcmViIDEsIEJhc2ljQmxvY2tMb2NhdGlvbjo6bV9oYXNFeGVjdXRlZFt0MF0KKyAgICBhZGRx
IDEsIEJhc2ljQmxvY2tMb2NhdGlvbjo6bV9leGVjdXRpb25Db3VudFt0MF0KKyAgICBkaXNwYXRj
aCgyKQorCiBfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MAogICAgIGxvYWRwIEpTQXJyb3dGdW5j
dGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MSkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmFzaWNCbG9ja0xvY2F0aW9uLmNwcAppbmRleCAzM2NjMzk2
Li5lODcxMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNp
Y0Jsb2NrTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jh
c2ljQmxvY2tMb2NhdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9ja0xvY2F0aW9u
OjpCYXNpY0Jsb2NrTG9jYXRpb24oaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQogICAg
IDogbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNl
dCkKICAgICAsIG1faGFzRXhlY3V0ZWQoZmFsc2UpCisgICAgLCBtX2V4ZWN1dGlvbkNvdW50KDAp
CiB7CiB9CiAKQEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBCYXNpY0Jsb2NrTG9jYXRpb246OmR1bXBE
YXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8R2FwPiBleGVjdXRlZFJhbmdlcyA9IGdldEV4ZWN1
dGVkUmFuZ2VzKCk7CiAgICAgZm9yIChHYXAgZ2FwIDogZXhlY3V0ZWRSYW5nZXMpCi0gICAgICAg
IGRhdGFMb2dGKCJcdEJhc2ljQmxvY2s6IFslZCwgJWRdIGhhc0V4ZWN1dGVkOiAlc1xuIiwgZ2Fw
LmZpcnN0LCBnYXAuc2Vjb25kLCBoYXNFeGVjdXRlZCgpID8gInRydWUiIDogImZhbHNlIik7Cisg
ICAgICAgIGRhdGFMb2dGKCJcdEJhc2ljQmxvY2s6IFslZCwgJWRdIGhhc0V4ZWN1dGVkOiAlcywg
ZXhlY3V0aW9uQ291bnQ6JXp1XG4iLCBnYXAuZmlyc3QsIGdhcC5zZWNvbmQsIGhhc0V4ZWN1dGVk
KCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCBtX2V4ZWN1dGlvbkNvdW50KTsKIH0KIAogI2lmIEVOQUJM
RShKSVQpCkBAIC04Myw2ICs4NCwxMyBAQCB2b2lkIEJhc2ljQmxvY2tMb2NhdGlvbjo6ZW1pdEV4
ZWN1dGVDb2RlKENDYWxsSGVscGVycyYgaml0LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaQogewogICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmbV9oYXNFeGVjdXRlZCksIHB0
clJlZyk7CiAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVlKSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHB0clJlZywgMCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSA4LCAiQXNzdW1pbmcgc2l6ZV90IGlz
IDY0IGJpdHMgb24gNjQgYml0IHBsYXRmb3Jtcy4iKTsKKyAgICBqaXQuYWRkNjQoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZtX2V4
ZWN1dGlvbkNvdW50KSk7CisjZWxzZQorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHNpemVfdCkg
PT0gNCwgIkFzc3VtaW5nIHNpemVfdCBpcyAzMiBiaXRzIG9uIDMyIGJpdCBwbGF0Zm9ybXMuIik7
CisgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcygmbV9leGVjdXRpb25Db3VudCkpOworI2VuZGlmCiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmFzaWNCbG9ja0xvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CYXNpY0Jsb2NrTG9jYXRpb24uaAppbmRleCA0OWJmNTE0Li5hNDUyYzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRpb24uaApAQCAt
NDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFydE9mZnNldChpbnQgc3RhcnRP
ZmZzZXQpIHsgbV9zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRFbmRP
ZmZzZXQoaW50IGVuZE9mZnNldCkgeyBtX2VuZE9mZnNldCA9IGVuZE9mZnNldDsgfQogICAgIGJv
b2wgaGFzRXhlY3V0ZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0V4ZWN1dGVkOyB9CisgICAgc2l6
ZV90IGV4ZWN1dGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRpb25Db3VudDsgfQog
ICAgIHZvaWQgaW5zZXJ0R2FwKGludCwgaW50KTsKICAgICBWZWN0b3I8R2FwPiBnZXRFeGVjdXRl
ZFJhbmdlcygpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcERhdGEoKSBj
b25zdDsKQEAgLTYxLDYgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zdGFydE9mZnNldDsK
ICAgICBpbnQgbV9lbmRPZmZzZXQ7CiAgICAgYm9vbCBtX2hhc0V4ZWN1dGVkOworICAgIHNpemVf
dCBtX2V4ZWN1dGlvbkNvdW50OwogICAgIFZlY3RvcjxHYXA+IG1fZ2FwczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5j
cHAKaW5kZXggZDgwZTdmMy4uZTdjOTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5jcHAKQEAgLTc2LDIyICs3NiwyNSBA
QCBWZWN0b3I8QmFzaWNCbG9ja1JhbmdlPiBDb250cm9sRmxvd1Byb2ZpbGVyOjpnZXRCYXNpY0Js
b2Nrc0ZvclNvdXJjZUlEKGludHB0cl90CiAgICAgY29uc3QgQmxvY2tMb2NhdGlvbkNhY2hlJiBj
YWNoZSA9IGJ1Y2tldEZpbmRSZXN1bHQtPnZhbHVlOwogICAgIGZvciAoY29uc3QgQmFzaWNCbG9j
a0xvY2F0aW9uKiBibG9jayA6IGNhY2hlLnZhbHVlcygpKSB7CiAgICAgICAgIGJvb2wgaGFzRXhl
Y3V0ZWQgPSBibG9jay0+aGFzRXhlY3V0ZWQoKTsKKyAgICAgICAgc2l6ZV90IGV4ZWN1dGlvbkNv
dW50ID0gYmxvY2stPmV4ZWN1dGlvbkNvdW50KCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxCYXNp
Y0Jsb2NrTG9jYXRpb246OkdhcD4mIGJsb2NrUmFuZ2VzID0gYmxvY2stPmdldEV4ZWN1dGVkUmFu
Z2VzKCk7CiAgICAgICAgIGZvciAoQmFzaWNCbG9ja0xvY2F0aW9uOjpHYXAgZ2FwIDogYmxvY2tS
YW5nZXMpIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2tSYW5nZSByYW5nZTsKICAgICAgICAgICAg
IHJhbmdlLm1faGFzRXhlY3V0ZWQgPSBoYXNFeGVjdXRlZDsKKyAgICAgICAgICAgIHJhbmdlLm1f
ZXhlY3V0aW9uQ291bnQgPSBleGVjdXRpb25Db3VudDsKICAgICAgICAgICAgIHJhbmdlLm1fc3Rh
cnRPZmZzZXQgPSBnYXAuZmlyc3Q7CiAgICAgICAgICAgICByYW5nZS5tX2VuZE9mZnNldCA9IGdh
cC5zZWNvbmQ7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJhbmdlKTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnR1cGxlPGJvb2wsIHVuc2lnbmVkLCB1bnNp
Z25lZD4+JiB1bmV4ZWN1dGVkRnVuY3Rpb25SYW5nZXMgPSB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUoKS0+Z2V0RnVuY3Rpb25SYW5nZXMoc291cmNlSUQpOwotICAgIGZvciAoY29uc3QgYXV0
byYgZnVuY3Rpb25SYW5nZSA6IHVuZXhlY3V0ZWRGdW5jdGlvblJhbmdlcykgeworICAgIGNvbnN0
IFZlY3RvcjxzdGQ6OnR1cGxlPGJvb2wsIHVuc2lnbmVkLCB1bnNpZ25lZD4+JiBmdW5jdGlvblJh
bmdlcyA9IHZtLmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5nZXRGdW5jdGlvblJhbmdlcyhz
b3VyY2VJRCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBmdW5jdGlvblJhbmdlIDogZnVuY3Rpb25S
YW5nZXMpIHsKICAgICAgICAgQmFzaWNCbG9ja1JhbmdlIHJhbmdlOwogICAgICAgICByYW5nZS5t
X2hhc0V4ZWN1dGVkID0gc3RkOjpnZXQ8MD4oZnVuY3Rpb25SYW5nZSk7CiAgICAgICAgIHJhbmdl
Lm1fc3RhcnRPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Z2V0PDE+KGZ1bmN0aW9uUmFu
Z2UpKTsKICAgICAgICAgcmFuZ2UubV9lbmRPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6
Z2V0PDI+KGZ1bmN0aW9uUmFuZ2UpKTsKKyAgICAgICAgcmFuZ2UubV9leGVjdXRpb25Db3VudCA9
IHJhbmdlLm1faGFzRXhlY3V0ZWQgPyAxIDogMDsgLy8gVGhpcyBpcyBhIGhhY2suIFdlIGRvbid0
IGFjdHVhbGx5IGNvdW50IHRoaXMuCiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmFuZ2UpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZs
b3dQcm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQ
cm9maWxlci5oCmluZGV4IDgxNzQ5ZGMuLmNlYmEzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgKQEAgLTg3LDYgKzg3LDcg
QEAgc3RydWN0IEJhc2ljQmxvY2tSYW5nZSB7CiAgICAgaW50IG1fc3RhcnRPZmZzZXQ7CiAgICAg
aW50IG1fZW5kT2Zmc2V0OwogICAgIGJvb2wgbV9oYXNFeGVjdXRlZDsKKyAgICBzaXplX3QgbV9l
eGVjdXRpb25Db3VudDsKIH07CiAKIGNsYXNzIENvbnRyb2xGbG93UHJvZmlsZXIgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQmFz
aWNCbG9ja0Fubm90YXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0Jhc2ljQmxvY2tBbm5vdGF0b3IuanMKaW5kZXggYTA4Zjc5Ni4uOTQ0MmU1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvQmFzaWNCbG9ja0Fubm90YXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9CYXNpY0Jsb2NrQW5ub3RhdG9yLmpzCkBAIC0zMSw3
ICszMSwxMCBAQCBXZWJJbnNwZWN0b3IuQmFzaWNCbG9ja0Fubm90YXRvciA9IGNsYXNzIEJhc2lj
QmxvY2tBbm5vdGF0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0bwogICAgICAgICBzdXBlcihzb3VyY2VD
b2RlVGV4dEVkaXRvcik7CiAKICAgICAgICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0OwotICAgICAg
ICB0aGlzLl9iYXNpY0Jsb2NrTWFya2VycyA9IG5ldyBNYXA7IC8vIE9ubHkgY29udGFpbnMgdW5l
eGVjdXRlZCBiYXNpYyBibG9ja3MuCisgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tNYXJrZXJzID0g
bmV3IE1hcDsgLy8gRklYTUU6IENvbnNpZGVyIHVzaW5nIGFuIGludGVydmFsIHRyZWUuCisKKyAg
ICAgICAgdGhpcy5fY29sb3JBID0gY2hyb21hLmxjaCgxMDAsIDIsIDk2KTsKKyAgICAgICAgdGhp
cy5fY29sb3JCID0gY2hyb21hLmxjaCg5MCwgMzAsIDUwKTsKICAgICB9CiAKICAgICAvLyBQcm90
ZWN0ZWQKQEAgLTUxLDYgKzU0LDI3IEBAIFdlYkluc3BlY3Rvci5CYXNpY0Jsb2NrQW5ub3RhdG9y
ID0gY2xhc3MgQmFzaWNCbG9ja0Fubm90YXRvciBleHRlbmRzIFdlYkluc3BlY3RvCiAKICAgICAv
LyBQcml2YXRlCiAKKyAgICBfZ2V0RXhlY3V0aW9uQ291bnQoYmxvY2spCisgICAgeworICAgICAg
ICBsZXQgc3RhcnRNYXAgPSB0aGlzLl9iYXNpY0Jsb2NrTWFya2Vycy5nZXQoYmxvY2suc3RhcnRP
ZmZzZXQpOworICAgICAgICBpZiAoIXN0YXJ0TWFwKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgbGV0IHJlc3VsdCA9IHN0YXJ0TWFwLmdldChibG9jay5lbmRPZmZzZXQpOwor
ICAgICAgICByZXR1cm4gdHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIgPyBudWxsIDogcmVz
dWx0OworICAgIH0KKworICAgIF9zZXRFeGVjdXRpb25Db3VudChibG9jaykKKyAgICB7CisgICAg
ICAgIGxldCBzdGFydE1hcCA9IHRoaXMuX2Jhc2ljQmxvY2tNYXJrZXJzLmdldChibG9jay5zdGFy
dE9mZnNldCk7CisgICAgICAgIGlmICghc3RhcnRNYXApIHsKKyAgICAgICAgICAgIHN0YXJ0TWFw
ID0gbmV3IE1hcCgpOworICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja01hcmtlcnMuc2V0KGJs
b2NrLnN0YXJ0T2Zmc2V0LCBzdGFydE1hcCk7CisgICAgICAgIH0KKworICAgICAgICBzdGFydE1h
cC5zZXQoYmxvY2suZW5kT2Zmc2V0LCBibG9jay5leGVjdXRpb25Db3VudCk7CisgICAgfQorCiAg
ICAgX2Fubm90YXRlQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcygpCiAgICAgewogICAgICAgICB2
YXIgc291cmNlSUQgPSB0aGlzLl9zY3JpcHQuaWQ7CkBAIC02NSw0MCArODksNjMgQEAgV2ViSW5z
cGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0b3IgPSBjbGFzcyBCYXNpY0Jsb2NrQW5ub3RhdG9yIGV4
dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgdmFyIHtzdGFydE9mZnNldCwgZW5k
T2Zmc2V0fSA9IHRoaXMuc291cmNlQ29kZVRleHRFZGl0b3IudmlzaWJsZVJhbmdlT2Zmc2V0cygp
OwotICAgICAgICAgICAgYmFzaWNCbG9ja3MgPSBiYXNpY0Jsb2Nrcy5maWx0ZXIoZnVuY3Rpb24o
YmxvY2spIHsKKyAgICAgICAgICAgIGNvbnN0IHtzdGFydE9mZnNldCwgZW5kT2Zmc2V0fSA9IHRo
aXMuc291cmNlQ29kZVRleHRFZGl0b3IudmlzaWJsZVJhbmdlT2Zmc2V0cygpOworICAgICAgICAg
ICAgY29uc3QgdmlzaWJsZUJsb2NrcyA9IGJhc2ljQmxvY2tzLmZpbHRlcihmdW5jdGlvbiBpc1Zp
c2libGUoYmxvY2spIHsKICAgICAgICAgICAgICAgICByZXR1cm4gKGJsb2NrLnN0YXJ0T2Zmc2V0
ID49IHN0YXJ0T2Zmc2V0ICYmIGJsb2NrLnN0YXJ0T2Zmc2V0IDw9IGVuZE9mZnNldCkgfHwgKGJs
b2NrLnN0YXJ0T2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0ICYmIGJsb2NrLmVuZE9mZnNldCA+PSBlbmRP
ZmZzZXQpOworICAgICAgICAgICAgfSkuc29ydChmdW5jdGlvbiBieUluY3JlYXNpbmdPcmRlcihh
LCBiKSB7CisgICAgICAgICAgICAgICAgY29uc3QgZGVsdGEgPSBhLnN0YXJ0T2Zmc2V0IC0gYi5z
dGFydE9mZnNldDsKKyAgICAgICAgICAgICAgICBpZiAoZGVsdGEgPT09IDApCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBiLmVuZE9mZnNldCAtIGEuZW5kT2Zmc2V0OworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbHRhOwogICAgICAgICAgICAg
fSk7CiAKLSAgICAgICAgICAgIGZvciAodmFyIGJsb2NrIG9mIGJhc2ljQmxvY2tzKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGtleSA9IGJsb2NrLnN0YXJ0T2Zmc2V0ICsgIjoiICsgYmxvY2suZW5k
T2Zmc2V0OwotICAgICAgICAgICAgICAgIHZhciBoYXNLZXkgPSB0aGlzLl9iYXNpY0Jsb2NrTWFy
a2Vycy5oYXMoa2V5KTsKLSAgICAgICAgICAgICAgICB2YXIgaGFzRXhlY3V0ZWQgPSBibG9jay5o
YXNFeGVjdXRlZDsKLSAgICAgICAgICAgICAgICBpZiAoaGFzS2V5ICYmIGhhc0V4ZWN1dGVkKQot
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclJhbmdlRm9yQmFzaWNCbG9ja01hcmtlcihr
ZXkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFoYXNLZXkgJiYgIWhhc0V4ZWN1dGVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXIgPSB0aGlzLl9oaWdobGlnaHRUZXh0Rm9y
QmFzaWNCbG9jayhibG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tN
YXJrZXJzLnNldChrZXksIG1hcmtlcik7Ci0gICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAg
IGZvciAobGV0IGJsb2NrIG9mIHZpc2libGVCbG9ja3MpIHsKKyAgICAgICAgICAgICAgICBsZXQg
ZXhlY3V0aW9uQ291bnQgPSB0aGlzLl9nZXRFeGVjdXRpb25Db3VudChibG9jayk7CisKKyAgICAg
ICAgICAgICAgICAvLyBPbmx5IHJlbmRlciByYW5nZXMgdGhhdCBoYXZlIGNoYW5nZWQuCisgICAg
ICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNvdW50ID09PSBudWxsIHx8IGV4ZWN1dGlvbkNvdW50
ICE9PSBibG9jay5leGVjdXRpb25Db3VudCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9o
aWdobGlnaHRUZXh0Rm9yQmFzaWNCbG9jayhibG9jayk7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuX3NldEV4ZWN1dGlvbkNvdW50KGJsb2NrKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIHZhciB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnRU
aW1lOwotICAgICAgICAgICAgdmFyIHRpbWVvdXRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoNjUw
MCwgdG90YWxUaW1lKSwgMzAgKiB0b3RhbFRpbWUpOworICAgICAgICAgICAgbGV0IHRvdGFsVGlt
ZSA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7CisgICAgICAgICAgICBsZXQgdGltZW91dFRpbWUg
PSBNYXRoLm1pbihNYXRoLm1heCg2NTAwLCB0b3RhbFRpbWUpLCAzMCAqIHRvdGFsVGltZSk7CiAg
ICAgICAgICAgICB0aGlzLl90aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQodGhpcy5pbnNl
cnRBbm5vdGF0aW9ucy5iaW5kKHRoaXMpLCB0aW1lb3V0VGltZSk7CiAgICAgICAgIH0uYmluZCh0
aGlzKSk7CiAgICAgfQogCisKICAgICBfaGlnaGxpZ2h0VGV4dEZvckJhc2ljQmxvY2soYmFzaWNC
bG9jaykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJhc2ljQmxvY2suc3RhcnRPZmZz
ZXQgPD0gYmFzaWNCbG9jay5lbmRPZmZzZXQgJiYgYmFzaWNCbG9jay5zdGFydE9mZnNldCA+PSAw
ICYmIGJhc2ljQmxvY2suZW5kT2Zmc2V0ID49IDAsICIiICsgYmFzaWNCbG9jay5zdGFydE9mZnNl
dCArICI6IiArIGJhc2ljQmxvY2suZW5kT2Zmc2V0KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
IWJhc2ljQmxvY2suaGFzRXhlY3V0ZWQpOwogCi0gICAgICAgIHZhciBzdGFydFBvc2l0aW9uID0g
dGhpcy5zb3VyY2VDb2RlVGV4dEVkaXRvci5vcmlnaW5hbE9mZnNldFRvQ3VycmVudFBvc2l0aW9u
KGJhc2ljQmxvY2suc3RhcnRPZmZzZXQpOwotICAgICAgICB2YXIgZW5kUG9zaXRpb24gPSB0aGlz
LnNvdXJjZUNvZGVUZXh0RWRpdG9yLm9yaWdpbmFsT2Zmc2V0VG9DdXJyZW50UG9zaXRpb24oYmFz
aWNCbG9jay5lbmRPZmZzZXQpOworICAgICAgICBjb25zb2xlLmluZm8oImJhc2ljQmxvY2sgJWk6
JWkgWyVpXSIsIGJhc2ljQmxvY2suc3RhcnRPZmZzZXQsIGJhc2ljQmxvY2suZW5kT2Zmc2V0LCBi
YXNpY0Jsb2NrLmV4ZWN1dGlvbkNvdW50KTsKKworICAgICAgICBjb25zdCBleGVjdXRpb25Db3Vu
dCA9IGJhc2ljQmxvY2suZXhlY3V0aW9uQ291bnQ7CisKKyAgICAgICAgY29uc3Qgc3RhcnRQb3Np
dGlvbiA9IHRoaXMuc291cmNlQ29kZVRleHRFZGl0b3Iub3JpZ2luYWxPZmZzZXRUb0N1cnJlbnRQ
b3NpdGlvbihiYXNpY0Jsb2NrLnN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgY29uc3QgZW5kUG9zaXRp
b24gPSB0aGlzLnNvdXJjZUNvZGVUZXh0RWRpdG9yLm9yaWdpbmFsT2Zmc2V0VG9DdXJyZW50UG9z
aXRpb24oYmFzaWNCbG9jay5lbmRPZmZzZXQpOwogICAgICAgICBpZiAodGhpcy5faXNUZXh0UmFu
Z2VPbmx5Q2xvc2luZ0JyYWNlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIHZhciBtYXJrZXIgPSB0aGlzLnNvdXJjZUNvZGVU
ZXh0RWRpdG9yLmFkZFN0eWxlVG9UZXh0UmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24s
IFdlYkluc3BlY3Rvci5CYXNpY0Jsb2NrQW5ub3RhdG9yLkhhc05vdEV4ZWN1dGVkQ2xhc3NOYW1l
KTsKKyAgICAgICAgbGV0IG1hcmtlciA9IG51bGw7CisKKyAgICAgICAgaWYgKCFiYXNpY0Jsb2Nr
Lmhhc0V4ZWN1dGVkKSB7CisgICAgICAgICAgICBjb25zdCBjc3NTdHJpbmcgPSAiYmFja2dyb3Vu
ZC1jb2xvcjogaHNsKDI1NiwgOTAlLCA5NyUpIjsKKyAgICAgICAgICAgIG1hcmtlciA9IHRoaXMu
c291cmNlQ29kZVRleHRFZGl0b3IuYWRkQ3NzVG9UZXh0UmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5k
UG9zaXRpb24sIGNzc1N0cmluZyk7CisgICAgICAgIH0gZWxzZSBpZiAoZXhlY3V0aW9uQ291bnQg
PiAxKSB7CisgICAgICAgICAgICBjb25zdCBxID0gTWF0aC5taW4oTWF0aC5wb3coZXhlY3V0aW9u
Q291bnQsIDEvMi4xKSwgMzApIC8gMzA7CisgICAgICAgICAgICBjb25zdCBjc3NDb2xvciA9IGNo
cm9tYS5pbnRlcnBvbGF0ZSh0aGlzLl9jb2xvckEsIHRoaXMuX2NvbG9yQiwgcSwgImxjaCIpOwor
CisgICAgICAgICAgICBjb25zdCBjc3NTdHJpbmcgPSBbCisgICAgICAgICAgICAgICAgImJhY2tn
cm91bmQtY29sb3I6IiArIGNzc0NvbG9yLnRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAvLywi
b3V0bGluZTogMXB4IHNvbGlkICIgKyBjc3NDb2xvci5kYXJrZW4oMikuc2F0dXJhdGUoMS44KS5h
bHBoYSgwLjMpIC8vIERlYnVnIHZpZXcuCisgICAgICAgICAgICBdLmpvaW4oIjsgIik7CisgICAg
ICAgICAgICBtYXJrZXIgPSB0aGlzLnNvdXJjZUNvZGVUZXh0RWRpdG9yLmFkZENzc1RvVGV4dFJh
bmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBjc3NTdHJpbmcpOworICAgICAgICB9CisK
ICAgICAgICAgcmV0dXJuIG1hcmtlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nocm9tYS9jaHJvbWEuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9DaHJvbWEvY2hyb21hLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3Y2E5ZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9DaHJv
bWEvY2hyb21hLmpzCkBAIC0wLDAgKzEsMjIyNiBAQAorCisvKioKKyAqIEBsaWNlbnNlCisgKgor
ICogY2hyb21hLmpzIC0gSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBjb2xvciBjb252ZXJzaW9ucwor
ICogCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNSwgR3JlZ29yIEFpc2NoCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
ICogCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
CisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogMy4gVGhlIG5hbWUgR3JlZ29y
IEFpc2NoIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAq
ICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgR1JFR09SIEFJU0NIIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAqIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLAorICogRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqCisgKi8KKworKGZ1bmN0aW9uKCkgeworICB2YXIgQ29sb3IsIEssIFBJ
VEhJUkQsIFRXT1BJLCBYLCBZLCBaLCBiZXppZXIsIGJsZW5kLCBibGVuZF9mLCBicmV3ZXIsIGJ1
cm4sIGNocm9tYSwgY2xpcF9yZ2IsIGNteWsycmdiLCBjb2xvcnMsIGNvcywgY3NzMnJnYiwgZGFy
a2VuLCBkb2RnZSwgZWFjaCwgZmxvb3IsIGhleDJyZ2IsIGhzaTJyZ2IsIGhzbDJyZ2IsIGhzdjJy
Z2IsIGxhYjJsY2gsIGxhYjJyZ2IsIGxhYl94eXosIGxjaDJsYWIsIGxjaDJyZ2IsIGxpZ2h0ZW4s
IGxpbWl0LCBsb2csIGx1bWluYW5jZSwgbHVtaW5hbmNlX3gsIG11bHRpcGx5LCBub3JtYWwsIG51
bTJyZ2IsIG92ZXJsYXksIHBvdywgcmdiMmNteWssIHJnYjJoZXgsIHJnYjJoc2ksIHJnYjJoc2ws
IHJnYjJoc3YsIHJnYjJsYWIsIHJnYjJsY2gsIHJnYjJudW0sIHJnYjJ0ZW1wLCByZ2IyeHl6LCBy
Z2JfeHl6LCByb290LCByb3VuZCwgc2NyZWVuLCBzaW4sIHRlbXAycmdiLCB0eXBlLCB1bnBhY2ss
IHh5el9sYWIsIHh5el9yZ2IsCisgICAgc2xpY2UgPSBbXS5zbGljZTsKKworICBjaHJvbWEgPSBm
dW5jdGlvbigpIHsKKyAgICByZXR1cm4gKGZ1bmN0aW9uKGZ1bmMsIGFyZ3MsIGN0b3IpIHsKKyAg
ICAgIGN0b3IucHJvdG90eXBlID0gZnVuYy5wcm90b3R5cGU7CisgICAgICB2YXIgY2hpbGQgPSBu
ZXcgY3RvciwgcmVzdWx0ID0gZnVuYy5hcHBseShjaGlsZCwgYXJncyk7CisgICAgICByZXR1cm4g
T2JqZWN0KHJlc3VsdCkgPT09IHJlc3VsdCA/IHJlc3VsdCA6IGNoaWxkOworICAgIH0pKENvbG9y
LCBhcmd1bWVudHMsIGZ1bmN0aW9uKCl7fSk7CisgIH07CisKKyAgaWYgKCh0eXBlb2YgbW9kdWxl
ICE9PSAidW5kZWZpbmVkIiAmJiBtb2R1bGUgIT09IG51bGwpICYmIChtb2R1bGUuZXhwb3J0cyAh
PSBudWxsKSkgeworICAgIG1vZHVsZS5leHBvcnRzID0gY2hyb21hOworICB9CisKKyAgaWYgKHR5
cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgeworICAgIGRlZmluZShb
XSwgZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gY2hyb21hOworICAgIH0pOworICB9IGVsc2Ug
eworICAgIHJvb3QgPSB0eXBlb2YgZXhwb3J0cyAhPT0gInVuZGVmaW5lZCIgJiYgZXhwb3J0cyAh
PT0gbnVsbCA/IGV4cG9ydHMgOiB0aGlzOworICAgIHJvb3QuY2hyb21hID0gY2hyb21hOworICB9
CisKKyAgY2hyb21hLmNvbG9yID0gZnVuY3Rpb24oeCwgeSwgeiwgbSkgeworICAgIHJldHVybiBu
ZXcgQ29sb3IoeCwgeSwgeiwgbSk7CisgIH07CisKKyAgY2hyb21hLmhzbCA9IGZ1bmN0aW9uKGgs
IHMsIGwsIGEpIHsKKyAgICByZXR1cm4gbmV3IENvbG9yKGgsIHMsIGwsIGEsICdoc2wnKTsKKyAg
fTsKKworICBjaHJvbWEuaHN2ID0gZnVuY3Rpb24oaCwgcywgdiwgYSkgeworICAgIHJldHVybiBu
ZXcgQ29sb3IoaCwgcywgdiwgYSwgJ2hzdicpOworICB9OworCisgIGNocm9tYS5yZ2IgPSBmdW5j
dGlvbihyLCBnLCBiLCBhKSB7CisgICAgcmV0dXJuIG5ldyBDb2xvcihyLCBnLCBiLCBhLCAncmdi
Jyk7CisgIH07CisKKyAgY2hyb21hLmhleCA9IGZ1bmN0aW9uKHgpIHsKKyAgICByZXR1cm4gbmV3
IENvbG9yKHgpOworICB9OworCisgIGNocm9tYS5jc3MgPSBmdW5jdGlvbih4KSB7CisgICAgcmV0
dXJuIG5ldyBDb2xvcih4KTsKKyAgfTsKKworICBjaHJvbWEubGFiID0gZnVuY3Rpb24obCwgYSwg
YikgeworICAgIHJldHVybiBuZXcgQ29sb3IobCwgYSwgYiwgJ2xhYicpOworICB9OworCisgIGNo
cm9tYS5sY2ggPSBmdW5jdGlvbihsLCBjLCBoKSB7CisgICAgcmV0dXJuIG5ldyBDb2xvcihsLCBj
LCBoLCAnbGNoJyk7CisgIH07CisKKyAgY2hyb21hLmhzaSA9IGZ1bmN0aW9uKGgsIHMsIGkpIHsK
KyAgICByZXR1cm4gbmV3IENvbG9yKGgsIHMsIGksICdoc2knKTsKKyAgfTsKKworICBjaHJvbWEu
Z2wgPSBmdW5jdGlvbihyLCBnLCBiLCBhKSB7CisgICAgcmV0dXJuIG5ldyBDb2xvcihyLCBnLCBi
LCBhLCAnZ2wnKTsKKyAgfTsKKworICBjaHJvbWEubnVtID0gZnVuY3Rpb24obikgeworICAgIHJl
dHVybiBuZXcgQ29sb3IobiwgJ251bScpOworICB9OworCisgIGNocm9tYS5jbXlrID0gZnVuY3Rp
b24oKSB7CisgICAgcmV0dXJuIChmdW5jdGlvbihmdW5jLCBhcmdzLCBjdG9yKSB7CisgICAgICBj
dG9yLnByb3RvdHlwZSA9IGZ1bmMucHJvdG90eXBlOworICAgICAgdmFyIGNoaWxkID0gbmV3IGN0
b3IsIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY2hpbGQsIGFyZ3MpOworICAgICAgcmV0dXJuIE9iamVj
dChyZXN1bHQpID09PSByZXN1bHQgPyByZXN1bHQgOiBjaGlsZDsKKyAgICB9KShDb2xvciwgc2xp
Y2UuY2FsbChhcmd1bWVudHMpLmNvbmNhdChbJ2NteWsnXSksIGZ1bmN0aW9uKCl7fSk7CisgIH07
CisKKyAgY2hyb21hLnJhbmRvbSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBjb2RlLCBkaWdpdHMs
IGksIG87CisgICAgZGlnaXRzID0gJzAxMjM0NTY3ODlhYmNkZWYnOworICAgIGNvZGUgPSAnIyc7
CisgICAgZm9yIChpID0gbyA9IDA7IG8gPCA2OyBpID0gKytvKSB7CisgICAgICBjb2RlICs9IGRp
Z2l0cy5jaGFyQXQoZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KSk7CisgICAgfQorICAgIHJldHVy
biBuZXcgQ29sb3IoY29kZSk7CisgIH07CisKKyAgY2hyb21hLmludGVycG9sYXRlID0gZnVuY3Rp
b24oYSwgYiwgZiwgbSkgeworICAgIHZhciByZWYsIHJlZjE7CisgICAgaWYgKChhID09IG51bGwp
IHx8IChiID09IG51bGwpKSB7CisgICAgICByZXR1cm4gJyMwMDAnOworICAgIH0KKyAgICBpZiAo
KHJlZiA9IHR5cGUoYSkpID09PSAnc3RyaW5nJyB8fCByZWYgPT09ICdudW1iZXInKSB7CisgICAg
ICBhID0gbmV3IENvbG9yKGEpOworICAgIH0KKyAgICBpZiAoKHJlZjEgPSB0eXBlKGIpKSA9PT0g
J3N0cmluZycgfHwgcmVmMSA9PT0gJ251bWJlcicpIHsKKyAgICAgIGIgPSBuZXcgQ29sb3IoYik7
CisgICAgfQorICAgIHJldHVybiBhLmludGVycG9sYXRlKGYsIGIsIG0pOworICB9OworCisgIGNo
cm9tYS5taXggPSBjaHJvbWEuaW50ZXJwb2xhdGU7CisKKyAgY2hyb21hLmNvbnRyYXN0ID0gZnVu
Y3Rpb24oYSwgYikgeworICAgIHZhciBsMSwgbDIsIHJlZiwgcmVmMTsKKyAgICBpZiAoKHJlZiA9
IHR5cGUoYSkpID09PSAnc3RyaW5nJyB8fCByZWYgPT09ICdudW1iZXInKSB7CisgICAgICBhID0g
bmV3IENvbG9yKGEpOworICAgIH0KKyAgICBpZiAoKHJlZjEgPSB0eXBlKGIpKSA9PT0gJ3N0cmlu
ZycgfHwgcmVmMSA9PT0gJ251bWJlcicpIHsKKyAgICAgIGIgPSBuZXcgQ29sb3IoYik7CisgICAg
fQorICAgIGwxID0gYS5sdW1pbmFuY2UoKTsKKyAgICBsMiA9IGIubHVtaW5hbmNlKCk7CisgICAg
aWYgKGwxID4gbDIpIHsKKyAgICAgIHJldHVybiAobDEgKyAwLjA1KSAvIChsMiArIDAuMDUpOwor
ICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gKGwyICsgMC4wNSkgLyAobDEgKyAwLjA1KTsKKyAg
ICB9CisgIH07CisKKyAgY2hyb21hLmx1bWluYW5jZSA9IGZ1bmN0aW9uKGNvbG9yKSB7CisgICAg
cmV0dXJuIGNocm9tYShjb2xvcikubHVtaW5hbmNlKCk7CisgIH07CisKKyAgY2hyb21hLmtlbHZp
biA9IGZ1bmN0aW9uKGspIHsKKyAgICByZXR1cm4gY2hyb21hKHRlbXAycmdiKGspLCAncmdiJyk7
CisgIH07CisKKyAgY2hyb21hLnZlcnNpb24gPSAnMC44LjAnOworCisgIGNocm9tYS5fQ29sb3Ig
PSBDb2xvcjsKKworCisgIC8qKgorICAgICAgY2hyb21hLmpzCisgIAorICAgICAgQ29weXJpZ2h0
IChjKSAyMDExLTIwMTMsIEdyZWdvciBBaXNjaAorICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAgCisgICAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICAKKyAgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzCisgICAgICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAKKyAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAg
ICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICAKKyAgICAgICogVGhlIG5hbWUgR3JlZ29y
IEFpc2NoIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAg
ICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgIAorICAgICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgICAgICBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgICAgICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAgICAgIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdSRUdPUiBBSVNDSCBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULAorICAgICAgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCisgICAg
ICBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICAgICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICAgICAg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAgICAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKKyAgICAgIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgIAorICAgICAgQHNv
dXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2drYS9jaHJvbWEuanMKKyAgICovCisKKyAgQ29sb3Ig
PSAoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gQ29sb3IoKSB7CisgICAgICB2YXIgYSwgYXJn
LCBhcmdzLCBsZW4sIG0sIG1lLCBtZV9yZ2IsIG8sIHJlZiwgcmVmMSwgcmVmMiwgcmVmMywgcmVm
NCwgeCwgeSwgejsKKyAgICAgIG1lID0gdGhpczsKKyAgICAgIGFyZ3MgPSBbXTsKKyAgICAgIGZv
ciAobyA9IDAsIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7IG8gPCBsZW47IG8rKykgeworICAgICAg
ICBhcmcgPSBhcmd1bWVudHNbb107CisgICAgICAgIGlmIChhcmcgIT0gbnVsbCkgeworICAgICAg
ICAgIGFyZ3MucHVzaChhcmcpOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoYXJncy5s
ZW5ndGggPT09IDApIHsKKyAgICAgICAgcmVmID0gWzI1NSwgMCwgMjU1LCAxLCAncmdiJ10sIHgg
PSByZWZbMF0sIHkgPSByZWZbMV0sIHogPSByZWZbMl0sIGEgPSByZWZbM10sIG0gPSByZWZbNF07
CisgICAgICB9IGVsc2UgaWYgKHR5cGUoYXJnc1swXSkgPT09ICJhcnJheSIpIHsKKyAgICAgICAg
aWYgKGFyZ3NbMF0ubGVuZ3RoID09PSAzKSB7CisgICAgICAgICAgcmVmMSA9IGFyZ3NbMF0sIHgg
PSByZWYxWzBdLCB5ID0gcmVmMVsxXSwgeiA9IHJlZjFbMl07CisgICAgICAgICAgYSA9IDE7Cisg
ICAgICAgIH0gZWxzZSBpZiAoYXJnc1swXS5sZW5ndGggPT09IDQpIHsKKyAgICAgICAgICByZWYy
ID0gYXJnc1swXSwgeCA9IHJlZjJbMF0sIHkgPSByZWYyWzFdLCB6ID0gcmVmMlsyXSwgYSA9IHJl
ZjJbM107CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhyb3cgJ3Vua25vd24gaW5wdXQg
YXJndW1lbnQnOworICAgICAgICB9CisgICAgICAgIG0gPSAocmVmMyA9IGFyZ3NbMV0pICE9IG51
bGwgPyByZWYzIDogJ3JnYic7CisgICAgICB9IGVsc2UgaWYgKHR5cGUoYXJnc1swXSkgPT09ICJz
dHJpbmciKSB7CisgICAgICAgIHggPSBhcmdzWzBdOworICAgICAgICBtID0gJ2hleCc7CisgICAg
ICB9IGVsc2UgaWYgKHR5cGUoYXJnc1swXSkgPT09ICJvYmplY3QiKSB7CisgICAgICAgIHJlZjQg
PSBhcmdzWzBdLl9yZ2IsIHggPSByZWY0WzBdLCB5ID0gcmVmNFsxXSwgeiA9IHJlZjRbMl0sIGEg
PSByZWY0WzNdOworICAgICAgICBtID0gJ3JnYic7CisgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVu
Z3RoIDw9IDIgJiYgdHlwZShhcmdzWzBdKSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgeCA9IGFy
Z3NbMF07CisgICAgICAgIG0gPSAnbnVtJzsKKyAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGgg
Pj0gMykgeworICAgICAgICB4ID0gYXJnc1swXTsKKyAgICAgICAgeSA9IGFyZ3NbMV07CisgICAg
ICAgIHogPSBhcmdzWzJdOworICAgICAgfQorICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAzKSB7
CisgICAgICAgIG0gPSAncmdiJzsKKyAgICAgICAgYSA9IDE7CisgICAgICB9IGVsc2UgaWYgKGFy
Z3MubGVuZ3RoID09PSA0KSB7CisgICAgICAgIGlmICh0eXBlKGFyZ3NbM10pID09PSAic3RyaW5n
IikgeworICAgICAgICAgIG0gPSBhcmdzWzNdOworICAgICAgICAgIGEgPSAxOworICAgICAgICB9
IGVsc2UgaWYgKHR5cGUoYXJnc1szXSkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgbSA9ICdy
Z2InOworICAgICAgICAgIGEgPSBhcmdzWzNdOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYg
KGFyZ3MubGVuZ3RoID09PSA1KSB7CisgICAgICAgIGEgPSBhcmdzWzNdOworICAgICAgICBtID0g
YXJnc1s0XTsKKyAgICAgIH0KKyAgICAgIGlmIChtICE9PSAnY215aycpIHsKKyAgICAgICAgaWYg
KGEgPT0gbnVsbCkgeworICAgICAgICAgIGEgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBpZiAobSA9PT0gJ3JnYicpIHsKKyAgICAgICAgbWUuX3JnYiA9IFt4LCB5LCB6LCBhXTsKKyAg
ICAgIH0gZWxzZSBpZiAobSA9PT0gJ2dsJykgeworICAgICAgICBtZS5fcmdiID0gW3ggKiAyNTUs
IHkgKiAyNTUsIHogKiAyNTUsIGFdOworICAgICAgfSBlbHNlIGlmIChtID09PSAnaHNsJykgewor
ICAgICAgICBtZS5fcmdiID0gaHNsMnJnYih4LCB5LCB6KTsKKyAgICAgICAgbWUuX3JnYlszXSA9
IGE7CisgICAgICB9IGVsc2UgaWYgKG0gPT09ICdoc3YnKSB7CisgICAgICAgIG1lLl9yZ2IgPSBo
c3YycmdiKHgsIHksIHopOworICAgICAgICBtZS5fcmdiWzNdID0gYTsKKyAgICAgIH0gZWxzZSBp
ZiAobSA9PT0gJ2hleCcpIHsKKyAgICAgICAgbWUuX3JnYiA9IGhleDJyZ2IoeCk7CisgICAgICB9
IGVsc2UgaWYgKG0gPT09ICdsYWInKSB7CisgICAgICAgIG1lLl9yZ2IgPSBsYWIycmdiKHgsIHks
IHopOworICAgICAgICBtZS5fcmdiWzNdID0gYTsKKyAgICAgIH0gZWxzZSBpZiAobSA9PT0gJ2xj
aCcpIHsKKyAgICAgICAgbWUuX3JnYiA9IGxjaDJyZ2IoeCwgeSwgeik7CisgICAgICAgIG1lLl9y
Z2JbM10gPSBhOworICAgICAgfSBlbHNlIGlmIChtID09PSAnaHNpJykgeworICAgICAgICBtZS5f
cmdiID0gaHNpMnJnYih4LCB5LCB6KTsKKyAgICAgICAgbWUuX3JnYlszXSA9IGE7CisgICAgICB9
IGVsc2UgaWYgKG0gPT09ICdudW0nKSB7CisgICAgICAgIG1lLl9yZ2IgPSBudW0ycmdiKHgpOwor
ICAgICAgfSBlbHNlIGlmIChtID09PSAnY215aycpIHsKKyAgICAgICAgbWUuX3JnYiA9IGNteWsy
cmdiKHgsIHksIHosIGEpOworICAgICAgfQorICAgICAgbWVfcmdiID0gY2xpcF9yZ2IobWUuX3Jn
Yik7CisgICAgfQorCisgICAgQ29sb3IucHJvdG90eXBlLnJnYiA9IGZ1bmN0aW9uKCkgeworICAg
ICAgcmV0dXJuIHRoaXMuX3JnYi5zbGljZSgwLCAzKTsKKyAgICB9OworCisgICAgQ29sb3IucHJv
dG90eXBlLnJnYmEgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0aGlzLl9yZ2I7CisgICAg
fTsKKworICAgIENvbG9yLnByb3RvdHlwZS5oZXggPSBmdW5jdGlvbihtb2RlKSB7CisgICAgICBp
ZiAobW9kZSA9PSBudWxsKSB7CisgICAgICAgIG1vZGUgPSAncmdiJzsKKyAgICAgIH0KKyAgICAg
IHJldHVybiByZ2IyaGV4KHRoaXMuX3JnYiwgbW9kZSk7CisgICAgfTsKKworICAgIENvbG9yLnBy
b3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRoaXMubmFtZSgp
OworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUuaHNsID0gZnVuY3Rpb24oKSB7CisgICAg
ICByZXR1cm4gcmdiMmhzbCh0aGlzLl9yZ2IpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5
cGUuaHN2ID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gcmdiMmhzdih0aGlzLl9yZ2IpOwor
ICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUubGFiID0gZnVuY3Rpb24oKSB7CisgICAgICBy
ZXR1cm4gcmdiMmxhYih0aGlzLl9yZ2IpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUu
bGNoID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gcmdiMmxjaCh0aGlzLl9yZ2IpOworICAg
IH07CisKKyAgICBDb2xvci5wcm90b3R5cGUuaHNpID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1
cm4gcmdiMmhzaSh0aGlzLl9yZ2IpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUuZ2wg
PSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBbdGhpcy5fcmdiWzBdIC8gMjU1LCB0aGlzLl9y
Z2JbMV0gLyAyNTUsIHRoaXMuX3JnYlsyXSAvIDI1NSwgdGhpcy5fcmdiWzNdXTsKKyAgICB9Owor
CisgICAgQ29sb3IucHJvdG90eXBlLm51bSA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHJn
YjJudW0odGhpcy5fcmdiKTsKKyAgICB9OworCisgICAgQ29sb3IucHJvdG90eXBlLmx1bWluYW5j
ZSA9IGZ1bmN0aW9uKGx1bSwgbW9kZSkgeworICAgICAgdmFyIGN1cl9sdW0sIGVwcywgbWF4X2l0
ZXIsIHRlc3Q7CisgICAgICBpZiAobW9kZSA9PSBudWxsKSB7CisgICAgICAgIG1vZGUgPSAncmdi
JzsKKyAgICAgIH0KKyAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICByZXR1
cm4gbHVtaW5hbmNlKHRoaXMuX3JnYik7CisgICAgICB9CisgICAgICBpZiAobHVtID09PSAwKSB7
CisgICAgICAgIHRoaXMuX3JnYiA9IFswLCAwLCAwLCB0aGlzLl9yZ2JbM11dOworICAgICAgfQor
ICAgICAgaWYgKGx1bSA9PT0gMSkgeworICAgICAgICB0aGlzLl9yZ2IgPSBbMjU1LCAyNTUsIDI1
NSwgdGhpcy5fcmdiWzNdXTsKKyAgICAgIH0KKyAgICAgIGN1cl9sdW0gPSBsdW1pbmFuY2UodGhp
cy5fcmdiKTsKKyAgICAgIGVwcyA9IDFlLTc7CisgICAgICBtYXhfaXRlciA9IDIwOworICAgICAg
dGVzdCA9IGZ1bmN0aW9uKGwsIGgpIHsKKyAgICAgICAgdmFyIGxtLCBtOworICAgICAgICBtID0g
bC5pbnRlcnBvbGF0ZSgwLjUsIGgsIG1vZGUpOworICAgICAgICBsbSA9IG0ubHVtaW5hbmNlKCk7
CisgICAgICAgIGlmIChNYXRoLmFicyhsdW0gLSBsbSkgPCBlcHMgfHwgIW1heF9pdGVyLS0pIHsK
KyAgICAgICAgICByZXR1cm4gbTsKKyAgICAgICAgfQorICAgICAgICBpZiAobG0gPiBsdW0pIHsK
KyAgICAgICAgICByZXR1cm4gdGVzdChsLCBtKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
dGVzdChtLCBoKTsKKyAgICAgIH07CisgICAgICB0aGlzLl9yZ2IgPSAoY3VyX2x1bSA+IGx1bSA/
IHRlc3QobmV3IENvbG9yKCdibGFjaycpLCB0aGlzKSA6IHRlc3QodGhpcywgbmV3IENvbG9yKCd3
aGl0ZScpKSkucmdiYSgpOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfTsKKworICAgIENvbG9y
LnByb3RvdHlwZS5uYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgaCwgazsKKyAgICAgIGgg
PSB0aGlzLmhleCgpOworICAgICAgZm9yIChrIGluIGNocm9tYS5jb2xvcnMpIHsKKyAgICAgICAg
aWYgKGggPT09IGNocm9tYS5jb2xvcnNba10pIHsKKyAgICAgICAgICByZXR1cm4gazsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGg7CisgICAgfTsKKworICAgIENvbG9yLnByb3Rv
dHlwZS5hbHBoYSA9IGZ1bmN0aW9uKGFscGhhKSB7CisgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0
aCkgeworICAgICAgICB0aGlzLl9yZ2JbM10gPSBhbHBoYTsKKyAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICB9CisgICAgICByZXR1cm4gdGhpcy5fcmdiWzNdOworICAgIH07CisKKyAgICBDb2xv
ci5wcm90b3R5cGUuY3NzID0gZnVuY3Rpb24obW9kZSkgeworICAgICAgdmFyIGhzbCwgbWUsIHJn
Yiwgcm5kOworICAgICAgaWYgKG1vZGUgPT0gbnVsbCkgeworICAgICAgICBtb2RlID0gJ3JnYic7
CisgICAgICB9CisgICAgICBtZSA9IHRoaXM7CisgICAgICByZ2IgPSBtZS5fcmdiOworICAgICAg
aWYgKG1vZGUubGVuZ3RoID09PSAzICYmIHJnYlszXSA8IDEpIHsKKyAgICAgICAgbW9kZSArPSAn
YSc7CisgICAgICB9CisgICAgICBpZiAobW9kZSA9PT0gJ3JnYicpIHsKKyAgICAgICAgcmV0dXJu
IG1vZGUgKyAnKCcgKyByZ2Iuc2xpY2UoMCwgMykubWFwKHJvdW5kKS5qb2luKCcsJykgKyAnKSc7
CisgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdyZ2JhJykgeworICAgICAgICByZXR1cm4gbW9k
ZSArICcoJyArIHJnYi5zbGljZSgwLCAzKS5tYXAocm91bmQpLmpvaW4oJywnKSArICcsJyArIHJn
YlszXSArICcpJzsKKyAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2hzbCcgfHwgbW9kZSA9PT0g
J2hzbGEnKSB7CisgICAgICAgIGhzbCA9IG1lLmhzbCgpOworICAgICAgICBybmQgPSBmdW5jdGlv
bihhKSB7CisgICAgICAgICAgcmV0dXJuIHJvdW5kKGEgKiAxMDApIC8gMTAwOworICAgICAgICB9
OworICAgICAgICBoc2xbMF0gPSBybmQoaHNsWzBdIHx8IDApOworICAgICAgICBoc2xbMV0gPSBy
bmQoaHNsWzFdICogMTAwKSArICclJzsKKyAgICAgICAgaHNsWzJdID0gcm5kKGhzbFsyXSAqIDEw
MCkgKyAnJSc7CisgICAgICAgIGlmIChtb2RlLmxlbmd0aCA9PT0gNCkgeworICAgICAgICAgIGhz
bFszXSA9IHJnYlszXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbW9kZSArICcoJyArIGhz
bC5qb2luKCcsJykgKyAnKSc7CisgICAgICB9CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlw
ZS5pbnRlcnBvbGF0ZSA9IGZ1bmN0aW9uKGYsIGNvbCwgbSkgeworCisgICAgICAvKgorICAgICAg
aW50ZXJwb2xhdGVzIGJldHdlZW4gY29sb3JzCisgICAgICBmID0gMCAtLT4gbWUKKyAgICAgIGYg
PSAxIC0tPiBjb2wKKyAgICAgICAqLworICAgICAgdmFyIGRoLCBodWUsIGh1ZTAsIGh1ZTEsIGxi
diwgbGJ2MCwgbGJ2MSwgbWUsIHJlcywgc2F0LCBzYXQwLCBzYXQxLCB4eXowLCB4eXoxOworICAg
ICAgbWUgPSB0aGlzOworICAgICAgaWYgKG0gPT0gbnVsbCkgeworICAgICAgICBtID0gJ3JnYic7
CisgICAgICB9CisgICAgICBpZiAodHlwZShjb2wpID09PSAic3RyaW5nIikgeworICAgICAgICBj
b2wgPSBuZXcgQ29sb3IoY29sKTsKKyAgICAgIH0KKyAgICAgIGlmIChtID09PSAnaHNsJyB8fCBt
ID09PSAnaHN2JyB8fCBtID09PSAnbGNoJyB8fCBtID09PSAnaHNpJykgeworICAgICAgICBpZiAo
bSA9PT0gJ2hzbCcpIHsKKyAgICAgICAgICB4eXowID0gbWUuaHNsKCk7CisgICAgICAgICAgeHl6
MSA9IGNvbC5oc2woKTsKKyAgICAgICAgfSBlbHNlIGlmIChtID09PSAnaHN2JykgeworICAgICAg
ICAgIHh5ejAgPSBtZS5oc3YoKTsKKyAgICAgICAgICB4eXoxID0gY29sLmhzdigpOworICAgICAg
ICB9IGVsc2UgaWYgKG0gPT09ICdoc2knKSB7CisgICAgICAgICAgeHl6MCA9IG1lLmhzaSgpOwor
ICAgICAgICAgIHh5ejEgPSBjb2wuaHNpKCk7CisgICAgICAgIH0gZWxzZSBpZiAobSA9PT0gJ2xj
aCcpIHsKKyAgICAgICAgICB4eXowID0gbWUubGNoKCk7CisgICAgICAgICAgeHl6MSA9IGNvbC5s
Y2goKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobS5zdWJzdHIoMCwgMSkgPT09ICdoJykgewor
ICAgICAgICAgIGh1ZTAgPSB4eXowWzBdLCBzYXQwID0geHl6MFsxXSwgbGJ2MCA9IHh5ejBbMl07
CisgICAgICAgICAgaHVlMSA9IHh5ejFbMF0sIHNhdDEgPSB4eXoxWzFdLCBsYnYxID0geHl6MVsy
XTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBsYnYwID0geHl6MFswXSwgc2F0MCA9IHh5
ejBbMV0sIGh1ZTAgPSB4eXowWzJdOworICAgICAgICAgIGxidjEgPSB4eXoxWzBdLCBzYXQxID0g
eHl6MVsxXSwgaHVlMSA9IHh5ejFbMl07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpc05hTiho
dWUwKSAmJiAhaXNOYU4oaHVlMSkpIHsKKyAgICAgICAgICBpZiAoaHVlMSA+IGh1ZTAgJiYgaHVl
MSAtIGh1ZTAgPiAxODApIHsKKyAgICAgICAgICAgIGRoID0gaHVlMSAtIChodWUwICsgMzYwKTsK
KyAgICAgICAgICB9IGVsc2UgaWYgKGh1ZTEgPCBodWUwICYmIGh1ZTAgLSBodWUxID4gMTgwKSB7
CisgICAgICAgICAgICBkaCA9IGh1ZTEgKyAzNjAgLSBodWUwOworICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBkaCA9IGh1ZTEgLSBodWUwOworICAgICAgICAgIH0KKyAgICAgICAgICBo
dWUgPSBodWUwICsgZiAqIGRoOworICAgICAgICB9IGVsc2UgaWYgKCFpc05hTihodWUwKSkgewor
ICAgICAgICAgIGh1ZSA9IGh1ZTA7CisgICAgICAgICAgaWYgKChsYnYxID09PSAxIHx8IGxidjEg
PT09IDApICYmIG0gIT09ICdoc3YnKSB7CisgICAgICAgICAgICBzYXQgPSBzYXQwOworICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghaXNOYU4oaHVlMSkpIHsKKyAgICAgICAgICBodWUg
PSBodWUxOworICAgICAgICAgIGlmICgobGJ2MCA9PT0gMSB8fCBsYnYwID09PSAwKSAmJiBtICE9
PSAnaHN2JykgeworICAgICAgICAgICAgc2F0ID0gc2F0MTsKKyAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgaHVlID0gTnVtYmVyLk5hTjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoc2F0ID09IG51bGwpIHsKKyAgICAgICAgICBzYXQgPSBzYXQwICsgZiAqIChzYXQxIC0g
c2F0MCk7CisgICAgICAgIH0KKyAgICAgICAgbGJ2ID0gbGJ2MCArIGYgKiAobGJ2MSAtIGxidjAp
OworICAgICAgICBpZiAobS5zdWJzdHIoMCwgMSkgPT09ICdoJykgeworICAgICAgICAgIHJlcyA9
IG5ldyBDb2xvcihodWUsIHNhdCwgbGJ2LCBtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICByZXMgPSBuZXcgQ29sb3IobGJ2LCBzYXQsIGh1ZSwgbSk7CisgICAgICAgIH0KKyAgICAgIH0g
ZWxzZSBpZiAobSA9PT0gJ3JnYicpIHsKKyAgICAgICAgeHl6MCA9IG1lLl9yZ2I7CisgICAgICAg
IHh5ejEgPSBjb2wuX3JnYjsKKyAgICAgICAgcmVzID0gbmV3IENvbG9yKHh5ejBbMF0gKyBmICog
KHh5ejFbMF0gLSB4eXowWzBdKSwgeHl6MFsxXSArIGYgKiAoeHl6MVsxXSAtIHh5ejBbMV0pLCB4
eXowWzJdICsgZiAqICh4eXoxWzJdIC0geHl6MFsyXSksIG0pOworICAgICAgfSBlbHNlIGlmICht
ID09PSAnbnVtJykgeworICAgICAgICBpZiAoIShjb2wgaW5zdGFuY2VvZiBDb2xvcikpIHsKKyAg
ICAgICAgICBjb2wgPSBuZXcgQ29sb3IoY29sLCBtKTsKKyAgICAgICAgfQorICAgICAgICB4eXow
ID0gbWUuX3JnYjsKKyAgICAgICAgeHl6MSA9IGNvbC5fcmdiOworICAgICAgICByZXMgPSBuZXcg
Q29sb3IoKCh4eXowWzBdICsgZiAqICh4eXoxWzBdIC0geHl6MFswXSkpIDw8IDE2KSArICgoeHl6
MFsxXSArIGYgKiAoeHl6MVsxXSAtIHh5ejBbMV0pKSA8PCA4KSArICgoeHl6MFsyXSArIGYgKiAo
eHl6MVsyXSAtIHh5ejBbMl0pKSAmIDB4ZmYpLCBtKTsKKyAgICAgIH0gZWxzZSBpZiAobSA9PT0g
J2xhYicpIHsKKyAgICAgICAgeHl6MCA9IG1lLmxhYigpOworICAgICAgICB4eXoxID0gY29sLmxh
YigpOworICAgICAgICByZXMgPSBuZXcgQ29sb3IoeHl6MFswXSArIGYgKiAoeHl6MVswXSAtIHh5
ejBbMF0pLCB4eXowWzFdICsgZiAqICh4eXoxWzFdIC0geHl6MFsxXSksIHh5ejBbMl0gKyBmICog
KHh5ejFbMl0gLSB4eXowWzJdKSwgbSk7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aHJvdyAi
Y29sb3IgbW9kZSAiICsgbSArICIgaXMgbm90IHN1cHBvcnRlZCI7CisgICAgICB9CisgICAgICBy
ZXMuYWxwaGEobWUuYWxwaGEoKSArIGYgKiAoY29sLmFscGhhKCkgLSBtZS5hbHBoYSgpKSk7Cisg
ICAgICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUubWl4ID0gZnVu
Y3Rpb24oZiwgY29sLCBtKSB7CisgICAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZShmLCBjb2ws
IG0pOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUucHJlbXVsdGlwbHkgPSBmdW5jdGlv
bigpIHsKKyAgICAgIHZhciBhLCByZ2I7CisgICAgICByZ2IgPSB0aGlzLnJnYigpOworICAgICAg
YSA9IHRoaXMuYWxwaGEoKTsKKyAgICAgIHJldHVybiBjaHJvbWEocmdiWzBdICogYSwgcmdiWzFd
ICogYSwgcmdiWzJdICogYSwgYSk7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5kYXJr
ZW4gPSBmdW5jdGlvbihhbW91bnQpIHsKKyAgICAgIHZhciBsY2gsIG1lOworICAgICAgaWYgKGFt
b3VudCA9PSBudWxsKSB7CisgICAgICAgIGFtb3VudCA9IDIwOworICAgICAgfQorICAgICAgbWUg
PSB0aGlzOworICAgICAgbGNoID0gbWUubGNoKCk7CisgICAgICBsY2hbMF0gLT0gYW1vdW50Owor
ICAgICAgcmV0dXJuIGNocm9tYS5sY2gobGNoKS5hbHBoYShtZS5hbHBoYSgpKTsKKyAgICB9Owor
CisgICAgQ29sb3IucHJvdG90eXBlLmRhcmtlciA9IGZ1bmN0aW9uKGFtb3VudCkgeworICAgICAg
cmV0dXJuIHRoaXMuZGFya2VuKGFtb3VudCk7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlw
ZS5icmlnaHRlbiA9IGZ1bmN0aW9uKGFtb3VudCkgeworICAgICAgaWYgKGFtb3VudCA9PSBudWxs
KSB7CisgICAgICAgIGFtb3VudCA9IDIwOworICAgICAgfQorICAgICAgcmV0dXJuIHRoaXMuZGFy
a2VuKC1hbW91bnQpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUuYnJpZ2h0ZXIgPSBm
dW5jdGlvbihhbW91bnQpIHsKKyAgICAgIHJldHVybiB0aGlzLmJyaWdodGVuKGFtb3VudCk7Cisg
ICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5zYXR1cmF0ZSA9IGZ1bmN0aW9uKGFtb3VudCkg
eworICAgICAgdmFyIGxjaCwgbWU7CisgICAgICBpZiAoYW1vdW50ID09IG51bGwpIHsKKyAgICAg
ICAgYW1vdW50ID0gMjA7CisgICAgICB9CisgICAgICBtZSA9IHRoaXM7CisgICAgICBsY2ggPSBt
ZS5sY2goKTsKKyAgICAgIGxjaFsxXSArPSBhbW91bnQ7CisgICAgICByZXR1cm4gY2hyb21hLmxj
aChsY2gpLmFscGhhKG1lLmFscGhhKCkpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUu
ZGVzYXR1cmF0ZSA9IGZ1bmN0aW9uKGFtb3VudCkgeworICAgICAgaWYgKGFtb3VudCA9PSBudWxs
KSB7CisgICAgICAgIGFtb3VudCA9IDIwOworICAgICAgfQorICAgICAgcmV0dXJuIHRoaXMuc2F0
dXJhdGUoLWFtb3VudCk7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5ibGVuZCA9IGZ1
bmN0aW9uKGNvbCwgbW9kZSkgeworICAgICAgcmV0dXJuIGNocm9tYS5ibGVuZCh0aGlzLCBjb2ws
IG1vZGUpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUua2VsdmluID0gZnVuY3Rpb24o
KSB7CisgICAgICByZXR1cm4gcmdiMnRlbXAodGhpcy5fcmdiKTsKKyAgICB9OworCisgICAgQ29s
b3IucHJvdG90eXBlLmNteWsgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiByZ2IyY215ayh0
aGlzLl9yZ2IpOworICAgIH07CisKKyAgICByZXR1cm4gQ29sb3I7CisKKyAgfSkoKTsKKworICBj
bGlwX3JnYiA9IGZ1bmN0aW9uKHJnYikgeworICAgIHZhciBpOworICAgIGZvciAoaSBpbiByZ2Ip
IHsKKyAgICAgIGlmIChpIDwgMykgeworICAgICAgICBpZiAocmdiW2ldIDwgMCkgeworICAgICAg
ICAgIHJnYltpXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJnYltpXSA+IDI1NSkgewor
ICAgICAgICAgIHJnYltpXSA9IDI1NTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChpID09
PSAzKSB7CisgICAgICAgIGlmIChyZ2JbaV0gPCAwKSB7CisgICAgICAgICAgcmdiW2ldID0gMDsK
KyAgICAgICAgfQorICAgICAgICBpZiAocmdiW2ldID4gMSkgeworICAgICAgICAgIHJnYltpXSA9
IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJnYjsKKyAgfTsKKwor
ICByZ2IyY215ayA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBiLCBjLCBmLCBnLCBrLCBtLCByLCBy
ZWYsIHk7CisgICAgcmVmID0gdW5wYWNrKGFyZ3VtZW50cyksIHIgPSByZWZbMF0sIGcgPSByZWZb
MV0sIGIgPSByZWZbMl07CisgICAgciA9IHIgLyAyNTU7CisgICAgZyA9IGcgLyAyNTU7CisgICAg
YiA9IGIgLyAyNTU7CisgICAgayA9IDEgLSBNYXRoLm1heChyLCBNYXRoLm1heChnLCBiKSk7Cisg
ICAgZiA9IGsgPCAxID8gMSAvICgxIC0gaykgOiAwOworICAgIGMgPSAoMSAtIHIgLSBrKSAqIGY7
CisgICAgbSA9ICgxIC0gZyAtIGspICogZjsKKyAgICB5ID0gKDEgLSBiIC0gaykgKiBmOworICAg
IHJldHVybiBbYywgbSwgeSwga107CisgIH07CisKKyAgY215azJyZ2IgPSBmdW5jdGlvbigpIHsK
KyAgICB2YXIgYiwgYywgZywgaywgbSwgciwgcmVmLCB5OworICAgIHJlZiA9IHVucGFjayhhcmd1
bWVudHMpLCBjID0gcmVmWzBdLCBtID0gcmVmWzFdLCB5ID0gcmVmWzJdLCBrID0gcmVmWzNdOwor
ICAgIGlmIChrID09PSAxKSB7CisgICAgICByZXR1cm4gWzAsIDAsIDBdOworICAgIH0KKyAgICBy
ID0gYyA+PSAxID8gMCA6IHJvdW5kKDI1NSAqICgxIC0gYykgKiAoMSAtIGspKTsKKyAgICBnID0g
bSA+PSAxID8gMCA6IHJvdW5kKDI1NSAqICgxIC0gbSkgKiAoMSAtIGspKTsKKyAgICBiID0geSA+
PSAxID8gMCA6IHJvdW5kKDI1NSAqICgxIC0geSkgKiAoMSAtIGspKTsKKyAgICByZXR1cm4gW3Is
IGcsIGJdOworICB9OworCisgIGNzczJyZ2IgPSBmdW5jdGlvbihjc3MpIHsKKyAgICB2YXIgYWEs
IGFiLCBoc2wsIGksIG0sIG8sIHJnYiwgdzsKKyAgICBjc3MgPSBjc3MudG9Mb3dlckNhc2UoKTsK
KyAgICBpZiAoKGNocm9tYS5jb2xvcnMgIT0gbnVsbCkgJiYgY2hyb21hLmNvbG9yc1tjc3NdKSB7
CisgICAgICByZXR1cm4gaGV4MnJnYihjaHJvbWEuY29sb3JzW2Nzc10pOworICAgIH0KKyAgICBp
ZiAobSA9IGNzcy5tYXRjaCgvcmdiXChccyooXC0/XGQrKSxccyooXC0/XGQrKVxzKixccyooXC0/
XGQrKVxzKlwpLykpIHsKKyAgICAgIHJnYiA9IG0uc2xpY2UoMSwgNCk7CisgICAgICBmb3IgKGkg
PSBvID0gMDsgbyA8PSAyOyBpID0gKytvKSB7CisgICAgICAgIHJnYltpXSA9ICtyZ2JbaV07Cisg
ICAgICB9CisgICAgICByZ2JbM10gPSAxOworICAgIH0gZWxzZSBpZiAobSA9IGNzcy5tYXRjaCgv
cmdiYVwoXHMqKFwtP1xkKyksXHMqKFwtP1xkKylccyosXHMqKFwtP1xkKylccyosXHMqKFswMV18
WzAxXT9cLlxkKylcKS8pKSB7CisgICAgICByZ2IgPSBtLnNsaWNlKDEsIDUpOworICAgICAgZm9y
IChpID0gdyA9IDA7IHcgPD0gMzsgaSA9ICsrdykgeworICAgICAgICByZ2JbaV0gPSArcmdiW2ld
OworICAgICAgfQorICAgIH0gZWxzZSBpZiAobSA9IGNzcy5tYXRjaCgvcmdiXChccyooXC0/XGQr
KD86XC5cZCspPyklLFxzKihcLT9cZCsoPzpcLlxkKyk/KSVccyosXHMqKFwtP1xkKyg/OlwuXGQr
KT8pJVxzKlwpLykpIHsKKyAgICAgIHJnYiA9IG0uc2xpY2UoMSwgNCk7CisgICAgICBmb3IgKGkg
PSBhYSA9IDA7IGFhIDw9IDI7IGkgPSArK2FhKSB7CisgICAgICAgIHJnYltpXSA9IHJvdW5kKHJn
YltpXSAqIDIuNTUpOworICAgICAgfQorICAgICAgcmdiWzNdID0gMTsKKyAgICB9IGVsc2UgaWYg
KG0gPSBjc3MubWF0Y2goL3JnYmFcKFxzKihcLT9cZCsoPzpcLlxkKyk/KSUsXHMqKFwtP1xkKyg/
OlwuXGQrKT8pJVxzKixccyooXC0/XGQrKD86XC5cZCspPyklXHMqLFxzKihbMDFdfFswMV0/XC5c
ZCspXCkvKSkgeworICAgICAgcmdiID0gbS5zbGljZSgxLCA1KTsKKyAgICAgIGZvciAoaSA9IGFi
ID0gMDsgYWIgPD0gMjsgaSA9ICsrYWIpIHsKKyAgICAgICAgcmdiW2ldID0gcm91bmQocmdiW2ld
ICogMi41NSk7CisgICAgICB9CisgICAgICByZ2JbM10gPSArcmdiWzNdOworICAgIH0gZWxzZSBp
ZiAobSA9IGNzcy5tYXRjaCgvaHNsXChccyooXC0/XGQrKD86XC5cZCspPyksXHMqKFwtP1xkKyg/
OlwuXGQrKT8pJVxzKixccyooXC0/XGQrKD86XC5cZCspPyklXHMqXCkvKSkgeworICAgICAgaHNs
ID0gbS5zbGljZSgxLCA0KTsKKyAgICAgIGhzbFsxXSAqPSAwLjAxOworICAgICAgaHNsWzJdICo9
IDAuMDE7CisgICAgICByZ2IgPSBoc2wycmdiKGhzbCk7CisgICAgICByZ2JbM10gPSAxOworICAg
IH0gZWxzZSBpZiAobSA9IGNzcy5tYXRjaCgvaHNsYVwoXHMqKFwtP1xkKyg/OlwuXGQrKT8pLFxz
KihcLT9cZCsoPzpcLlxkKyk/KSVccyosXHMqKFwtP1xkKyg/OlwuXGQrKT8pJVxzKixccyooWzAx
XXxbMDFdP1wuXGQrKVwpLykpIHsKKyAgICAgIGhzbCA9IG0uc2xpY2UoMSwgNCk7CisgICAgICBo
c2xbMV0gKj0gMC4wMTsKKyAgICAgIGhzbFsyXSAqPSAwLjAxOworICAgICAgcmdiID0gaHNsMnJn
Yihoc2wpOworICAgICAgcmdiWzNdID0gK21bNF07CisgICAgfQorICAgIHJldHVybiByZ2I7Cisg
IH07CisKKyAgaGV4MnJnYiA9IGZ1bmN0aW9uKGhleCkgeworICAgIHZhciBhLCBiLCBnLCByLCBy
Z2IsIHU7CisgICAgaWYgKGhleC5tYXRjaCgvXiM/KFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTld
ezN9KSQvKSkgeworICAgICAgaWYgKGhleC5sZW5ndGggPT09IDQgfHwgaGV4Lmxlbmd0aCA9PT0g
NykgeworICAgICAgICBoZXggPSBoZXguc3Vic3RyKDEpOworICAgICAgfQorICAgICAgaWYgKGhl
eC5sZW5ndGggPT09IDMpIHsKKyAgICAgICAgaGV4ID0gaGV4LnNwbGl0KCIiKTsKKyAgICAgICAg
aGV4ID0gaGV4WzBdICsgaGV4WzBdICsgaGV4WzFdICsgaGV4WzFdICsgaGV4WzJdICsgaGV4WzJd
OworICAgICAgfQorICAgICAgdSA9IHBhcnNlSW50KGhleCwgMTYpOworICAgICAgciA9IHUgPj4g
MTY7CisgICAgICBnID0gdSA+PiA4ICYgMHhGRjsKKyAgICAgIGIgPSB1ICYgMHhGRjsKKyAgICAg
IHJldHVybiBbciwgZywgYiwgMV07CisgICAgfQorICAgIGlmIChoZXgubWF0Y2goL14jPyhbQS1G
YS1mMC05XXs4fSkkLykpIHsKKyAgICAgIGlmIChoZXgubGVuZ3RoID09PSA5KSB7CisgICAgICAg
IGhleCA9IGhleC5zdWJzdHIoMSk7CisgICAgICB9CisgICAgICB1ID0gcGFyc2VJbnQoaGV4LCAx
Nik7CisgICAgICByID0gdSA+PiAyNCAmIDB4RkY7CisgICAgICBnID0gdSA+PiAxNiAmIDB4RkY7
CisgICAgICBiID0gdSA+PiA4ICYgMHhGRjsKKyAgICAgIGEgPSByb3VuZCgodSAmIDB4RkYpIC8g
MHhGRiAqIDEwMCkgLyAxMDA7CisgICAgICByZXR1cm4gW3IsIGcsIGIsIGFdOworICAgIH0KKyAg
ICBpZiAocmdiID0gY3NzMnJnYihoZXgpKSB7CisgICAgICByZXR1cm4gcmdiOworICAgIH0KKyAg
ICB0aHJvdyAidW5rbm93biBjb2xvcjogIiArIGhleDsKKyAgfTsKKworICBoc2kycmdiID0gZnVu
Y3Rpb24oaCwgcywgaSkgeworCisgICAgLyoKKyAgICBib3Jyb3dlZCBmcm9tIGhlcmU6CisgICAg
aHR0cDovL2h1bW1lci5zdGFuZm9yZC5lZHUvbXVzZWluZm8vZG9jL2V4YW1wbGVzL2h1bWRydW0v
a2V5c2NhcGUyL2hzaTJyZ2IuY3BwCisgICAgICovCisgICAgdmFyIGIsIGcsIHIsIHJlZjsKKyAg
ICByZWYgPSB1bnBhY2soYXJndW1lbnRzKSwgaCA9IHJlZlswXSwgcyA9IHJlZlsxXSwgaSA9IHJl
ZlsyXTsKKyAgICBoIC89IDM2MDsKKyAgICBpZiAoaCA8IDEgLyAzKSB7CisgICAgICBiID0gKDEg
LSBzKSAvIDM7CisgICAgICByID0gKDEgKyBzICogY29zKFRXT1BJICogaCkgLyBjb3MoUElUSElS
RCAtIFRXT1BJICogaCkpIC8gMzsKKyAgICAgIGcgPSAxIC0gKGIgKyByKTsKKyAgICB9IGVsc2Ug
aWYgKGggPCAyIC8gMykgeworICAgICAgaCAtPSAxIC8gMzsKKyAgICAgIHIgPSAoMSAtIHMpIC8g
MzsKKyAgICAgIGcgPSAoMSArIHMgKiBjb3MoVFdPUEkgKiBoKSAvIGNvcyhQSVRISVJEIC0gVFdP
UEkgKiBoKSkgLyAzOworICAgICAgYiA9IDEgLSAociArIGcpOworICAgIH0gZWxzZSB7CisgICAg
ICBoIC09IDIgLyAzOworICAgICAgZyA9ICgxIC0gcykgLyAzOworICAgICAgYiA9ICgxICsgcyAq
IGNvcyhUV09QSSAqIGgpIC8gY29zKFBJVEhJUkQgLSBUV09QSSAqIGgpKSAvIDM7CisgICAgICBy
ID0gMSAtIChnICsgYik7CisgICAgfQorICAgIHIgPSBsaW1pdChpICogciAqIDMpOworICAgIGcg
PSBsaW1pdChpICogZyAqIDMpOworICAgIGIgPSBsaW1pdChpICogYiAqIDMpOworICAgIHJldHVy
biBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07CisgIH07CisKKyAgaHNsMnJnYiA9IGZ1bmN0
aW9uKCkgeworICAgIHZhciBiLCBjLCBnLCBoLCBpLCBsLCBvLCByLCByZWYsIHJlZjEsIHMsIHQx
LCB0MiwgdDM7CisgICAgcmVmID0gdW5wYWNrKGFyZ3VtZW50cyksIGggPSByZWZbMF0sIHMgPSBy
ZWZbMV0sIGwgPSByZWZbMl07CisgICAgaWYgKHMgPT09IDApIHsKKyAgICAgIHIgPSBnID0gYiA9
IGwgKiAyNTU7CisgICAgfSBlbHNlIHsKKyAgICAgIHQzID0gWzAsIDAsIDBdOworICAgICAgYyA9
IFswLCAwLCAwXTsKKyAgICAgIHQyID0gbCA8IDAuNSA/IGwgKiAoMSArIHMpIDogbCArIHMgLSBs
ICogczsKKyAgICAgIHQxID0gMiAqIGwgLSB0MjsKKyAgICAgIGggLz0gMzYwOworICAgICAgdDNb
MF0gPSBoICsgMSAvIDM7CisgICAgICB0M1sxXSA9IGg7CisgICAgICB0M1syXSA9IGggLSAxIC8g
MzsKKyAgICAgIGZvciAoaSA9IG8gPSAwOyBvIDw9IDI7IGkgPSArK28pIHsKKyAgICAgICAgaWYg
KHQzW2ldIDwgMCkgeworICAgICAgICAgIHQzW2ldICs9IDE7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHQzW2ldID4gMSkgeworICAgICAgICAgIHQzW2ldIC09IDE7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKDYgKiB0M1tpXSA8IDEpIHsKKyAgICAgICAgICBjW2ldID0gdDEgKyAodDIgLSB0MSkg
KiA2ICogdDNbaV07CisgICAgICAgIH0gZWxzZSBpZiAoMiAqIHQzW2ldIDwgMSkgeworICAgICAg
ICAgIGNbaV0gPSB0MjsKKyAgICAgICAgfSBlbHNlIGlmICgzICogdDNbaV0gPCAyKSB7CisgICAg
ICAgICAgY1tpXSA9IHQxICsgKHQyIC0gdDEpICogKCgyIC8gMykgLSB0M1tpXSkgKiA2OworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIGNbaV0gPSB0MTsKKyAgICAgICAgfQorICAgICAgfQor
ICAgICAgcmVmMSA9IFtyb3VuZChjWzBdICogMjU1KSwgcm91bmQoY1sxXSAqIDI1NSksIHJvdW5k
KGNbMl0gKiAyNTUpXSwgciA9IHJlZjFbMF0sIGcgPSByZWYxWzFdLCBiID0gcmVmMVsyXTsKKyAg
ICB9CisgICAgcmV0dXJuIFtyLCBnLCBiXTsKKyAgfTsKKworICBoc3YycmdiID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIGIsIGYsIGcsIGgsIGksIHAsIHEsIHIsIHJlZiwgcmVmMSwgcmVmMiwgcmVm
MywgcmVmNCwgcmVmNSwgcmVmNiwgcywgdCwgdjsKKyAgICByZWYgPSB1bnBhY2soYXJndW1lbnRz
KSwgaCA9IHJlZlswXSwgcyA9IHJlZlsxXSwgdiA9IHJlZlsyXTsKKyAgICB2ICo9IDI1NTsKKyAg
ICBpZiAocyA9PT0gMCkgeworICAgICAgciA9IGcgPSBiID0gdjsKKyAgICB9IGVsc2UgeworICAg
ICAgaWYgKGggPT09IDM2MCkgeworICAgICAgICBoID0gMDsKKyAgICAgIH0KKyAgICAgIGlmICho
ID4gMzYwKSB7CisgICAgICAgIGggLT0gMzYwOworICAgICAgfQorICAgICAgaWYgKGggPCAwKSB7
CisgICAgICAgIGggKz0gMzYwOworICAgICAgfQorICAgICAgaCAvPSA2MDsKKyAgICAgIGkgPSBm
bG9vcihoKTsKKyAgICAgIGYgPSBoIC0gaTsKKyAgICAgIHAgPSB2ICogKDEgLSBzKTsKKyAgICAg
IHEgPSB2ICogKDEgLSBzICogZik7CisgICAgICB0ID0gdiAqICgxIC0gcyAqICgxIC0gZikpOwor
ICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICByZWYxID0gW3Ys
IHQsIHBdLCByID0gcmVmMVswXSwgZyA9IHJlZjFbMV0sIGIgPSByZWYxWzJdOworICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgcmVmMiA9IFtxLCB2LCBwXSwgciA9
IHJlZjJbMF0sIGcgPSByZWYyWzFdLCBiID0gcmVmMlsyXTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAyOgorICAgICAgICAgIHJlZjMgPSBbcCwgdiwgdF0sIHIgPSByZWYzWzBdLCBn
ID0gcmVmM1sxXSwgYiA9IHJlZjNbMl07CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
MzoKKyAgICAgICAgICByZWY0ID0gW3AsIHEsIHZdLCByID0gcmVmNFswXSwgZyA9IHJlZjRbMV0s
IGIgPSByZWY0WzJdOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6CisgICAgICAg
ICAgcmVmNSA9IFt0LCBwLCB2XSwgciA9IHJlZjVbMF0sIGcgPSByZWY1WzFdLCBiID0gcmVmNVsy
XTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgIHJlZjYgPSBb
diwgcCwgcV0sIHIgPSByZWY2WzBdLCBnID0gcmVmNlsxXSwgYiA9IHJlZjZbMl07CisgICAgICB9
CisgICAgfQorICAgIHIgPSByb3VuZChyKTsKKyAgICBnID0gcm91bmQoZyk7CisgICAgYiA9IHJv
dW5kKGIpOworICAgIHJldHVybiBbciwgZywgYl07CisgIH07CisKKyAgSyA9IDE4OworCisgIFgg
PSAwLjk1MDQ3MDsKKworICBZID0gMTsKKworICBaID0gMS4wODg4MzA7CisKKyAgbGFiMmxjaCA9
IGZ1bmN0aW9uKCkgeworICAgIHZhciBhLCBiLCBjLCBoLCBsLCByZWY7CisgICAgcmVmID0gdW5w
YWNrKGFyZ3VtZW50cyksIGwgPSByZWZbMF0sIGEgPSByZWZbMV0sIGIgPSByZWZbMl07CisgICAg
YyA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTsKKyAgICBoID0gKE1hdGguYXRhbjIoYiwgYSkg
LyBNYXRoLlBJICogMTgwICsgMzYwKSAlIDM2MDsKKyAgICByZXR1cm4gW2wsIGMsIGhdOworICB9
OworCisgIGxhYjJyZ2IgPSBmdW5jdGlvbihsLCBhLCBiKSB7CisKKyAgICAvKgorICAgIGFkYXB0
ZWQgdG8gbWF0Y2ggZDMgaW1wbGVtZW50YXRpb24KKyAgICAgKi8KKyAgICB2YXIgZywgciwgcmVm
LCByZWYxLCB4LCB5LCB6OworICAgIGlmIChsICE9PSB2b2lkIDAgJiYgbC5sZW5ndGggPT09IDMp
IHsKKyAgICAgIHJlZiA9IGwsIGwgPSByZWZbMF0sIGEgPSByZWZbMV0sIGIgPSByZWZbMl07Cisg
ICAgfQorICAgIGlmIChsICE9PSB2b2lkIDAgJiYgbC5sZW5ndGggPT09IDMpIHsKKyAgICAgIHJl
ZjEgPSBsLCBsID0gcmVmMVswXSwgYSA9IHJlZjFbMV0sIGIgPSByZWYxWzJdOworICAgIH0KKyAg
ICB5ID0gKGwgKyAxNikgLyAxMTY7CisgICAgeCA9IHkgKyBhIC8gNTAwOworICAgIHogPSB5IC0g
YiAvIDIwMDsKKyAgICB4ID0gbGFiX3h5eih4KSAqIFg7CisgICAgeSA9IGxhYl94eXooeSkgKiBZ
OworICAgIHogPSBsYWJfeHl6KHopICogWjsKKyAgICByID0geHl6X3JnYigzLjI0MDQ1NDIgKiB4
IC0gMS41MzcxMzg1ICogeSAtIDAuNDk4NTMxNCAqIHopOworICAgIGcgPSB4eXpfcmdiKC0wLjk2
OTI2NjAgKiB4ICsgMS44NzYwMTA4ICogeSArIDAuMDQxNTU2MCAqIHopOworICAgIGIgPSB4eXpf
cmdiKDAuMDU1NjQzNCAqIHggLSAwLjIwNDAyNTkgKiB5ICsgMS4wNTcyMjUyICogeik7CisgICAg
cmV0dXJuIFtsaW1pdChyLCAwLCAyNTUpLCBsaW1pdChnLCAwLCAyNTUpLCBsaW1pdChiLCAwLCAy
NTUpLCAxXTsKKyAgfTsKKworICBsYWJfeHl6ID0gZnVuY3Rpb24oeCkgeworICAgIGlmICh4ID4g
MC4yMDY4OTMwMzQpIHsKKyAgICAgIHJldHVybiB4ICogeCAqIHg7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHJldHVybiAoeCAtIDQgLyAyOSkgLyA3Ljc4NzAzNzsKKyAgICB9CisgIH07CisKKyAgeHl6
X3JnYiA9IGZ1bmN0aW9uKHIpIHsKKyAgICByZXR1cm4gcm91bmQoMjU1ICogKHIgPD0gMC4wMDMw
NCA/IDEyLjkyICogciA6IDEuMDU1ICogcG93KHIsIDEgLyAyLjQpIC0gMC4wNTUpKTsKKyAgfTsK
KworICBsY2gybGFiID0gZnVuY3Rpb24oKSB7CisKKyAgICAvKgorICAgIENvbnZlcnQgZnJvbSBh
IHF1YWxpdGF0aXZlIHBhcmFtZXRlciBoIGFuZCBhIHF1YW50aXRhdGl2ZSBwYXJhbWV0ZXIgbCB0
byBhIDI0LWJpdCBwaXhlbC4gVGhlc2UgZm9ybXVsYXMgd2VyZSBpbnZlbnRlZCBieSBEYXZpZCBE
YWxyeW1wbGUgdG8gb2J0YWluIG1heGltdW0gY29udHJhc3Qgd2l0aG91dCBnb2luZyBvdXQgb2Yg
Z2FtdXQgaWYgdGhlIHBhcmFtZXRlcnMgYXJlIGluIHRoZSByYW5nZSAwLTEuCisgICAgQSBzYXR1
cmF0aW9uIG11bHRpcGxpZXIgd2FzIGFkZGVkIGJ5IEdyZWdvciBBaXNjaAorICAgICAqLworICAg
IHZhciBjLCBoLCBsLCByZWY7CisgICAgcmVmID0gdW5wYWNrKGFyZ3VtZW50cyksIGwgPSByZWZb
MF0sIGMgPSByZWZbMV0sIGggPSByZWZbMl07CisgICAgaCA9IGggKiBNYXRoLlBJIC8gMTgwOwor
ICAgIHJldHVybiBbbCwgTWF0aC5jb3MoaCkgKiBjLCBNYXRoLnNpbihoKSAqIGNdOworICB9Owor
CisgIGxjaDJyZ2IgPSBmdW5jdGlvbihsLCBjLCBoKSB7CisgICAgdmFyIEwsIGEsIGIsIGcsIHIs
IHJlZiwgcmVmMTsKKyAgICByZWYgPSBsY2gybGFiKGwsIGMsIGgpLCBMID0gcmVmWzBdLCBhID0g
cmVmWzFdLCBiID0gcmVmWzJdOworICAgIHJlZjEgPSBsYWIycmdiKEwsIGEsIGIpLCByID0gcmVm
MVswXSwgZyA9IHJlZjFbMV0sIGIgPSByZWYxWzJdOworICAgIHJldHVybiBbbGltaXQociwgMCwg
MjU1KSwgbGltaXQoZywgMCwgMjU1KSwgbGltaXQoYiwgMCwgMjU1KV07CisgIH07CisKKyAgbHVt
aW5hbmNlID0gZnVuY3Rpb24ociwgZywgYikgeworICAgIHZhciByZWY7CisgICAgcmVmID0gdW5w
YWNrKGFyZ3VtZW50cyksIHIgPSByZWZbMF0sIGcgPSByZWZbMV0sIGIgPSByZWZbMl07CisgICAg
ciA9IGx1bWluYW5jZV94KHIpOworICAgIGcgPSBsdW1pbmFuY2VfeChnKTsKKyAgICBiID0gbHVt
aW5hbmNlX3goYik7CisgICAgcmV0dXJuIDAuMjEyNiAqIHIgKyAwLjcxNTIgKiBnICsgMC4wNzIy
ICogYjsKKyAgfTsKKworICBsdW1pbmFuY2VfeCA9IGZ1bmN0aW9uKHgpIHsKKyAgICB4IC89IDI1
NTsKKyAgICBpZiAoeCA8PSAwLjAzOTI4KSB7CisgICAgICByZXR1cm4geCAvIDEyLjkyOworICAg
IH0gZWxzZSB7CisgICAgICByZXR1cm4gTWF0aC5wb3coKHggKyAwLjA1NSkgLyAxLjA1NSwgMi40
KTsKKyAgICB9CisgIH07CisKKyAgbnVtMnJnYiA9IGZ1bmN0aW9uKG51bSkgeworICAgIHZhciBi
LCBnLCByOworICAgIGlmICh0eXBlKG51bSkgPT09ICJudW1iZXIiICYmIG51bSA+PSAwICYmIG51
bSA8PSAweEZGRkZGRikgeworICAgICAgciA9IG51bSA+PiAxNjsKKyAgICAgIGcgPSAobnVtID4+
IDgpICYgMHhGRjsKKyAgICAgIGIgPSBudW0gJiAweEZGOworICAgICAgcmV0dXJuIFtyLCBnLCBi
LCAxXTsKKyAgICB9CisgICAgdGhyb3cgInVua25vd24gbnVtIGNvbG9yOiAiICsgbnVtOworICB9
OworCisgIHJnYjJoZXggPSBmdW5jdGlvbihjaGFubmVscywgbW9kZSkgeworICAgIHZhciBhLCBi
LCBnLCBoeGEsIHIsIHN0ciwgdTsKKyAgICBpZiAobW9kZSA9PSBudWxsKSB7CisgICAgICBtb2Rl
ID0gJ3JnYic7CisgICAgfQorICAgIHIgPSBjaGFubmVsc1swXSwgZyA9IGNoYW5uZWxzWzFdLCBi
ID0gY2hhbm5lbHNbMl0sIGEgPSBjaGFubmVsc1szXTsKKyAgICB1ID0gciA8PCAxNiB8IGcgPDwg
OCB8IGI7CisgICAgc3RyID0gIjAwMDAwMCIgKyB1LnRvU3RyaW5nKDE2KTsKKyAgICBzdHIgPSBz
dHIuc3Vic3RyKHN0ci5sZW5ndGggLSA2KTsKKyAgICBoeGEgPSAnMCcgKyByb3VuZChhICogMjU1
KS50b1N0cmluZygxNik7CisgICAgaHhhID0gaHhhLnN1YnN0cihoeGEubGVuZ3RoIC0gMik7Cisg
ICAgcmV0dXJuICIjIiArIChmdW5jdGlvbigpIHsKKyAgICAgIHN3aXRjaCAobW9kZS50b0xvd2Vy
Q2FzZSgpKSB7CisgICAgICAgIGNhc2UgJ3JnYmEnOgorICAgICAgICAgIHJldHVybiBzdHIgKyBo
eGE7CisgICAgICAgIGNhc2UgJ2FyZ2InOgorICAgICAgICAgIHJldHVybiBoeGEgKyBzdHI7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgIH0KKyAgICB9KSgp
OworICB9OworCisgIHJnYjJoc2kgPSBmdW5jdGlvbigpIHsKKworICAgIC8qCisgICAgYm9ycm93
ZWQgZnJvbSBoZXJlOgorICAgIGh0dHA6Ly9odW1tZXIuc3RhbmZvcmQuZWR1L211c2VpbmZvL2Rv
Yy9leGFtcGxlcy9odW1kcnVtL2tleXNjYXBlMi9yZ2IyaHNpLmNwcAorICAgICAqLworICAgIHZh
ciBUV09QSSwgYiwgZywgaCwgaSwgbWluLCByLCByZWYsIHM7CisgICAgcmVmID0gdW5wYWNrKGFy
Z3VtZW50cyksIHIgPSByZWZbMF0sIGcgPSByZWZbMV0sIGIgPSByZWZbMl07CisgICAgVFdPUEkg
PSBNYXRoLlBJICogMjsKKyAgICByIC89IDI1NTsKKyAgICBnIC89IDI1NTsKKyAgICBiIC89IDI1
NTsKKyAgICBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKKyAgICBpID0gKHIgKyBnICsgYikgLyAz
OworICAgIHMgPSAxIC0gbWluIC8gaTsKKyAgICBpZiAocyA9PT0gMCkgeworICAgICAgaCA9IDA7
CisgICAgfSBlbHNlIHsKKyAgICAgIGggPSAoKHIgLSBnKSArIChyIC0gYikpIC8gMjsKKyAgICAg
IGggLz0gTWF0aC5zcXJ0KChyIC0gZykgKiAociAtIGcpICsgKHIgLSBiKSAqIChnIC0gYikpOwor
ICAgICAgaCA9IE1hdGguYWNvcyhoKTsKKyAgICAgIGlmIChiID4gZykgeworICAgICAgICBoID0g
VFdPUEkgLSBoOworICAgICAgfQorICAgICAgaCAvPSBUV09QSTsKKyAgICB9CisgICAgcmV0dXJu
IFtoICogMzYwLCBzLCBpXTsKKyAgfTsKKworICByZ2IyaHNsID0gZnVuY3Rpb24ociwgZywgYikg
eworICAgIHZhciBoLCBsLCBtYXgsIG1pbiwgcmVmLCBzOworICAgIGlmIChyICE9PSB2b2lkIDAg
JiYgci5sZW5ndGggPj0gMykgeworICAgICAgcmVmID0gciwgciA9IHJlZlswXSwgZyA9IHJlZlsx
XSwgYiA9IHJlZlsyXTsKKyAgICB9CisgICAgciAvPSAyNTU7CisgICAgZyAvPSAyNTU7CisgICAg
YiAvPSAyNTU7CisgICAgbWluID0gTWF0aC5taW4ociwgZywgYik7CisgICAgbWF4ID0gTWF0aC5t
YXgociwgZywgYik7CisgICAgbCA9IChtYXggKyBtaW4pIC8gMjsKKyAgICBpZiAobWF4ID09PSBt
aW4pIHsKKyAgICAgIHMgPSAwOworICAgICAgaCA9IE51bWJlci5OYU47CisgICAgfSBlbHNlIHsK
KyAgICAgIHMgPSBsIDwgMC41ID8gKG1heCAtIG1pbikgLyAobWF4ICsgbWluKSA6IChtYXggLSBt
aW4pIC8gKDIgLSBtYXggLSBtaW4pOworICAgIH0KKyAgICBpZiAociA9PT0gbWF4KSB7CisgICAg
ICBoID0gKGcgLSBiKSAvIChtYXggLSBtaW4pOworICAgIH0gZWxzZSBpZiAoZyA9PT0gbWF4KSB7
CisgICAgICBoID0gMiArIChiIC0gcikgLyAobWF4IC0gbWluKTsKKyAgICB9IGVsc2UgaWYgKGIg
PT09IG1heCkgeworICAgICAgaCA9IDQgKyAociAtIGcpIC8gKG1heCAtIG1pbik7CisgICAgfQor
ICAgIGggKj0gNjA7CisgICAgaWYgKGggPCAwKSB7CisgICAgICBoICs9IDM2MDsKKyAgICB9Cisg
ICAgcmV0dXJuIFtoLCBzLCBsXTsKKyAgfTsKKworICByZ2IyaHN2ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIGIsIGRlbHRhLCBnLCBoLCBtYXgsIG1pbiwgciwgcmVmLCBzLCB2OworICAgIHJlZiA9
IHVucGFjayhhcmd1bWVudHMpLCByID0gcmVmWzBdLCBnID0gcmVmWzFdLCBiID0gcmVmWzJdOwor
ICAgIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpOworICAgIG1heCA9IE1hdGgubWF4KHIsIGcsIGIp
OworICAgIGRlbHRhID0gbWF4IC0gbWluOworICAgIHYgPSBtYXggLyAyNTUuMDsKKyAgICBpZiAo
bWF4ID09PSAwKSB7CisgICAgICBoID0gTnVtYmVyLk5hTjsKKyAgICAgIHMgPSAwOworICAgIH0g
ZWxzZSB7CisgICAgICBzID0gZGVsdGEgLyBtYXg7CisgICAgICBpZiAociA9PT0gbWF4KSB7Cisg
ICAgICAgIGggPSAoZyAtIGIpIC8gZGVsdGE7CisgICAgICB9CisgICAgICBpZiAoZyA9PT0gbWF4
KSB7CisgICAgICAgIGggPSAyICsgKGIgLSByKSAvIGRlbHRhOworICAgICAgfQorICAgICAgaWYg
KGIgPT09IG1heCkgeworICAgICAgICBoID0gNCArIChyIC0gZykgLyBkZWx0YTsKKyAgICAgIH0K
KyAgICAgIGggKj0gNjA7CisgICAgICBpZiAoaCA8IDApIHsKKyAgICAgICAgaCArPSAzNjA7Cisg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBbaCwgcywgdl07CisgIH07CisKKyAgcmdiMmxhYiA9
IGZ1bmN0aW9uKCkgeworICAgIHZhciBiLCBnLCByLCByZWYsIHJlZjEsIHgsIHksIHo7CisgICAg
cmVmID0gdW5wYWNrKGFyZ3VtZW50cyksIHIgPSByZWZbMF0sIGcgPSByZWZbMV0sIGIgPSByZWZb
Ml07CisgICAgcmVmMSA9IHJnYjJ4eXoociwgZywgYiksIHggPSByZWYxWzBdLCB5ID0gcmVmMVsx
XSwgeiA9IHJlZjFbMl07CisgICAgcmV0dXJuIFsxMTYgKiB5IC0gMTYsIDUwMCAqICh4IC0geSks
IDIwMCAqICh5IC0geildOworICB9OworCisgIHJnYl94eXogPSBmdW5jdGlvbihyKSB7CisgICAg
aWYgKChyIC89IDI1NSkgPD0gMC4wNDA0NSkgeworICAgICAgcmV0dXJuIHIgLyAxMi45MjsKKyAg
ICB9IGVsc2UgeworICAgICAgcmV0dXJuIE1hdGgucG93KChyICsgMC4wNTUpIC8gMS4wNTUsIDIu
NCk7CisgICAgfQorICB9OworCisgIHh5el9sYWIgPSBmdW5jdGlvbih4KSB7CisgICAgaWYgKHgg
PiAwLjAwODg1NikgeworICAgICAgcmV0dXJuIE1hdGgucG93KHgsIDEgLyAzKTsKKyAgICB9IGVs
c2UgeworICAgICAgcmV0dXJuIDcuNzg3MDM3ICogeCArIDQgLyAyOTsKKyAgICB9CisgIH07CisK
KyAgcmdiMnh5eiA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBiLCBnLCByLCByZWYsIHgsIHksIHo7
CisgICAgcmVmID0gdW5wYWNrKGFyZ3VtZW50cyksIHIgPSByZWZbMF0sIGcgPSByZWZbMV0sIGIg
PSByZWZbMl07CisgICAgciA9IHJnYl94eXoocik7CisgICAgZyA9IHJnYl94eXooZyk7CisgICAg
YiA9IHJnYl94eXooYik7CisgICAgeCA9IHh5el9sYWIoKDAuNDEyNDU2NCAqIHIgKyAwLjM1NzU3
NjEgKiBnICsgMC4xODA0Mzc1ICogYikgLyBYKTsKKyAgICB5ID0geHl6X2xhYigoMC4yMTI2NzI5
ICogciArIDAuNzE1MTUyMiAqIGcgKyAwLjA3MjE3NTAgKiBiKSAvIFkpOworICAgIHogPSB4eXpf
bGFiKCgwLjAxOTMzMzkgKiByICsgMC4xMTkxOTIwICogZyArIDAuOTUwMzA0MSAqIGIpIC8gWik7
CisgICAgcmV0dXJuIFt4LCB5LCB6XTsKKyAgfTsKKworICByZ2IybGNoID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIGEsIGIsIGcsIGwsIHIsIHJlZiwgcmVmMTsKKyAgICByZWYgPSB1bnBhY2soYXJn
dW1lbnRzKSwgciA9IHJlZlswXSwgZyA9IHJlZlsxXSwgYiA9IHJlZlsyXTsKKyAgICByZWYxID0g
cmdiMmxhYihyLCBnLCBiKSwgbCA9IHJlZjFbMF0sIGEgPSByZWYxWzFdLCBiID0gcmVmMVsyXTsK
KyAgICByZXR1cm4gbGFiMmxjaChsLCBhLCBiKTsKKyAgfTsKKworICByZ2IybnVtID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIGIsIGcsIHIsIHJlZjsKKyAgICByZWYgPSB1bnBhY2soYXJndW1lbnRz
KSwgciA9IHJlZlswXSwgZyA9IHJlZlsxXSwgYiA9IHJlZlsyXTsKKyAgICByZXR1cm4gKHIgPDwg
MTYpICsgKGcgPDwgOCkgKyBiOworICB9OworCisgIHRlbXAycmdiID0gZnVuY3Rpb24oa2Vsdmlu
KSB7CisgICAgdmFyIGIsIGcsIHIsIHRlbXA7CisgICAgdGVtcCA9IGtlbHZpbiAvIDEwMDsKKyAg
ICBpZiAodGVtcCA8IDY2KSB7CisgICAgICByID0gMjU1OworICAgICAgZyA9IC0xNTUuMjU0ODU1
NjI3MDkxNzkgLSAwLjQ0NTk2OTUwNDY5NTc5MTMzICogKGcgPSB0ZW1wIC0gMikgKyAxMDQuNDky
MTYxOTkzOTM4ODggKiBsb2coZyk7CisgICAgICBiID0gdGVtcCA8IDIwID8gMCA6IC0yNTQuNzY5
MzUxODQxMjA5MDIgKyAwLjgyNzQwOTYwNjQwMDczOTUgKiAoYiA9IHRlbXAgLSAxMCkgKyAxMTUu
Njc5OTQ0MDEwNjYxNDcgKiBsb2coYik7CisgICAgfSBlbHNlIHsKKyAgICAgIHIgPSAzNTEuOTc2
OTA1NjY4MDU2OTMgKyAwLjExNDIwNjQ1Mzc4NDE2NSAqIChyID0gdGVtcCAtIDU1KSAtIDQwLjI1
MzY2MzA5MzMyMTI3ICogbG9nKHIpOworICAgICAgZyA9IDMyNS40NDk0MTI1NzExOTc0ICsgMC4w
Nzk0MzQ1NjUzNjY2MjM0MiAqIChnID0gdGVtcCAtIDUwKSAtIDI4LjA4NTI5NjM1MDc5NTcgKiBs
b2coZyk7CisgICAgICBiID0gMjU1OworICAgIH0KKyAgICByZXR1cm4gY2xpcF9yZ2IoW3IsIGcs
IGJdKTsKKyAgfTsKKworICByZ2IydGVtcCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBiLCBlcHMs
IGcsIG1heFRlbXAsIG1pblRlbXAsIHIsIHJlZiwgcmdiLCB0ZW1wOworICAgIHJlZiA9IHVucGFj
ayhhcmd1bWVudHMpLCByID0gcmVmWzBdLCBnID0gcmVmWzFdLCBiID0gcmVmWzJdOworICAgIG1p
blRlbXAgPSAxMDAwOworICAgIG1heFRlbXAgPSA0MDAwMDsKKyAgICBlcHMgPSAwLjQ7CisgICAg
d2hpbGUgKG1heFRlbXAgLSBtaW5UZW1wID4gZXBzKSB7CisgICAgICB0ZW1wID0gKG1heFRlbXAg
KyBtaW5UZW1wKSAqIDAuNTsKKyAgICAgIHJnYiA9IHRlbXAycmdiKHRlbXApOworICAgICAgaWYg
KChyZ2JbMl0gLyByZ2JbMF0pID49IChiIC8gcikpIHsKKyAgICAgICAgbWF4VGVtcCA9IHRlbXA7
CisgICAgICB9IGVsc2UgeworICAgICAgICBtaW5UZW1wID0gdGVtcDsKKyAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHJvdW5kKHRlbXApOworICB9OworCisKKyAgLyoKKyAgICAgIGNocm9tYS5q
cworICAKKyAgICAgIENvcHlyaWdodCAoYykgMjAxMS0yMDEzLCBHcmVnb3IgQWlzY2gKKyAgICAg
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgIAorICAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICAgICBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAgCisgICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICAgICAgICBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgCisgICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwKKyAgICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgICBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgCisg
ICAgICAqIFRoZSBuYW1lIEdyZWdvciBBaXNjaCBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzCisgICAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICAKKyAgICAgIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgIkFTIElTIgorICAgICAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICAgICAgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgICAgICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHUkVHT1IgQUlT
Q0ggT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAgICAgIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLAorICAgICAgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAgICAgIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAgICAgIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICAgICBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsCisgICAgICBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICAKKyAgICAgIEBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9na2EvY2hyb21h
LmpzCisgICAqLworCisgIGNocm9tYS5zY2FsZSA9IGZ1bmN0aW9uKGNvbG9ycywgcG9zaXRpb25z
KSB7CisgICAgdmFyIF9jb2xvckNhY2hlLCBfY29sb3JzLCBfY29ycmVjdExpZ2h0bmVzcywgX2Rv
bWFpbiwgX2ZpeGVkLCBfbWF4LCBfbWluLCBfbW9kZSwgX25hY29sLCBfbnVtQ2xhc3NlcywgX291
dCwgX3BvcywgX3NwcmVhZCwgY2xhc3NpZnlWYWx1ZSwgZiwgZ2V0Q2xhc3MsIGdldENvbG9yLCBy
ZXNldENhY2hlLCBzZXRDb2xvcnMsIHNldERvbWFpbiwgdG1hcDsKKyAgICBfbW9kZSA9ICdyZ2In
OworICAgIF9uYWNvbCA9IGNocm9tYSgnI2NjYycpOworICAgIF9zcHJlYWQgPSAwOworICAgIF9m
aXhlZCA9IGZhbHNlOworICAgIF9kb21haW4gPSBbMCwgMV07CisgICAgX2NvbG9ycyA9IFtdOwor
ICAgIF9vdXQgPSBmYWxzZTsKKyAgICBfcG9zID0gW107CisgICAgX21pbiA9IDA7CisgICAgX21h
eCA9IDE7CisgICAgX2NvcnJlY3RMaWdodG5lc3MgPSBmYWxzZTsKKyAgICBfbnVtQ2xhc3NlcyA9
IDA7CisgICAgX2NvbG9yQ2FjaGUgPSB7fTsKKyAgICBzZXRDb2xvcnMgPSBmdW5jdGlvbihjb2xv
cnMsIHBvc2l0aW9ucykgeworICAgICAgdmFyIGMsIGNvbCwgbywgcmVmLCByZWYxLCByZWYyLCB3
OworICAgICAgaWYgKGNvbG9ycyA9PSBudWxsKSB7CisgICAgICAgIGNvbG9ycyA9IFsnI2RkZCcs
ICcjMjIyJ107CisgICAgICB9CisgICAgICBpZiAoKGNvbG9ycyAhPSBudWxsKSAmJiB0eXBlKGNv
bG9ycykgPT09ICdzdHJpbmcnICYmICgoKHJlZiA9IGNocm9tYS5icmV3ZXIpICE9IG51bGwgPyBy
ZWZbY29sb3JzXSA6IHZvaWQgMCkgIT0gbnVsbCkpIHsKKyAgICAgICAgY29sb3JzID0gY2hyb21h
LmJyZXdlcltjb2xvcnNdOworICAgICAgfQorICAgICAgaWYgKHR5cGUoY29sb3JzKSA9PT0gJ2Fy
cmF5JykgeworICAgICAgICBjb2xvcnMgPSBjb2xvcnMuc2xpY2UoMCk7CisgICAgICAgIGZvciAo
YyA9IG8gPSAwLCByZWYxID0gY29sb3JzLmxlbmd0aCAtIDE7IDAgPD0gcmVmMSA/IG8gPD0gcmVm
MSA6IG8gPj0gcmVmMTsgYyA9IDAgPD0gcmVmMSA/ICsrbyA6IC0tbykgeworICAgICAgICAgIGNv
bCA9IGNvbG9yc1tjXTsKKyAgICAgICAgICBpZiAodHlwZShjb2wpID09PSAic3RyaW5nIikgewor
ICAgICAgICAgICAgY29sb3JzW2NdID0gY2hyb21hKGNvbCk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGlmIChwb3NpdGlvbnMgIT0gbnVsbCkgeworICAgICAgICAgIF9wb3MgPSBw
b3NpdGlvbnM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgX3BvcyA9IFtdOworICAgICAg
ICAgIGZvciAoYyA9IHcgPSAwLCByZWYyID0gY29sb3JzLmxlbmd0aCAtIDE7IDAgPD0gcmVmMiA/
IHcgPD0gcmVmMiA6IHcgPj0gcmVmMjsgYyA9IDAgPD0gcmVmMiA/ICsrdyA6IC0tdykgeworICAg
ICAgICAgICAgX3Bvcy5wdXNoKGMgLyAoY29sb3JzLmxlbmd0aCAtIDEpKTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJlc2V0Q2FjaGUoKTsKKyAgICAgIHJldHVybiBf
Y29sb3JzID0gY29sb3JzOworICAgIH07CisgICAgc2V0RG9tYWluID0gZnVuY3Rpb24oZG9tYWlu
KSB7CisgICAgICBpZiAoZG9tYWluID09IG51bGwpIHsKKyAgICAgICAgZG9tYWluID0gW107Cisg
ICAgICB9CisKKyAgICAgIC8qCisgICAgICAgKiB1c2UgdGhpcyBpZiB5b3Ugd2FudCB0byBkaXNw
bGF5IGEgbGltaXRlZCBudW1iZXIgb2YgZGF0YSBjbGFzc2VzCisgICAgICAgKiBwb3NzaWJsZSBt
ZXRob2RzIGFyZSAiZXF1YWxpbnRlcnZhbCIsICJxdWFudGlsZXMiLCAiY3VzdG9tIgorICAgICAg
ICovCisgICAgICBfZG9tYWluID0gZG9tYWluOworICAgICAgX21pbiA9IGRvbWFpblswXTsKKyAg
ICAgIF9tYXggPSBkb21haW5bZG9tYWluLmxlbmd0aCAtIDFdOworICAgICAgcmVzZXRDYWNoZSgp
OworICAgICAgaWYgKGRvbWFpbi5sZW5ndGggPT09IDIpIHsKKyAgICAgICAgcmV0dXJuIF9udW1D
bGFzc2VzID0gMDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBfbnVtQ2xhc3NlcyA9
IGRvbWFpbi5sZW5ndGggLSAxOworICAgICAgfQorICAgIH07CisgICAgZ2V0Q2xhc3MgPSBmdW5j
dGlvbih2YWx1ZSkgeworICAgICAgdmFyIGksIG47CisgICAgICBpZiAoX2RvbWFpbiAhPSBudWxs
KSB7CisgICAgICAgIG4gPSBfZG9tYWluLmxlbmd0aCAtIDE7CisgICAgICAgIGkgPSAwOworICAg
ICAgICB3aGlsZSAoaSA8IG4gJiYgdmFsdWUgPj0gX2RvbWFpbltpXSkgeworICAgICAgICAgIGkr
KzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaSAtIDE7CisgICAgICB9CisgICAgICByZXR1
cm4gMDsKKyAgICB9OworICAgIHRtYXAgPSBmdW5jdGlvbih0KSB7CisgICAgICByZXR1cm4gdDsK
KyAgICB9OworICAgIGNsYXNzaWZ5VmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgdmFy
IGksIG1heGMsIG1pbmMsIG4sIHZhbDsKKyAgICAgIHZhbCA9IHZhbHVlOworICAgICAgaWYgKF9k
b21haW4ubGVuZ3RoID4gMikgeworICAgICAgICBuID0gX2RvbWFpbi5sZW5ndGggLSAxOworICAg
ICAgICBpID0gZ2V0Q2xhc3ModmFsdWUpOworICAgICAgICBtaW5jID0gX2RvbWFpblswXSArIChf
ZG9tYWluWzFdIC0gX2RvbWFpblswXSkgKiAoMCArIF9zcHJlYWQgKiAwLjUpOworICAgICAgICBt
YXhjID0gX2RvbWFpbltuIC0gMV0gKyAoX2RvbWFpbltuXSAtIF9kb21haW5bbiAtIDFdKSAqICgx
IC0gX3NwcmVhZCAqIDAuNSk7CisgICAgICAgIHZhbCA9IF9taW4gKyAoKF9kb21haW5baV0gKyAo
X2RvbWFpbltpICsgMV0gLSBfZG9tYWluW2ldKSAqIDAuNSAtIG1pbmMpIC8gKG1heGMgLSBtaW5j
KSkgKiAoX21heCAtIF9taW4pOworICAgICAgfQorICAgICAgcmV0dXJuIHZhbDsKKyAgICB9Owor
ICAgIGdldENvbG9yID0gZnVuY3Rpb24odmFsLCBieXBhc3NNYXApIHsKKyAgICAgIHZhciBjLCBj
b2wsIGYwLCBpLCBrLCBvLCBwLCByZWYsIHQ7CisgICAgICBpZiAoYnlwYXNzTWFwID09IG51bGwp
IHsKKyAgICAgICAgYnlwYXNzTWFwID0gZmFsc2U7CisgICAgICB9CisgICAgICBpZiAoaXNOYU4o
dmFsKSkgeworICAgICAgICByZXR1cm4gX25hY29sOworICAgICAgfQorICAgICAgaWYgKCFieXBh
c3NNYXApIHsKKyAgICAgICAgaWYgKF9kb21haW4ubGVuZ3RoID4gMikgeworICAgICAgICAgIGMg
PSBnZXRDbGFzcyh2YWwpOworICAgICAgICAgIHQgPSBjIC8gKF9udW1DbGFzc2VzIC0gMSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdCA9IGYwID0gX21pbiAhPT0gX21heCA/ICh2YWwg
LSBfbWluKSAvIChfbWF4IC0gX21pbikgOiAwOworICAgICAgICAgIHQgPSBmMCA9ICh2YWwgLSBf
bWluKSAvIChfbWF4IC0gX21pbik7CisgICAgICAgICAgdCA9IE1hdGgubWluKDEsIE1hdGgubWF4
KDAsIHQpKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgdCA9IHZhbDsKKyAg
ICAgIH0KKyAgICAgIGlmICghYnlwYXNzTWFwKSB7CisgICAgICAgIHQgPSB0bWFwKHQpOworICAg
ICAgfQorICAgICAgayA9IE1hdGguZmxvb3IodCAqIDEwMDAwKTsKKyAgICAgIGlmIChfY29sb3JD
YWNoZVtrXSkgeworICAgICAgICBjb2wgPSBfY29sb3JDYWNoZVtrXTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIGlmICh0eXBlKF9jb2xvcnMpID09PSAnYXJyYXknKSB7CisgICAgICAgICAgZm9y
IChpID0gbyA9IDAsIHJlZiA9IF9wb3MubGVuZ3RoIC0gMTsgMCA8PSByZWYgPyBvIDw9IHJlZiA6
IG8gPj0gcmVmOyBpID0gMCA8PSByZWYgPyArK28gOiAtLW8pIHsKKyAgICAgICAgICAgIHAgPSBf
cG9zW2ldOworICAgICAgICAgICAgaWYgKHQgPD0gcCkgeworICAgICAgICAgICAgICBjb2wgPSBf
Y29sb3JzW2ldOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICh0ID49IHAgJiYgaSA9PT0gX3Bvcy5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICAg
IGNvbCA9IF9jb2xvcnNbaV07CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKHQgPiBwICYmIHQgPCBfcG9zW2kgKyAxXSkgeworICAgICAgICAgICAg
ICB0ID0gKHQgLSBwKSAvIChfcG9zW2kgKyAxXSAtIHApOworICAgICAgICAgICAgICBjb2wgPSBj
aHJvbWEuaW50ZXJwb2xhdGUoX2NvbG9yc1tpXSwgX2NvbG9yc1tpICsgMV0sIHQsIF9tb2RlKTsK
KyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKHR5cGUoX2NvbG9ycykgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICBj
b2wgPSBfY29sb3JzKHQpOworICAgICAgICB9CisgICAgICAgIF9jb2xvckNhY2hlW2tdID0gY29s
OworICAgICAgfQorICAgICAgcmV0dXJuIGNvbDsKKyAgICB9OworICAgIHJlc2V0Q2FjaGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBfY29sb3JDYWNoZSA9IHt9OworICAgIH07CisgICAg
c2V0Q29sb3JzKGNvbG9ycywgcG9zaXRpb25zKTsKKyAgICBmID0gZnVuY3Rpb24odikgeworICAg
ICAgdmFyIGM7CisgICAgICBjID0gZ2V0Q29sb3Iodik7CisgICAgICBpZiAoX291dCAmJiBjW19v
dXRdKSB7CisgICAgICAgIHJldHVybiBjW19vdXRdKCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICByZXR1cm4gYzsKKyAgICAgIH0KKyAgICB9OworICAgIGYuZG9tYWluID0gZnVuY3Rpb24oZG9t
YWluLCBjbGFzc2VzLCBtb2RlLCBrZXkpIHsKKyAgICAgIHZhciBkOworICAgICAgaWYgKG1vZGUg
PT0gbnVsbCkgeworICAgICAgICBtb2RlID0gJ2UnOworICAgICAgfQorICAgICAgaWYgKCFhcmd1
bWVudHMubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBfZG9tYWluOworICAgICAgfQorICAgICAg
aWYgKGNsYXNzZXMgIT0gbnVsbCkgeworICAgICAgICBkID0gY2hyb21hLmFuYWx5emUoZG9tYWlu
LCBrZXkpOworICAgICAgICBpZiAoY2xhc3NlcyA9PT0gMCkgeworICAgICAgICAgIGRvbWFpbiA9
IFtkLm1pbiwgZC5tYXhdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGRvbWFpbiA9IGNo
cm9tYS5saW1pdHMoZCwgbW9kZSwgY2xhc3Nlcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IHNldERvbWFpbihkb21haW4pOworICAgICAgcmV0dXJuIGY7CisgICAgfTsKKyAgICBmLm1vZGUg
PSBmdW5jdGlvbihfbSkgeworICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7CisgICAgICAg
IHJldHVybiBfbW9kZTsKKyAgICAgIH0KKyAgICAgIF9tb2RlID0gX207CisgICAgICByZXNldENh
Y2hlKCk7CisgICAgICByZXR1cm4gZjsKKyAgICB9OworICAgIGYucmFuZ2UgPSBmdW5jdGlvbihj
b2xvcnMsIF9wb3MpIHsKKyAgICAgIHNldENvbG9ycyhjb2xvcnMsIF9wb3MpOworICAgICAgcmV0
dXJuIGY7CisgICAgfTsKKyAgICBmLm91dCA9IGZ1bmN0aW9uKF9vKSB7CisgICAgICBfb3V0ID0g
X287CisgICAgICByZXR1cm4gZjsKKyAgICB9OworICAgIGYuc3ByZWFkID0gZnVuY3Rpb24odmFs
KSB7CisgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIF9zcHJl
YWQ7CisgICAgICB9CisgICAgICBfc3ByZWFkID0gdmFsOworICAgICAgcmV0dXJuIGY7CisgICAg
fTsKKyAgICBmLmNvcnJlY3RMaWdodG5lc3MgPSBmdW5jdGlvbih2KSB7CisgICAgICBpZiAoIWFy
Z3VtZW50cy5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIF9jb3JyZWN0TGlnaHRuZXNzOworICAg
ICAgfQorICAgICAgX2NvcnJlY3RMaWdodG5lc3MgPSB2OworICAgICAgcmVzZXRDYWNoZSgpOwor
ICAgICAgaWYgKF9jb3JyZWN0TGlnaHRuZXNzKSB7CisgICAgICAgIHRtYXAgPSBmdW5jdGlvbih0
KSB7CisgICAgICAgICAgdmFyIEwwLCBMMSwgTF9hY3R1YWwsIExfZGlmZiwgTF9pZGVhbCwgbWF4
X2l0ZXIsIHBvbCwgdDAsIHQxOworICAgICAgICAgIEwwID0gZ2V0Q29sb3IoMCwgdHJ1ZSkubGFi
KClbMF07CisgICAgICAgICAgTDEgPSBnZXRDb2xvcigxLCB0cnVlKS5sYWIoKVswXTsKKyAgICAg
ICAgICBwb2wgPSBMMCA+IEwxOworICAgICAgICAgIExfYWN0dWFsID0gZ2V0Q29sb3IodCwgdHJ1
ZSkubGFiKClbMF07CisgICAgICAgICAgTF9pZGVhbCA9IEwwICsgKEwxIC0gTDApICogdDsKKyAg
ICAgICAgICBMX2RpZmYgPSBMX2FjdHVhbCAtIExfaWRlYWw7CisgICAgICAgICAgdDAgPSAwOwor
ICAgICAgICAgIHQxID0gMTsKKyAgICAgICAgICBtYXhfaXRlciA9IDIwOworICAgICAgICAgIHdo
aWxlIChNYXRoLmFicyhMX2RpZmYpID4gMWUtMiAmJiBtYXhfaXRlci0tID4gMCkgeworICAgICAg
ICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICBpZiAocG9sKSB7CisgICAgICAgICAg
ICAgICAgTF9kaWZmICo9IC0xOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmIChM
X2RpZmYgPCAwKSB7CisgICAgICAgICAgICAgICAgdDAgPSB0OworICAgICAgICAgICAgICAgIHQg
Kz0gKHQxIC0gdCkgKiAwLjU7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgdDEgPSB0OworICAgICAgICAgICAgICAgIHQgKz0gKHQwIC0gdCkgKiAwLjU7CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgTF9hY3R1YWwgPSBnZXRDb2xvcih0LCB0cnVlKS5sYWIo
KVswXTsKKyAgICAgICAgICAgICAgcmV0dXJuIExfZGlmZiA9IExfYWN0dWFsIC0gTF9pZGVhbDsK
KyAgICAgICAgICAgIH0pKCk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0OworICAg
ICAgICB9OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdG1hcCA9IGZ1bmN0aW9uKHQpIHsKKyAg
ICAgICAgICByZXR1cm4gdDsKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBmOwor
ICAgIH07CisgICAgZi5jb2xvcnMgPSBmdW5jdGlvbihvdXQpIHsKKyAgICAgIHZhciBpLCBsZW4s
IG8sIHJlZiwgc2FtcGxlcywgdzsKKyAgICAgIGlmIChvdXQgPT0gbnVsbCkgeworICAgICAgICBv
dXQgPSAnaGV4JzsKKyAgICAgIH0KKyAgICAgIGNvbG9ycyA9IFtdOworICAgICAgc2FtcGxlcyA9
IFtdOworICAgICAgaWYgKF9kb21haW4ubGVuZ3RoID4gMikgeworICAgICAgICBmb3IgKGkgPSBv
ID0gMSwgcmVmID0gX2RvbWFpbi5sZW5ndGg7IDEgPD0gcmVmID8gbyA8IHJlZiA6IG8gPiByZWY7
IGkgPSAxIDw9IHJlZiA/ICsrbyA6IC0tbykgeworICAgICAgICAgIHNhbXBsZXMucHVzaCgoX2Rv
bWFpbltpIC0gMV0gKyBfZG9tYWluW2ldKSAqIDAuNSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHNhbXBsZXMgPSBfZG9tYWluOworICAgICAgfQorICAgICAgZm9yICh3ID0g
MCwgbGVuID0gc2FtcGxlcy5sZW5ndGg7IHcgPCBsZW47IHcrKykgeworICAgICAgICBpID0gc2Ft
cGxlc1t3XTsKKyAgICAgICAgY29sb3JzLnB1c2goZihpKVtvdXRdKCkpOworICAgICAgfQorICAg
ICAgcmV0dXJuIGNvbG9yczsKKyAgICB9OworICAgIHJldHVybiBmOworICB9OworCisgIGlmIChj
aHJvbWEuc2NhbGVzID09IG51bGwpIHsKKyAgICBjaHJvbWEuc2NhbGVzID0ge307CisgIH0KKwor
ICBjaHJvbWEuc2NhbGVzLmNvb2wgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gY2hyb21hLnNj
YWxlKFtjaHJvbWEuaHNsKDE4MCwgMSwgLjkpLCBjaHJvbWEuaHNsKDI1MCwgLjcsIC40KV0pOwor
ICB9OworCisgIGNocm9tYS5zY2FsZXMuaG90ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGNo
cm9tYS5zY2FsZShbJyMwMDAnLCAnI2YwMCcsICcjZmYwJywgJyNmZmYnXSwgWzAsIC4yNSwgLjc1
LCAxXSkubW9kZSgncmdiJyk7CisgIH07CisKKworICAvKgorICAgICAgY2hyb21hLmpzCisgIAor
ICAgICAgQ29weXJpZ2h0IChjKSAyMDExLTIwMTMsIEdyZWdvciBBaXNjaAorICAgICAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAgCisgICAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
bWV0OgorICAKKyAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgICAgICAgIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAKKyAgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLAorICAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICAgIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICAKKyAgICAgICog
VGhlIG5hbWUgR3JlZ29yIEFpc2NoIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMKKyAgICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgIAorICAgICAgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiCisgICAgICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgICAgICBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAgICAgIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdSRUdPUiBBSVNDSCBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICAgICAgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsCisgICAgICBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICAgICAgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICAgICAgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAgICAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwK
KyAgICAgIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgIAorICAgICAgQHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2drYS9jaHJvbWEuanMKKyAg
ICovCisKKyAgY2hyb21hLmFuYWx5emUgPSBmdW5jdGlvbihkYXRhLCBrZXksIGZpbHRlcikgewor
ICAgIHZhciBhZGQsIGssIGxlbiwgbywgciwgdmFsLCB2aXNpdDsKKyAgICByID0geworICAgICAg
bWluOiBOdW1iZXIuTUFYX1ZBTFVFLAorICAgICAgbWF4OiBOdW1iZXIuTUFYX1ZBTFVFICogLTEs
CisgICAgICBzdW06IDAsCisgICAgICB2YWx1ZXM6IFtdLAorICAgICAgY291bnQ6IDAKKyAgICB9
OworICAgIGlmIChmaWx0ZXIgPT0gbnVsbCkgeworICAgICAgZmlsdGVyID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfTsKKyAgICB9CisgICAgYWRkID0gZnVuY3Rp
b24odmFsKSB7CisgICAgICBpZiAoKHZhbCAhPSBudWxsKSAmJiAhaXNOYU4odmFsKSkgeworICAg
ICAgICByLnZhbHVlcy5wdXNoKHZhbCk7CisgICAgICAgIHIuc3VtICs9IHZhbDsKKyAgICAgICAg
aWYgKHZhbCA8IHIubWluKSB7CisgICAgICAgICAgci5taW4gPSB2YWw7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHZhbCA+IHIubWF4KSB7CisgICAgICAgICAgci5tYXggPSB2YWw7CisgICAgICAg
IH0KKyAgICAgICAgci5jb3VudCArPSAxOworICAgICAgfQorICAgIH07CisgICAgdmlzaXQgPSBm
dW5jdGlvbih2YWwsIGspIHsKKyAgICAgIGlmIChmaWx0ZXIodmFsLCBrKSkgeworICAgICAgICBp
ZiAoKGtleSAhPSBudWxsKSAmJiB0eXBlKGtleSkgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAg
ICByZXR1cm4gYWRkKGtleSh2YWwpKTsKKyAgICAgICAgfSBlbHNlIGlmICgoa2V5ICE9IG51bGwp
ICYmIHR5cGUoa2V5KSA9PT0gJ3N0cmluZycgfHwgdHlwZShrZXkpID09PSAnbnVtYmVyJykgewor
ICAgICAgICAgIHJldHVybiBhZGQodmFsW2tleV0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgIHJldHVybiBhZGQodmFsKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgICAgaWYg
KHR5cGUoZGF0YSkgPT09ICdhcnJheScpIHsKKyAgICAgIGZvciAobyA9IDAsIGxlbiA9IGRhdGEu
bGVuZ3RoOyBvIDwgbGVuOyBvKyspIHsKKyAgICAgICAgdmFsID0gZGF0YVtvXTsKKyAgICAgICAg
dmlzaXQodmFsKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZm9yIChrIGluIGRhdGEp
IHsKKyAgICAgICAgdmFsID0gZGF0YVtrXTsKKyAgICAgICAgdmlzaXQodmFsLCBrKTsKKyAgICAg
IH0KKyAgICB9CisgICAgci5kb21haW4gPSBbci5taW4sIHIubWF4XTsKKyAgICByLmxpbWl0cyA9
IGZ1bmN0aW9uKG1vZGUsIG51bSkgeworICAgICAgcmV0dXJuIGNocm9tYS5saW1pdHMociwgbW9k
ZSwgbnVtKTsKKyAgICB9OworICAgIHJldHVybiByOworICB9OworCisgIGNocm9tYS5saW1pdHMg
PSBmdW5jdGlvbihkYXRhLCBtb2RlLCBudW0pIHsKKyAgICB2YXIgYWEsIGFiLCBhYywgYWQsIGFl
LCBhZiwgYWcsIGFoLCBhaSwgYWosIGFrLCBhbCwgYW0sIGFzc2lnbm1lbnRzLCBiZXN0LCBjZW50
cm9pZHMsIGNsdXN0ZXIsIGNsdXN0ZXJTaXplcywgZGlzdCwgaSwgaiwga0NsdXN0ZXJzLCBsaW1p
dHMsIG1heCwgbWF4X2xvZywgbWluLCBtaW5fbG9nLCBtaW5kaXN0LCBuLCBuYl9pdGVycywgbmV3
Q2VudHJvaWRzLCBvLCBwLCBwYiwgcHIsIHJlZiwgcmVmMSwgcmVmMTAsIHJlZjExLCByZWYxMiwg
cmVmMTMsIHJlZjE0LCByZWYyLCByZWYzLCByZWY0LCByZWY1LCByZWY2LCByZWY3LCByZWY4LCBy
ZWY5LCByZXBlYXQsIHN1bSwgdG1wS01lYW5zQnJlYWtzLCB2YWx1ZSwgdmFsdWVzLCB3OworICAg
IGlmIChtb2RlID09IG51bGwpIHsKKyAgICAgIG1vZGUgPSAnZXF1YWwnOworICAgIH0KKyAgICBp
ZiAobnVtID09IG51bGwpIHsKKyAgICAgIG51bSA9IDc7CisgICAgfQorICAgIGlmICh0eXBlKGRh
dGEpID09PSAnYXJyYXknKSB7CisgICAgICBkYXRhID0gY2hyb21hLmFuYWx5emUoZGF0YSk7Cisg
ICAgfQorICAgIG1pbiA9IGRhdGEubWluOworICAgIG1heCA9IGRhdGEubWF4OworICAgIHN1bSA9
IGRhdGEuc3VtOworICAgIHZhbHVlcyA9IGRhdGEudmFsdWVzLnNvcnQoZnVuY3Rpb24oYSwgYikg
eworICAgICAgcmV0dXJuIGEgLSBiOworICAgIH0pOworICAgIGxpbWl0cyA9IFtdOworICAgIGlm
IChtb2RlLnN1YnN0cigwLCAxKSA9PT0gJ2MnKSB7CisgICAgICBsaW1pdHMucHVzaChtaW4pOwor
ICAgICAgbGltaXRzLnB1c2gobWF4KTsKKyAgICB9CisgICAgaWYgKG1vZGUuc3Vic3RyKDAsIDEp
ID09PSAnZScpIHsKKyAgICAgIGxpbWl0cy5wdXNoKG1pbik7CisgICAgICBmb3IgKGkgPSBvID0g
MSwgcmVmID0gbnVtIC0gMTsgMSA8PSByZWYgPyBvIDw9IHJlZiA6IG8gPj0gcmVmOyBpID0gMSA8
PSByZWYgPyArK28gOiAtLW8pIHsKKyAgICAgICAgbGltaXRzLnB1c2gobWluICsgKGkgLyBudW0p
ICogKG1heCAtIG1pbikpOworICAgICAgfQorICAgICAgbGltaXRzLnB1c2gobWF4KTsKKyAgICB9
IGVsc2UgaWYgKG1vZGUuc3Vic3RyKDAsIDEpID09PSAnbCcpIHsKKyAgICAgIGlmIChtaW4gPD0g
MCkgeworICAgICAgICB0aHJvdyAnTG9nYXJpdGhtaWMgc2NhbGVzIGFyZSBvbmx5IHBvc3NpYmxl
IGZvciB2YWx1ZXMgPiAwJzsKKyAgICAgIH0KKyAgICAgIG1pbl9sb2cgPSBNYXRoLkxPRzEwRSAq
IGxvZyhtaW4pOworICAgICAgbWF4X2xvZyA9IE1hdGguTE9HMTBFICogbG9nKG1heCk7CisgICAg
ICBsaW1pdHMucHVzaChtaW4pOworICAgICAgZm9yIChpID0gdyA9IDEsIHJlZjEgPSBudW0gLSAx
OyAxIDw9IHJlZjEgPyB3IDw9IHJlZjEgOiB3ID49IHJlZjE7IGkgPSAxIDw9IHJlZjEgPyArK3cg
OiAtLXcpIHsKKyAgICAgICAgbGltaXRzLnB1c2gocG93KDEwLCBtaW5fbG9nICsgKGkgLyBudW0p
ICogKG1heF9sb2cgLSBtaW5fbG9nKSkpOworICAgICAgfQorICAgICAgbGltaXRzLnB1c2gobWF4
KTsKKyAgICB9IGVsc2UgaWYgKG1vZGUuc3Vic3RyKDAsIDEpID09PSAncScpIHsKKyAgICAgIGxp
bWl0cy5wdXNoKG1pbik7CisgICAgICBmb3IgKGkgPSBhYSA9IDEsIHJlZjIgPSBudW0gLSAxOyAx
IDw9IHJlZjIgPyBhYSA8PSByZWYyIDogYWEgPj0gcmVmMjsgaSA9IDEgPD0gcmVmMiA/ICsrYWEg
OiAtLWFhKSB7CisgICAgICAgIHAgPSB2YWx1ZXMubGVuZ3RoICogaSAvIG51bTsKKyAgICAgICAg
cGIgPSBmbG9vcihwKTsKKyAgICAgICAgaWYgKHBiID09PSBwKSB7CisgICAgICAgICAgbGltaXRz
LnB1c2godmFsdWVzW3BiXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcHIgPSBwIC0g
cGI7CisgICAgICAgICAgbGltaXRzLnB1c2godmFsdWVzW3BiXSAqIHByICsgdmFsdWVzW3BiICsg
MV0gKiAoMSAtIHByKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGxpbWl0cy5wdXNoKG1h
eCk7CisgICAgfSBlbHNlIGlmIChtb2RlLnN1YnN0cigwLCAxKSA9PT0gJ2snKSB7CisKKyAgICAg
IC8qCisgICAgICBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbgorICAgICAgaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2ZpZ3VlL3NvdXJjZS9icm93c2UvdHJ1bmsvZmlndWUuanMjMzM2CisgICAgICBz
aW1wbGlmaWVkIGZvciAxLWQgaW5wdXQgdmFsdWVzCisgICAgICAgKi8KKyAgICAgIG4gPSB2YWx1
ZXMubGVuZ3RoOworICAgICAgYXNzaWdubWVudHMgPSBuZXcgQXJyYXkobik7CisgICAgICBjbHVz
dGVyU2l6ZXMgPSBuZXcgQXJyYXkobnVtKTsKKyAgICAgIHJlcGVhdCA9IHRydWU7CisgICAgICBu
Yl9pdGVycyA9IDA7CisgICAgICBjZW50cm9pZHMgPSBudWxsOworICAgICAgY2VudHJvaWRzID0g
W107CisgICAgICBjZW50cm9pZHMucHVzaChtaW4pOworICAgICAgZm9yIChpID0gYWIgPSAxLCBy
ZWYzID0gbnVtIC0gMTsgMSA8PSByZWYzID8gYWIgPD0gcmVmMyA6IGFiID49IHJlZjM7IGkgPSAx
IDw9IHJlZjMgPyArK2FiIDogLS1hYikgeworICAgICAgICBjZW50cm9pZHMucHVzaChtaW4gKyAo
aSAvIG51bSkgKiAobWF4IC0gbWluKSk7CisgICAgICB9CisgICAgICBjZW50cm9pZHMucHVzaCht
YXgpOworICAgICAgd2hpbGUgKHJlcGVhdCkgeworICAgICAgICBmb3IgKGogPSBhYyA9IDAsIHJl
ZjQgPSBudW0gLSAxOyAwIDw9IHJlZjQgPyBhYyA8PSByZWY0IDogYWMgPj0gcmVmNDsgaiA9IDAg
PD0gcmVmNCA/ICsrYWMgOiAtLWFjKSB7CisgICAgICAgICAgY2x1c3RlclNpemVzW2pdID0gMDsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBhZCA9IDAsIHJlZjUgPSBuIC0gMTsgMCA8PSBy
ZWY1ID8gYWQgPD0gcmVmNSA6IGFkID49IHJlZjU7IGkgPSAwIDw9IHJlZjUgPyArK2FkIDogLS1h
ZCkgeworICAgICAgICAgIHZhbHVlID0gdmFsdWVzW2ldOworICAgICAgICAgIG1pbmRpc3QgPSBO
dW1iZXIuTUFYX1ZBTFVFOworICAgICAgICAgIGZvciAoaiA9IGFlID0gMCwgcmVmNiA9IG51bSAt
IDE7IDAgPD0gcmVmNiA/IGFlIDw9IHJlZjYgOiBhZSA+PSByZWY2OyBqID0gMCA8PSByZWY2ID8g
KythZSA6IC0tYWUpIHsKKyAgICAgICAgICAgIGRpc3QgPSBhYnMoY2VudHJvaWRzW2pdIC0gdmFs
dWUpOworICAgICAgICAgICAgaWYgKGRpc3QgPCBtaW5kaXN0KSB7CisgICAgICAgICAgICAgIG1p
bmRpc3QgPSBkaXN0OworICAgICAgICAgICAgICBiZXN0ID0gajsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgICAgY2x1c3RlclNpemVzW2Jlc3RdKys7CisgICAgICAgICAgYXNz
aWdubWVudHNbaV0gPSBiZXN0OworICAgICAgICB9CisgICAgICAgIG5ld0NlbnRyb2lkcyA9IG5l
dyBBcnJheShudW0pOworICAgICAgICBmb3IgKGogPSBhZiA9IDAsIHJlZjcgPSBudW0gLSAxOyAw
IDw9IHJlZjcgPyBhZiA8PSByZWY3IDogYWYgPj0gcmVmNzsgaiA9IDAgPD0gcmVmNyA/ICsrYWYg
OiAtLWFmKSB7CisgICAgICAgICAgbmV3Q2VudHJvaWRzW2pdID0gbnVsbDsKKyAgICAgICAgfQor
ICAgICAgICBmb3IgKGkgPSBhZyA9IDAsIHJlZjggPSBuIC0gMTsgMCA8PSByZWY4ID8gYWcgPD0g
cmVmOCA6IGFnID49IHJlZjg7IGkgPSAwIDw9IHJlZjggPyArK2FnIDogLS1hZykgeworICAgICAg
ICAgIGNsdXN0ZXIgPSBhc3NpZ25tZW50c1tpXTsKKyAgICAgICAgICBpZiAobmV3Q2VudHJvaWRz
W2NsdXN0ZXJdID09PSBudWxsKSB7CisgICAgICAgICAgICBuZXdDZW50cm9pZHNbY2x1c3Rlcl0g
PSB2YWx1ZXNbaV07CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5ld0NlbnRyb2lk
c1tjbHVzdGVyXSArPSB2YWx1ZXNbaV07CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGZvciAoaiA9IGFoID0gMCwgcmVmOSA9IG51bSAtIDE7IDAgPD0gcmVmOSA/IGFoIDw9IHJlZjkg
OiBhaCA+PSByZWY5OyBqID0gMCA8PSByZWY5ID8gKythaCA6IC0tYWgpIHsKKyAgICAgICAgICBu
ZXdDZW50cm9pZHNbal0gKj0gMSAvIGNsdXN0ZXJTaXplc1tqXTsKKyAgICAgICAgfQorICAgICAg
ICByZXBlYXQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChqID0gYWkgPSAwLCByZWYxMCA9IG51bSAt
IDE7IDAgPD0gcmVmMTAgPyBhaSA8PSByZWYxMCA6IGFpID49IHJlZjEwOyBqID0gMCA8PSByZWYx
MCA/ICsrYWkgOiAtLWFpKSB7CisgICAgICAgICAgaWYgKG5ld0NlbnRyb2lkc1tqXSAhPT0gY2Vu
dHJvaWRzW2ldKSB7CisgICAgICAgICAgICByZXBlYXQgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNlbnRyb2lkcyA9IG5ld0NlbnRy
b2lkczsKKyAgICAgICAgbmJfaXRlcnMrKzsKKyAgICAgICAgaWYgKG5iX2l0ZXJzID4gMjAwKSB7
CisgICAgICAgICAgcmVwZWF0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGtD
bHVzdGVycyA9IHt9OworICAgICAgZm9yIChqID0gYWogPSAwLCByZWYxMSA9IG51bSAtIDE7IDAg
PD0gcmVmMTEgPyBhaiA8PSByZWYxMSA6IGFqID49IHJlZjExOyBqID0gMCA8PSByZWYxMSA/ICsr
YWogOiAtLWFqKSB7CisgICAgICAgIGtDbHVzdGVyc1tqXSA9IFtdOworICAgICAgfQorICAgICAg
Zm9yIChpID0gYWsgPSAwLCByZWYxMiA9IG4gLSAxOyAwIDw9IHJlZjEyID8gYWsgPD0gcmVmMTIg
OiBhayA+PSByZWYxMjsgaSA9IDAgPD0gcmVmMTIgPyArK2FrIDogLS1haykgeworICAgICAgICBj
bHVzdGVyID0gYXNzaWdubWVudHNbaV07CisgICAgICAgIGtDbHVzdGVyc1tjbHVzdGVyXS5wdXNo
KHZhbHVlc1tpXSk7CisgICAgICB9CisgICAgICB0bXBLTWVhbnNCcmVha3MgPSBbXTsKKyAgICAg
IGZvciAoaiA9IGFsID0gMCwgcmVmMTMgPSBudW0gLSAxOyAwIDw9IHJlZjEzID8gYWwgPD0gcmVm
MTMgOiBhbCA+PSByZWYxMzsgaiA9IDAgPD0gcmVmMTMgPyArK2FsIDogLS1hbCkgeworICAgICAg
ICB0bXBLTWVhbnNCcmVha3MucHVzaChrQ2x1c3RlcnNbal1bMF0pOworICAgICAgICB0bXBLTWVh
bnNCcmVha3MucHVzaChrQ2x1c3RlcnNbal1ba0NsdXN0ZXJzW2pdLmxlbmd0aCAtIDFdKTsKKyAg
ICAgIH0KKyAgICAgIHRtcEtNZWFuc0JyZWFrcyA9IHRtcEtNZWFuc0JyZWFrcy5zb3J0KGZ1bmN0
aW9uKGEsIGIpIHsKKyAgICAgICAgcmV0dXJuIGEgLSBiOworICAgICAgfSk7CisgICAgICBsaW1p
dHMucHVzaCh0bXBLTWVhbnNCcmVha3NbMF0pOworICAgICAgZm9yIChpID0gYW0gPSAxLCByZWYx
NCA9IHRtcEtNZWFuc0JyZWFrcy5sZW5ndGggLSAxOyBhbSA8PSByZWYxNDsgaSA9IGFtICs9IDIp
IHsKKyAgICAgICAgaWYgKCFpc05hTih0bXBLTWVhbnNCcmVha3NbaV0pKSB7CisgICAgICAgICAg
bGltaXRzLnB1c2godG1wS01lYW5zQnJlYWtzW2ldKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gbGltaXRzOworICB9OworCisKKyAgLyoqCisgIAlDb2xvckJyZXdlciBj
b2xvcnMgZm9yIGNocm9tYS5qcworICAKKyAgCUNvcHlyaWdodCAoYykgMjAwMiBDeW50aGlhIEJy
ZXdlciwgTWFyayBIYXJyb3dlciwgYW5kIFRoZSAKKyAgCVBlbm5zeWx2YW5pYSBTdGF0ZSBVbml2
ZXJzaXR5LgorICAKKyAgCUxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyAgCXlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgCVlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAkKKyAgCWh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorICAKKyAgCVVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQKKyAgCXVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FS
UkFOVElFUyBPUgorICAJQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgCXNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IAorICAgICAgQHByZXNlcnZlCisgICAqLworCisgIGNocm9tYS5icmV3ZXIgPSBicmV3ZXIgPSB7
CisgICAgT3JSZDogWycjZmZmN2VjJywgJyNmZWU4YzgnLCAnI2ZkZDQ5ZScsICcjZmRiYjg0Jywg
JyNmYzhkNTknLCAnI2VmNjU0OCcsICcjZDczMDFmJywgJyNiMzAwMDAnLCAnIzdmMDAwMCddLAor
ICAgIFB1QnU6IFsnI2ZmZjdmYicsICcjZWNlN2YyJywgJyNkMGQxZTYnLCAnI2E2YmRkYicsICcj
NzRhOWNmJywgJyMzNjkwYzAnLCAnIzA1NzBiMCcsICcjMDQ1YThkJywgJyMwMjM4NTgnXSwKKyAg
ICBCdVB1OiBbJyNmN2ZjZmQnLCAnI2UwZWNmNCcsICcjYmZkM2U2JywgJyM5ZWJjZGEnLCAnIzhj
OTZjNicsICcjOGM2YmIxJywgJyM4ODQxOWQnLCAnIzgxMGY3YycsICcjNGQwMDRiJ10sCisgICAg
T3JhbmdlczogWycjZmZmNWViJywgJyNmZWU2Y2UnLCAnI2ZkZDBhMicsICcjZmRhZTZiJywgJyNm
ZDhkM2MnLCAnI2YxNjkxMycsICcjZDk0ODAxJywgJyNhNjM2MDMnLCAnIzdmMjcwNCddLAorICAg
IEJ1R246IFsnI2Y3ZmNmZCcsICcjZTVmNWY5JywgJyNjY2VjZTYnLCAnIzk5ZDhjOScsICcjNjZj
MmE0JywgJyM0MWFlNzYnLCAnIzIzOGI0NScsICcjMDA2ZDJjJywgJyMwMDQ0MWInXSwKKyAgICBZ
bE9yQnI6IFsnI2ZmZmZlNScsICcjZmZmN2JjJywgJyNmZWUzOTEnLCAnI2ZlYzQ0ZicsICcjZmU5
OTI5JywgJyNlYzcwMTQnLCAnI2NjNGMwMicsICcjOTkzNDA0JywgJyM2NjI1MDYnXSwKKyAgICBZ
bEduOiBbJyNmZmZmZTUnLCAnI2Y3ZmNiOScsICcjZDlmMGEzJywgJyNhZGRkOGUnLCAnIzc4YzY3
OScsICcjNDFhYjVkJywgJyMyMzg0NDMnLCAnIzAwNjgzNycsICcjMDA0NTI5J10sCisgICAgUmVk
czogWycjZmZmNWYwJywgJyNmZWUwZDInLCAnI2ZjYmJhMScsICcjZmM5MjcyJywgJyNmYjZhNGEn
LCAnI2VmM2IyYycsICcjY2IxODFkJywgJyNhNTBmMTUnLCAnIzY3MDAwZCddLAorICAgIFJkUHU6
IFsnI2ZmZjdmMycsICcjZmRlMGRkJywgJyNmY2M1YzAnLCAnI2ZhOWZiNScsICcjZjc2OGExJywg
JyNkZDM0OTcnLCAnI2FlMDE3ZScsICcjN2EwMTc3JywgJyM0OTAwNmEnXSwKKyAgICBHcmVlbnM6
IFsnI2Y3ZmNmNScsICcjZTVmNWUwJywgJyNjN2U5YzAnLCAnI2ExZDk5YicsICcjNzRjNDc2Jywg
JyM0MWFiNWQnLCAnIzIzOGI0NScsICcjMDA2ZDJjJywgJyMwMDQ0MWInXSwKKyAgICBZbEduQnU6
IFsnI2ZmZmZkOScsICcjZWRmOGIxJywgJyNjN2U5YjQnLCAnIzdmY2RiYicsICcjNDFiNmM0Jywg
JyMxZDkxYzAnLCAnIzIyNWVhOCcsICcjMjUzNDk0JywgJyMwODFkNTgnXSwKKyAgICBQdXJwbGVz
OiBbJyNmY2ZiZmQnLCAnI2VmZWRmNScsICcjZGFkYWViJywgJyNiY2JkZGMnLCAnIzllOWFjOCcs
ICcjODA3ZGJhJywgJyM2YTUxYTMnLCAnIzU0Mjc4ZicsICcjM2YwMDdkJ10sCisgICAgR25CdTog
WycjZjdmY2YwJywgJyNlMGYzZGInLCAnI2NjZWJjNScsICcjYThkZGI1JywgJyM3YmNjYzQnLCAn
IzRlYjNkMycsICcjMmI4Y2JlJywgJyMwODY4YWMnLCAnIzA4NDA4MSddLAorICAgIEdyZXlzOiBb
JyNmZmZmZmYnLCAnI2YwZjBmMCcsICcjZDlkOWQ5JywgJyNiZGJkYmQnLCAnIzk2OTY5NicsICcj
NzM3MzczJywgJyM1MjUyNTInLCAnIzI1MjUyNScsICcjMDAwMDAwJ10sCisgICAgWWxPclJkOiBb
JyNmZmZmY2MnLCAnI2ZmZWRhMCcsICcjZmVkOTc2JywgJyNmZWIyNGMnLCAnI2ZkOGQzYycsICcj
ZmM0ZTJhJywgJyNlMzFhMWMnLCAnI2JkMDAyNicsICcjODAwMDI2J10sCisgICAgUHVSZDogWycj
ZjdmNGY5JywgJyNlN2UxZWYnLCAnI2Q0YjlkYScsICcjYzk5NGM3JywgJyNkZjY1YjAnLCAnI2U3
Mjk4YScsICcjY2UxMjU2JywgJyM5ODAwNDMnLCAnIzY3MDAxZiddLAorICAgIEJsdWVzOiBbJyNm
N2ZiZmYnLCAnI2RlZWJmNycsICcjYzZkYmVmJywgJyM5ZWNhZTEnLCAnIzZiYWVkNicsICcjNDI5
MmM2JywgJyMyMTcxYjUnLCAnIzA4NTE5YycsICcjMDgzMDZiJ10sCisgICAgUHVCdUduOiBbJyNm
ZmY3ZmInLCAnI2VjZTJmMCcsICcjZDBkMWU2JywgJyNhNmJkZGInLCAnIzY3YTljZicsICcjMzY5
MGMwJywgJyMwMjgxOGEnLCAnIzAxNmM1OScsICcjMDE0NjM2J10sCisgICAgU3BlY3RyYWw6IFsn
IzllMDE0MicsICcjZDUzZTRmJywgJyNmNDZkNDMnLCAnI2ZkYWU2MScsICcjZmVlMDhiJywgJyNm
ZmZmYmYnLCAnI2U2ZjU5OCcsICcjYWJkZGE0JywgJyM2NmMyYTUnLCAnIzMyODhiZCcsICcjNWU0
ZmEyJ10sCisgICAgUmRZbEduOiBbJyNhNTAwMjYnLCAnI2Q3MzAyNycsICcjZjQ2ZDQzJywgJyNm
ZGFlNjEnLCAnI2ZlZTA4YicsICcjZmZmZmJmJywgJyNkOWVmOGInLCAnI2E2ZDk2YScsICcjNjZi
ZDYzJywgJyMxYTk4NTAnLCAnIzAwNjgzNyddLAorICAgIFJkQnU6IFsnIzY3MDAxZicsICcjYjIx
ODJiJywgJyNkNjYwNGQnLCAnI2Y0YTU4MicsICcjZmRkYmM3JywgJyNmN2Y3ZjcnLCAnI2QxZTVm
MCcsICcjOTJjNWRlJywgJyM0MzkzYzMnLCAnIzIxNjZhYycsICcjMDUzMDYxJ10sCisgICAgUGlZ
RzogWycjOGUwMTUyJywgJyNjNTFiN2QnLCAnI2RlNzdhZScsICcjZjFiNmRhJywgJyNmZGUwZWYn
LCAnI2Y3ZjdmNycsICcjZTZmNWQwJywgJyNiOGUxODYnLCAnIzdmYmM0MScsICcjNGQ5MjIxJywg
JyMyNzY0MTknXSwKKyAgICBQUkduOiBbJyM0MDAwNGInLCAnIzc2MmE4MycsICcjOTk3MGFiJywg
JyNjMmE1Y2YnLCAnI2U3ZDRlOCcsICcjZjdmN2Y3JywgJyNkOWYwZDMnLCAnI2E2ZGJhMCcsICcj
NWFhZTYxJywgJyMxYjc4MzcnLCAnIzAwNDQxYiddLAorICAgIFJkWWxCdTogWycjYTUwMDI2Jywg
JyNkNzMwMjcnLCAnI2Y0NmQ0MycsICcjZmRhZTYxJywgJyNmZWUwOTAnLCAnI2ZmZmZiZicsICcj
ZTBmM2Y4JywgJyNhYmQ5ZTknLCAnIzc0YWRkMScsICcjNDU3NWI0JywgJyMzMTM2OTUnXSwKKyAg
ICBCckJHOiBbJyM1NDMwMDUnLCAnIzhjNTEwYScsICcjYmY4MTJkJywgJyNkZmMyN2QnLCAnI2Y2
ZThjMycsICcjZjVmNWY1JywgJyNjN2VhZTUnLCAnIzgwY2RjMScsICcjMzU5NzhmJywgJyMwMTY2
NWUnLCAnIzAwM2MzMCddLAorICAgIFJkR3k6IFsnIzY3MDAxZicsICcjYjIxODJiJywgJyNkNjYw
NGQnLCAnI2Y0YTU4MicsICcjZmRkYmM3JywgJyNmZmZmZmYnLCAnI2UwZTBlMCcsICcjYmFiYWJh
JywgJyM4Nzg3ODcnLCAnIzRkNGQ0ZCcsICcjMWExYTFhJ10sCisgICAgUHVPcjogWycjN2YzYjA4
JywgJyNiMzU4MDYnLCAnI2UwODIxNCcsICcjZmRiODYzJywgJyNmZWUwYjYnLCAnI2Y3ZjdmNycs
ICcjZDhkYWViJywgJyNiMmFiZDInLCAnIzgwNzNhYycsICcjNTQyNzg4JywgJyMyZDAwNGInXSwK
KyAgICBTZXQyOiBbJyM2NmMyYTUnLCAnI2ZjOGQ2MicsICcjOGRhMGNiJywgJyNlNzhhYzMnLCAn
I2E2ZDg1NCcsICcjZmZkOTJmJywgJyNlNWM0OTQnLCAnI2IzYjNiMyddLAorICAgIEFjY2VudDog
WycjN2ZjOTdmJywgJyNiZWFlZDQnLCAnI2ZkYzA4NicsICcjZmZmZjk5JywgJyMzODZjYjAnLCAn
I2YwMDI3ZicsICcjYmY1YjE3JywgJyM2NjY2NjYnXSwKKyAgICBTZXQxOiBbJyNlNDFhMWMnLCAn
IzM3N2ViOCcsICcjNGRhZjRhJywgJyM5ODRlYTMnLCAnI2ZmN2YwMCcsICcjZmZmZjMzJywgJyNh
NjU2MjgnLCAnI2Y3ODFiZicsICcjOTk5OTk5J10sCisgICAgU2V0MzogWycjOGRkM2M3JywgJyNm
ZmZmYjMnLCAnI2JlYmFkYScsICcjZmI4MDcyJywgJyM4MGIxZDMnLCAnI2ZkYjQ2MicsICcjYjNk
ZTY5JywgJyNmY2NkZTUnLCAnI2Q5ZDlkOScsICcjYmM4MGJkJywgJyNjY2ViYzUnLCAnI2ZmZWQ2
ZiddLAorICAgIERhcmsyOiBbJyMxYjllNzcnLCAnI2Q5NWYwMicsICcjNzU3MGIzJywgJyNlNzI5
OGEnLCAnIzY2YTYxZScsICcjZTZhYjAyJywgJyNhNjc2MWQnLCAnIzY2NjY2NiddLAorICAgIFBh
aXJlZDogWycjYTZjZWUzJywgJyMxZjc4YjQnLCAnI2IyZGY4YScsICcjMzNhMDJjJywgJyNmYjlh
OTknLCAnI2UzMWExYycsICcjZmRiZjZmJywgJyNmZjdmMDAnLCAnI2NhYjJkNicsICcjNmEzZDlh
JywgJyNmZmZmOTknLCAnI2IxNTkyOCddLAorICAgIFBhc3RlbDI6IFsnI2IzZTJjZCcsICcjZmRj
ZGFjJywgJyNjYmQ1ZTgnLCAnI2Y0Y2FlNCcsICcjZTZmNWM5JywgJyNmZmYyYWUnLCAnI2YxZTJj
YycsICcjY2NjY2NjJ10sCisgICAgUGFzdGVsMTogWycjZmJiNGFlJywgJyNiM2NkZTMnLCAnI2Nj
ZWJjNScsICcjZGVjYmU0JywgJyNmZWQ5YTYnLCAnI2ZmZmZjYycsICcjZTVkOGJkJywgJyNmZGRh
ZWMnLCAnI2YyZjJmMiddCisgIH07CisKKworICAvKioKKyAgCVgxMSBjb2xvciBuYW1lcworICAK
KyAgCWh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29sb3IvI3N2Zy1jb2xvcgorICAgKi8KKwor
ICBjaHJvbWEuY29sb3JzID0gY29sb3JzID0geworICAgIGluZGlnbzogIiM0YjAwODIiLAorICAg
IGdvbGQ6ICIjZmZkNzAwIiwKKyAgICBob3RwaW5rOiAiI2ZmNjliNCIsCisgICAgZmlyZWJyaWNr
OiAiI2IyMjIyMiIsCisgICAgaW5kaWFucmVkOiAiI2NkNWM1YyIsCisgICAgeWVsbG93OiAiI2Zm
ZmYwMCIsCisgICAgbWlzdHlyb3NlOiAiI2ZmZTRlMSIsCisgICAgZGFya29saXZlZ3JlZW46ICIj
NTU2YjJmIiwKKyAgICBvbGl2ZTogIiM4MDgwMDAiLAorICAgIGRhcmtzZWFncmVlbjogIiM4ZmJj
OGYiLAorICAgIHBpbms6ICIjZmZjMGNiIiwKKyAgICB0b21hdG86ICIjZmY2MzQ3IiwKKyAgICBs
aWdodGNvcmFsOiAiI2YwODA4MCIsCisgICAgb3JhbmdlcmVkOiAiI2ZmNDUwMCIsCisgICAgbmF2
YWpvd2hpdGU6ICIjZmZkZWFkIiwKKyAgICBsaW1lOiAiIzAwZmYwMCIsCisgICAgcGFsZWdyZWVu
OiAiIzk4ZmI5OCIsCisgICAgZGFya3NsYXRlZ3JleTogIiMyZjRmNGYiLAorICAgIGdyZWVueWVs
bG93OiAiI2FkZmYyZiIsCisgICAgYnVybHl3b29kOiAiI2RlYjg4NyIsCisgICAgc2Vhc2hlbGw6
ICIjZmZmNWVlIiwKKyAgICBtZWRpdW1zcHJpbmdncmVlbjogIiMwMGZhOWEiLAorICAgIGZ1Y2hz
aWE6ICIjZmYwMGZmIiwKKyAgICBwYXBheWF3aGlwOiAiI2ZmZWZkNSIsCisgICAgYmxhbmNoZWRh
bG1vbmQ6ICIjZmZlYmNkIiwKKyAgICBjaGFydHJldXNlOiAiIzdmZmYwMCIsCisgICAgZGltZ3Jh
eTogIiM2OTY5NjkiLAorICAgIGJsYWNrOiAiIzAwMDAwMCIsCisgICAgcGVhY2hwdWZmOiAiI2Zm
ZGFiOSIsCisgICAgc3ByaW5nZ3JlZW46ICIjMDBmZjdmIiwKKyAgICBhcXVhbWFyaW5lOiAiIzdm
ZmZkNCIsCisgICAgd2hpdGU6ICIjZmZmZmZmIiwKKyAgICBvcmFuZ2U6ICIjZmZhNTAwIiwKKyAg
ICBsaWdodHNhbG1vbjogIiNmZmEwN2EiLAorICAgIGRhcmtzbGF0ZWdyYXk6ICIjMmY0ZjRmIiwK
KyAgICBicm93bjogIiNhNTJhMmEiLAorICAgIGl2b3J5OiAiI2ZmZmZmMCIsCisgICAgZG9kZ2Vy
Ymx1ZTogIiMxZTkwZmYiLAorICAgIHBlcnU6ICIjY2Q4NTNmIiwKKyAgICBsYXduZ3JlZW46ICIj
N2NmYzAwIiwKKyAgICBjaG9jb2xhdGU6ICIjZDI2OTFlIiwKKyAgICBjcmltc29uOiAiI2RjMTQz
YyIsCisgICAgZm9yZXN0Z3JlZW46ICIjMjI4YjIyIiwKKyAgICBkYXJrZ3JleTogIiNhOWE5YTki
LAorICAgIGxpZ2h0c2VhZ3JlZW46ICIjMjBiMmFhIiwKKyAgICBjeWFuOiAiIzAwZmZmZiIsCisg
ICAgbWludGNyZWFtOiAiI2Y1ZmZmYSIsCisgICAgc2lsdmVyOiAiI2MwYzBjMCIsCisgICAgYW50
aXF1ZXdoaXRlOiAiI2ZhZWJkNyIsCisgICAgbWVkaXVtb3JjaGlkOiAiI2JhNTVkMyIsCisgICAg
c2t5Ymx1ZTogIiM4N2NlZWIiLAorICAgIGdyYXk6ICIjODA4MDgwIiwKKyAgICBkYXJrdHVycXVv
aXNlOiAiIzAwY2VkMSIsCisgICAgZ29sZGVucm9kOiAiI2RhYTUyMCIsCisgICAgZGFya2dyZWVu
OiAiIzAwNjQwMCIsCisgICAgZmxvcmFsd2hpdGU6ICIjZmZmYWYwIiwKKyAgICBkYXJrdmlvbGV0
OiAiIzk0MDBkMyIsCisgICAgZGFya2dyYXk6ICIjYTlhOWE5IiwKKyAgICBtb2NjYXNpbjogIiNm
ZmU0YjUiLAorICAgIHNhZGRsZWJyb3duOiAiIzhiNDUxMyIsCisgICAgZ3JleTogIiM4MDgwODAi
LAorICAgIGRhcmtzbGF0ZWJsdWU6ICIjNDgzZDhiIiwKKyAgICBsaWdodHNreWJsdWU6ICIjODdj
ZWZhIiwKKyAgICBsaWdodHBpbms6ICIjZmZiNmMxIiwKKyAgICBtZWRpdW12aW9sZXRyZWQ6ICIj
YzcxNTg1IiwKKyAgICBzbGF0ZWdyZXk6ICIjNzA4MDkwIiwKKyAgICByZWQ6ICIjZmYwMDAwIiwK
KyAgICBkZWVwcGluazogIiNmZjE0OTMiLAorICAgIGxpbWVncmVlbjogIiMzMmNkMzIiLAorICAg
IGRhcmttYWdlbnRhOiAiIzhiMDA4YiIsCisgICAgcGFsZWdvbGRlbnJvZDogIiNlZWU4YWEiLAor
ICAgIHBsdW06ICIjZGRhMGRkIiwKKyAgICB0dXJxdW9pc2U6ICIjNDBlMGQwIiwKKyAgICBsaWdo
dGdyZXk6ICIjZDNkM2QzIiwKKyAgICBsaWdodGdvbGRlbnJvZHllbGxvdzogIiNmYWZhZDIiLAor
ICAgIGRhcmtnb2xkZW5yb2Q6ICIjYjg4NjBiIiwKKyAgICBsYXZlbmRlcjogIiNlNmU2ZmEiLAor
ICAgIG1hcm9vbjogIiM4MDAwMDAiLAorICAgIHllbGxvd2dyZWVuOiAiIzlhY2QzMiIsCisgICAg
c2FuZHlicm93bjogIiNmNGE0NjAiLAorICAgIHRoaXN0bGU6ICIjZDhiZmQ4IiwKKyAgICB2aW9s
ZXQ6ICIjZWU4MmVlIiwKKyAgICBuYXZ5OiAiIzAwMDA4MCIsCisgICAgbWFnZW50YTogIiNmZjAw
ZmYiLAorICAgIGRpbWdyZXk6ICIjNjk2OTY5IiwKKyAgICB0YW46ICIjZDJiNDhjIiwKKyAgICBy
b3N5YnJvd246ICIjYmM4ZjhmIiwKKyAgICBvbGl2ZWRyYWI6ICIjNmI4ZTIzIiwKKyAgICBibHVl
OiAiIzAwMDBmZiIsCisgICAgbGlnaHRibHVlOiAiI2FkZDhlNiIsCisgICAgZ2hvc3R3aGl0ZTog
IiNmOGY4ZmYiLAorICAgIGhvbmV5ZGV3OiAiI2YwZmZmMCIsCisgICAgY29ybmZsb3dlcmJsdWU6
ICIjNjQ5NWVkIiwKKyAgICBzbGF0ZWJsdWU6ICIjNmE1YWNkIiwKKyAgICBsaW5lbjogIiNmYWYw
ZTYiLAorICAgIGRhcmtibHVlOiAiIzAwMDA4YiIsCisgICAgcG93ZGVyYmx1ZTogIiNiMGUwZTYi
LAorICAgIHNlYWdyZWVuOiAiIzJlOGI1NyIsCisgICAgZGFya2toYWtpOiAiI2JkYjc2YiIsCisg
ICAgc25vdzogIiNmZmZhZmEiLAorICAgIHNpZW5uYTogIiNhMDUyMmQiLAorICAgIG1lZGl1bWJs
dWU6ICIjMDAwMGNkIiwKKyAgICByb3lhbGJsdWU6ICIjNDE2OWUxIiwKKyAgICBsaWdodGN5YW46
ICIjZTBmZmZmIiwKKyAgICBncmVlbjogIiMwMDgwMDAiLAorICAgIG1lZGl1bXB1cnBsZTogIiM5
MzcwZGIiLAorICAgIG1pZG5pZ2h0Ymx1ZTogIiMxOTE5NzAiLAorICAgIGNvcm5zaWxrOiAiI2Zm
ZjhkYyIsCisgICAgcGFsZXR1cnF1b2lzZTogIiNhZmVlZWUiLAorICAgIGJpc3F1ZTogIiNmZmU0
YzQiLAorICAgIHNsYXRlZ3JheTogIiM3MDgwOTAiLAorICAgIGRhcmtjeWFuOiAiIzAwOGI4YiIs
CisgICAga2hha2k6ICIjZjBlNjhjIiwKKyAgICB3aGVhdDogIiNmNWRlYjMiLAorICAgIHRlYWw6
ICIjMDA4MDgwIiwKKyAgICBkYXJrb3JjaGlkOiAiIzk5MzJjYyIsCisgICAgZGVlcHNreWJsdWU6
ICIjMDBiZmZmIiwKKyAgICBzYWxtb246ICIjZmE4MDcyIiwKKyAgICBkYXJrcmVkOiAiIzhiMDAw
MCIsCisgICAgc3RlZWxibHVlOiAiIzQ2ODJiNCIsCisgICAgcGFsZXZpb2xldHJlZDogIiNkYjcw
OTMiLAorICAgIGxpZ2h0c2xhdGVncmF5OiAiIzc3ODg5OSIsCisgICAgYWxpY2VibHVlOiAiI2Yw
ZjhmZiIsCisgICAgbGlnaHRzbGF0ZWdyZXk6ICIjNzc4ODk5IiwKKyAgICBsaWdodGdyZWVuOiAi
IzkwZWU5MCIsCisgICAgb3JjaGlkOiAiI2RhNzBkNiIsCisgICAgZ2FpbnNib3JvOiAiI2RjZGNk
YyIsCisgICAgbWVkaXVtc2VhZ3JlZW46ICIjM2NiMzcxIiwKKyAgICBsaWdodGdyYXk6ICIjZDNk
M2QzIiwKKyAgICBtZWRpdW10dXJxdW9pc2U6ICIjNDhkMWNjIiwKKyAgICBsZW1vbmNoaWZmb246
ICIjZmZmYWNkIiwKKyAgICBjYWRldGJsdWU6ICIjNWY5ZWEwIiwKKyAgICBsaWdodHllbGxvdzog
IiNmZmZmZTAiLAorICAgIGxhdmVuZGVyYmx1c2g6ICIjZmZmMGY1IiwKKyAgICBjb3JhbDogIiNm
ZjdmNTAiLAorICAgIHB1cnBsZTogIiM4MDAwODAiLAorICAgIGFxdWE6ICIjMDBmZmZmIiwKKyAg
ICB3aGl0ZXNtb2tlOiAiI2Y1ZjVmNSIsCisgICAgbWVkaXVtc2xhdGVibHVlOiAiIzdiNjhlZSIs
CisgICAgZGFya29yYW5nZTogIiNmZjhjMDAiLAorICAgIG1lZGl1bWFxdWFtYXJpbmU6ICIjNjZj
ZGFhIiwKKyAgICBkYXJrc2FsbW9uOiAiI2U5OTY3YSIsCisgICAgYmVpZ2U6ICIjZjVmNWRjIiwK
KyAgICBibHVldmlvbGV0OiAiIzhhMmJlMiIsCisgICAgYXp1cmU6ICIjZjBmZmZmIiwKKyAgICBs
aWdodHN0ZWVsYmx1ZTogIiNiMGM0ZGUiLAorICAgIG9sZGxhY2U6ICIjZmRmNWU2IiwKKyAgICBy
ZWJlY2NhcHVycGxlOiAiIzY2MzM5OSIKKyAgfTsKKworCisgIC8qCisgICAgICBjaHJvbWEuanMK
KyAgCisgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMywgR3JlZ29yIEFpc2NoCisgICAgICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICAKKyAgICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisgIAorICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAgICAgICAgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgIAorICAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UsCisgICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAgICAgICAgYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgIAorICAg
ICAgKiBUaGUgbmFtZSBHcmVnb3IgQWlzY2ggbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cworICAgICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAgCisgICAgICBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTICJBUyBJUyIKKyAgICAgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAgICAgIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICAgICAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR1JFR09SIEFJU0NI
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgICAgICBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywKKyAgICAgIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgICAgICBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgICAgICBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICAgICAgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLAorICAgICAgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAgCisgICAgICBAc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ2thL2Nocm9tYS5q
cworICAgKi8KKworICB0eXBlID0gKGZ1bmN0aW9uKCkgeworCisgICAgLyoKKyAgICBmb3IgYnJv
d3Nlci1zYWZlIHR5cGUgY2hlY2tpbmcrCisgICAgcG9ydGVkIGZyb20galF1ZXJ5J3MgJC50eXBl
CisgICAgICovCisgICAgdmFyIGNsYXNzVG9UeXBlLCBsZW4sIG5hbWUsIG8sIHJlZjsKKyAgICBj
bGFzc1RvVHlwZSA9IHt9OworICAgIHJlZiA9ICJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rp
b24gQXJyYXkgRGF0ZSBSZWdFeHAgVW5kZWZpbmVkIE51bGwiLnNwbGl0KCIgIik7CisgICAgZm9y
IChvID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgbyA8IGxlbjsgbysrKSB7CisgICAgICBuYW1lID0g
cmVmW29dOworICAgICAgY2xhc3NUb1R5cGVbIltvYmplY3QgIiArIG5hbWUgKyAiXSJdID0gbmFt
ZS50b0xvd2VyQ2FzZSgpOworICAgIH0KKyAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7CisgICAg
ICB2YXIgc3RyVHlwZTsKKyAgICAgIHN0clR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwob2JqKTsKKyAgICAgIHJldHVybiBjbGFzc1RvVHlwZVtzdHJUeXBlXSB8fCAib2JqZWN0
IjsKKyAgICB9OworICB9KSgpOworCisgIGxpbWl0ID0gZnVuY3Rpb24oeCwgbWluLCBtYXgpIHsK
KyAgICBpZiAobWluID09IG51bGwpIHsKKyAgICAgIG1pbiA9IDA7CisgICAgfQorICAgIGlmICht
YXggPT0gbnVsbCkgeworICAgICAgbWF4ID0gMTsKKyAgICB9CisgICAgaWYgKHggPCBtaW4pIHsK
KyAgICAgIHggPSBtaW47CisgICAgfQorICAgIGlmICh4ID4gbWF4KSB7CisgICAgICB4ID0gbWF4
OworICAgIH0KKyAgICByZXR1cm4geDsKKyAgfTsKKworICB1bnBhY2sgPSBmdW5jdGlvbihhcmdz
KSB7CisgICAgaWYgKGFyZ3MubGVuZ3RoID49IDMpIHsKKyAgICAgIHJldHVybiBhcmdzOworICAg
IH0gZWxzZSB7CisgICAgICByZXR1cm4gYXJnc1swXTsKKyAgICB9CisgIH07CisKKyAgVFdPUEkg
PSBNYXRoLlBJICogMjsKKworICBQSVRISVJEID0gTWF0aC5QSSAvIDM7CisKKyAgcm91bmQgPSBN
YXRoLnJvdW5kLCBjb3MgPSBNYXRoLmNvcywgZmxvb3IgPSBNYXRoLmZsb29yLCBwb3cgPSBNYXRo
LnBvdywgbG9nID0gTWF0aC5sb2csIHNpbiA9IE1hdGguc2luOworCisKKyAgLyoKKyAgaW50ZXJw
b2xhdGVzIGJldHdlZW4gYSBzZXQgb2YgY29sb3JzIHV6aW5nIGEgYmV6aWVyIHNwbGluZQorICAg
Ki8KKworICBiZXppZXIgPSBmdW5jdGlvbihjb2xvcnMpIHsKKyAgICB2YXIgSSwgSTAsIEkxLCBj
LCBsYWIwLCBsYWIxLCBsYWIyLCBsYWIzLCByZWYsIHJlZjEsIHJlZjI7CisgICAgY29sb3JzID0g
KGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGxlbiwgbywgcmVzdWx0czsKKyAgICAgIHJlc3VsdHMg
PSBbXTsKKyAgICAgIGZvciAobyA9IDAsIGxlbiA9IGNvbG9ycy5sZW5ndGg7IG8gPCBsZW47IG8r
KykgeworICAgICAgICBjID0gY29sb3JzW29dOworICAgICAgICByZXN1bHRzLnB1c2goY2hyb21h
KGMpKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHRzOworICAgIH0pKCk7CisgICAgaWYg
KGNvbG9ycy5sZW5ndGggPT09IDIpIHsKKyAgICAgIHJlZiA9IChmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIGxlbiwgbywgcmVzdWx0czsKKyAgICAgICAgcmVzdWx0cyA9IFtdOworICAgICAgICBm
b3IgKG8gPSAwLCBsZW4gPSBjb2xvcnMubGVuZ3RoOyBvIDwgbGVuOyBvKyspIHsKKyAgICAgICAg
ICBjID0gY29sb3JzW29dOworICAgICAgICAgIHJlc3VsdHMucHVzaChjLmxhYigpKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgIH0pKCksIGxhYjAgPSByZWZbMF0s
IGxhYjEgPSByZWZbMV07CisgICAgICBJID0gZnVuY3Rpb24odCkgeworICAgICAgICB2YXIgaSwg
bGFiOworICAgICAgICBsYWIgPSAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIG8sIHJlc3Vs
dHM7CisgICAgICAgICAgcmVzdWx0cyA9IFtdOworICAgICAgICAgIGZvciAoaSA9IG8gPSAwOyBv
IDw9IDI7IGkgPSArK28pIHsKKyAgICAgICAgICAgIHJlc3VsdHMucHVzaChsYWIwW2ldICsgdCAq
IChsYWIxW2ldIC0gbGFiMFtpXSkpOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gcmVz
dWx0czsKKyAgICAgICAgfSkoKTsKKyAgICAgICAgcmV0dXJuIGNocm9tYS5sYWIuYXBwbHkoY2hy
b21hLCBsYWIpOworICAgICAgfTsKKyAgICB9IGVsc2UgaWYgKGNvbG9ycy5sZW5ndGggPT09IDMp
IHsKKyAgICAgIHJlZjEgPSAoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBsZW4sIG8sIHJlc3Vs
dHM7CisgICAgICAgIHJlc3VsdHMgPSBbXTsKKyAgICAgICAgZm9yIChvID0gMCwgbGVuID0gY29s
b3JzLmxlbmd0aDsgbyA8IGxlbjsgbysrKSB7CisgICAgICAgICAgYyA9IGNvbG9yc1tvXTsKKyAg
ICAgICAgICByZXN1bHRzLnB1c2goYy5sYWIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHJlc3VsdHM7CisgICAgICB9KSgpLCBsYWIwID0gcmVmMVswXSwgbGFiMSA9IHJlZjFbMV0sIGxh
YjIgPSByZWYxWzJdOworICAgICAgSSA9IGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgdmFyIGksIGxh
YjsKKyAgICAgICAgbGFiID0gKGZ1bmN0aW9uKCkgeworICAgICAgICAgIHZhciBvLCByZXN1bHRz
OworICAgICAgICAgIHJlc3VsdHMgPSBbXTsKKyAgICAgICAgICBmb3IgKGkgPSBvID0gMDsgbyA8
PSAyOyBpID0gKytvKSB7CisgICAgICAgICAgICByZXN1bHRzLnB1c2goKDEgLSB0KSAqICgxIC0g
dCkgKiBsYWIwW2ldICsgMiAqICgxIC0gdCkgKiB0ICogbGFiMVtpXSArIHQgKiB0ICogbGFiMltp
XSk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICB9KSgp
OworICAgICAgICByZXR1cm4gY2hyb21hLmxhYi5hcHBseShjaHJvbWEsIGxhYik7CisgICAgICB9
OworICAgIH0gZWxzZSBpZiAoY29sb3JzLmxlbmd0aCA9PT0gNCkgeworICAgICAgcmVmMiA9IChm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGxlbiwgbywgcmVzdWx0czsKKyAgICAgICAgcmVzdWx0
cyA9IFtdOworICAgICAgICBmb3IgKG8gPSAwLCBsZW4gPSBjb2xvcnMubGVuZ3RoOyBvIDwgbGVu
OyBvKyspIHsKKyAgICAgICAgICBjID0gY29sb3JzW29dOworICAgICAgICAgIHJlc3VsdHMucHVz
aChjLmxhYigpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgIH0p
KCksIGxhYjAgPSByZWYyWzBdLCBsYWIxID0gcmVmMlsxXSwgbGFiMiA9IHJlZjJbMl0sIGxhYjMg
PSByZWYyWzNdOworICAgICAgSSA9IGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgdmFyIGksIGxhYjsK
KyAgICAgICAgbGFiID0gKGZ1bmN0aW9uKCkgeworICAgICAgICAgIHZhciBvLCByZXN1bHRzOwor
ICAgICAgICAgIHJlc3VsdHMgPSBbXTsKKyAgICAgICAgICBmb3IgKGkgPSBvID0gMDsgbyA8PSAy
OyBpID0gKytvKSB7CisgICAgICAgICAgICByZXN1bHRzLnB1c2goKDEgLSB0KSAqICgxIC0gdCkg
KiAoMSAtIHQpICogbGFiMFtpXSArIDMgKiAoMSAtIHQpICogKDEgLSB0KSAqIHQgKiBsYWIxW2ld
ICsgMyAqICgxIC0gdCkgKiB0ICogdCAqIGxhYjJbaV0gKyB0ICogdCAqIHQgKiBsYWIzW2ldKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgIH0pKCk7Cisg
ICAgICAgIHJldHVybiBjaHJvbWEubGFiLmFwcGx5KGNocm9tYSwgbGFiKTsKKyAgICAgIH07Cisg
ICAgfSBlbHNlIGlmIChjb2xvcnMubGVuZ3RoID09PSA1KSB7CisgICAgICBJMCA9IGJlemllcihj
b2xvcnMuc2xpY2UoMCwgMykpOworICAgICAgSTEgPSBiZXppZXIoY29sb3JzLnNsaWNlKDIsIDUp
KTsKKyAgICAgIEkgPSBmdW5jdGlvbih0KSB7CisgICAgICAgIGlmICh0IDwgMC41KSB7CisgICAg
ICAgICAgcmV0dXJuIEkwKHQgKiAyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gSTEoKHQgLSAwLjUpICogMik7CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfQorICAgIHJl
dHVybiBJOworICB9OworCisgIGNocm9tYS5pbnRlcnBvbGF0ZS5iZXppZXIgPSBiZXppZXI7CisK
KworICAvKgorICBpbnRlcnBvbGF0ZXMgYmV0d2VlbiBhIHNldCBvZiBjb2xvcnMgdXppbmcgYSBi
ZXppZXIgc3BsaW5lCisgIAorICBibGVuZCBtb2RlIGZvcm11bGFzIHRha2VuIGZyb206CisgIGh0
dHA6Ly93d3cudmVudHVyZS13YXJlLmNvbS9rZXZpbi9jb2RpbmcvbGV0cy1sZWFybi1tYXRoLXBo
b3Rvc2hvcC1ibGVuZC1tb2Rlcy8KKyAgICovCisKKyAgYmxlbmQgPSBmdW5jdGlvbihib3R0b20s
IHRvcCwgbW9kZSkgeworICAgIGlmICghYmxlbmRbbW9kZV0pIHsKKyAgICAgIHRocm93ICd1bmtu
b3duIGJsZW5kIG1vZGUgJyArIG1vZGU7CisgICAgfQorICAgIHJldHVybiBibGVuZFttb2RlXShi
b3R0b20sIHRvcCk7CisgIH07CisKKyAgYmxlbmRfZiA9IGZ1bmN0aW9uKGYpIHsKKyAgICByZXR1
cm4gZnVuY3Rpb24oYm90dG9tLCB0b3ApIHsKKyAgICAgIHZhciBjMCwgYzE7CisgICAgICBjMCA9
IGNocm9tYSh0b3ApLnJnYigpOworICAgICAgYzEgPSBjaHJvbWEoYm90dG9tKS5yZ2IoKTsKKyAg
ICAgIHJldHVybiBjaHJvbWEoZihjMCwgYzEpLCAncmdiJyk7CisgICAgfTsKKyAgfTsKKworICBl
YWNoID0gZnVuY3Rpb24oZikgeworICAgIHJldHVybiBmdW5jdGlvbihjMCwgYzEpIHsKKyAgICAg
IHZhciBpLCBvLCBvdXQ7CisgICAgICBvdXQgPSBbXTsKKyAgICAgIGZvciAoaSA9IG8gPSAwOyBv
IDw9IDM7IGkgPSArK28pIHsKKyAgICAgICAgb3V0W2ldID0gZihjMFtpXSwgYzFbaV0pOworICAg
ICAgfQorICAgICAgcmV0dXJuIG91dDsKKyAgICB9OworICB9OworCisgIG5vcm1hbCA9IGZ1bmN0
aW9uKGEsIGIpIHsKKyAgICByZXR1cm4gYTsKKyAgfTsKKworICBtdWx0aXBseSA9IGZ1bmN0aW9u
KGEsIGIpIHsKKyAgICByZXR1cm4gYSAqIGIgLyAyNTU7CisgIH07CisKKyAgZGFya2VuID0gZnVu
Y3Rpb24oYSwgYikgeworICAgIGlmIChhID4gYikgeworICAgICAgcmV0dXJuIGI7CisgICAgfSBl
bHNlIHsKKyAgICAgIHJldHVybiBhOworICAgIH0KKyAgfTsKKworICBsaWdodGVuID0gZnVuY3Rp
b24oYSwgYikgeworICAgIGlmIChhID4gYikgeworICAgICAgcmV0dXJuIGE7CisgICAgfSBlbHNl
IHsKKyAgICAgIHJldHVybiBiOworICAgIH0KKyAgfTsKKworICBzY3JlZW4gPSBmdW5jdGlvbihh
LCBiKSB7CisgICAgcmV0dXJuIDI1NSAqICgxIC0gKDEgLSBhIC8gMjU1KSAqICgxIC0gYiAvIDI1
NSkpOworICB9OworCisgIG92ZXJsYXkgPSBmdW5jdGlvbihhLCBiKSB7CisgICAgaWYgKGIgPCAx
MjgpIHsKKyAgICAgIHJldHVybiAyICogYSAqIGIgLyAyNTU7CisgICAgfSBlbHNlIHsKKyAgICAg
IHJldHVybiAyNTUgKiAoMSAtIDIgKiAoMSAtIGEgLyAyNTUpICogKDEgLSBiIC8gMjU1KSk7Cisg
ICAgfQorICB9OworCisgIGJ1cm4gPSBmdW5jdGlvbihhLCBiKSB7CisgICAgcmV0dXJuIDI1NSAq
ICgxIC0gKDEgLSBiIC8gMjU1KSAvIChhIC8gMjU1KSk7CisgIH07CisKKyAgZG9kZ2UgPSBmdW5j
dGlvbihhLCBiKSB7CisgICAgaWYgKGEgPT09IDI1NSkgeworICAgICAgcmV0dXJuIDI1NTsKKyAg
ICB9CisgICAgYSA9IDI1NSAqIChiIC8gMjU1KSAvICgxIC0gYSAvIDI1NSk7CisgICAgaWYgKGEg
PiAyNTUpIHsKKyAgICAgIHJldHVybiAyNTU7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBh
OworICAgIH0KKyAgfTsKKworICBibGVuZC5ub3JtYWwgPSBibGVuZF9mKGVhY2gobm9ybWFsKSk7
CisKKyAgYmxlbmQubXVsdGlwbHkgPSBibGVuZF9mKGVhY2gobXVsdGlwbHkpKTsKKworICBibGVu
ZC5zY3JlZW4gPSBibGVuZF9mKGVhY2goc2NyZWVuKSk7CisKKyAgYmxlbmQub3ZlcmxheSA9IGJs
ZW5kX2YoZWFjaChvdmVybGF5KSk7CisKKyAgYmxlbmQuZGFya2VuID0gYmxlbmRfZihlYWNoKGRh
cmtlbikpOworCisgIGJsZW5kLmxpZ2h0ZW4gPSBibGVuZF9mKGVhY2gobGlnaHRlbikpOworCisg
IGJsZW5kLmRvZGdlID0gYmxlbmRfZihlYWNoKGRvZGdlKSk7CisKKyAgYmxlbmQuYnVybiA9IGJs
ZW5kX2YoZWFjaChidXJuKSk7CisKKyAgY2hyb21hLmJsZW5kID0gYmxlbmQ7CisKKworICAvKgor
ICAgICAgY2hyb21hLmpzCisgIAorICAgICAgQ29weXJpZ2h0IChjKSAyMDExLTIwMTMsIEdyZWdv
ciBBaXNjaAorICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgCisgICAgICBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAgICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICAKKyAgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
CisgICAgICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICAKKyAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAgICAgICB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
CisgICAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICAKKyAgICAgICogVGhlIG5hbWUgR3JlZ29yIEFpc2NoIG1heSBub3QgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAgICAgICAgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
IAorICAgICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgICAgICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgICAg
ICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAgICAgIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEdSRUdPUiBBSVNDSCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LAorICAgICAgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCisgICAgICBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICAgICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICAgICAgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAgICAg
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwKKyAgICAgIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgIAorICAgICAgQHNvdXJjZTogaHR0cHM6Ly9naXRodWIu
Y29tL2drYS9jaHJvbWEuanMKKyAgICovCisKKyAgY2hyb21hLmN1YmVoZWxpeCA9IGZ1bmN0aW9u
KHN0YXJ0LCByb3RhdGlvbnMsIGh1ZSwgZ2FtbWEsIGxpZ2h0bmVzcykgeworICAgIHZhciBkaCwg
ZGw7CisgICAgaWYgKHN0YXJ0ID09IG51bGwpIHsKKyAgICAgIHN0YXJ0ID0gMzAwOworICAgIH0K
KyAgICBpZiAocm90YXRpb25zID09IG51bGwpIHsKKyAgICAgIHJvdGF0aW9ucyA9IC0xLjU7Cisg
ICAgfQorICAgIGlmIChodWUgPT0gbnVsbCkgeworICAgICAgaHVlID0gMTsKKyAgICB9CisgICAg
aWYgKGdhbW1hID09IG51bGwpIHsKKyAgICAgIGdhbW1hID0gMTsKKyAgICB9CisgICAgaWYgKGxp
Z2h0bmVzcyA9PSBudWxsKSB7CisgICAgICBsaWdodG5lc3MgPSBbMCwgMV07CisgICAgfQorICAg
IGRsID0gbGlnaHRuZXNzWzFdIC0gbGlnaHRuZXNzWzBdOworICAgIGlmICh0eXBlKGh1ZSkgPT09
ICdhcnJheScpIHsKKyAgICAgIGRoID0gaHVlWzFdIC0gaHVlWzBdOworICAgICAgaWYgKGRoID09
PSAwKSB7CisgICAgICAgIGh1ZSA9IGh1ZVsxXTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgZGggPSAwOworICAgIH0KKyAgICByZXR1cm4gZnVuY3Rpb24oZnJhY3QpIHsKKyAgICAgIHZh
ciBhLCBhbXAsIGIsIGNvc19hLCBnLCBoLCBsLCByLCBzaW5fYTsKKyAgICAgIGEgPSBUV09QSSAq
ICgoc3RhcnQgKyAxMjApIC8gMzYwICsgcm90YXRpb25zICogZnJhY3QpOworICAgICAgbCA9IHBv
dyhsaWdodG5lc3NbMF0gKyBkbCAqIGZyYWN0LCBnYW1tYSk7CisgICAgICBoID0gZGggIT09IDAg
PyBodWVbMF0gKyBmcmFjdCAqIGRoIDogaHVlOworICAgICAgYW1wID0gaCAqIGwgKiAoMSAtIGwp
IC8gMjsKKyAgICAgIGNvc19hID0gY29zKGEpOworICAgICAgc2luX2EgPSBzaW4oYSk7CisgICAg
ICByID0gbCArIGFtcCAqICgtMC4xNDg2MSAqIGNvc19hICsgMS43ODI3NyAqIHNpbl9hKTsKKyAg
ICAgIGcgPSBsICsgYW1wICogKC0wLjI5MjI3ICogY29zX2EgLSAwLjkwNjQ5ICogc2luX2EpOwor
ICAgICAgYiA9IGwgKyBhbXAgKiAoKzEuOTcyOTQgKiBjb3NfYSk7CisgICAgICByZXR1cm4gY2hy
b21hKGNsaXBfcmdiKFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XSkpOworICAgIH07CisgIH07
CisKK30pLmNhbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKaW5kZXggMGIwZGMwMC4uYWM0YjIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMjA1LDYgKzIwNSw4IEBACiAgICAg
PHNjcmlwdCBzcmM9IkV4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkV4dGVybmFsL0VTTGludC9lc2xpbnQuanMiPjwvc2NyaXB0PgogCisgICAg
PHNjcmlwdCBzcmM9IkV4dGVybmFsL0Nocm9tYS9jaHJvbWEuanMiPjwvc2NyaXB0PgorCiAgICAg
PHNjcmlwdCBzcmM9IkJhc2UvV2ViSW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvUGxhdGZvcm0uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMK
aW5kZXggYTA3ZjFiZC4uMjhlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCkBAIC00MzksMTIgKzQzOSwx
OCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldFJh
bmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKICAgICB9CiAKLSAgICBhZGRTdHlsZVRv
VGV4dFJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBzdHlsZUNsYXNzTmFtZSkKKyAg
ICBhZGRDbGFzc1RvVGV4dFJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBzdHlsZUNs
YXNzTmFtZSkKICAgICB7Ci0gICAgICAgIGVuZFBvc2l0aW9uLmNoICs9IDE7CisgICAgICAgIGVu
ZFBvc2l0aW9uLmNoKys7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldERvYygp
Lm1hcmtUZXh0KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB7Y2xhc3NOYW1lOiBzdHlsZUNs
YXNzTmFtZSwgaW5jbHVzaXZlTGVmdDogdHJ1ZSwgaW5jbHVzaXZlUmlnaHQ6IHRydWV9KTsKICAg
ICB9CiAKKyAgICBhZGRDc3NUb1RleHRSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwg
Y3NzU3RyaW5nKQorICAgIHsKKyAgICAgICAgZW5kUG9zaXRpb24uY2grKzsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0RG9jKCkubWFya1RleHQoc3RhcnRQb3NpdGlvbiwgZW5k
UG9zaXRpb24sIHtjc3M6IGNzc1N0cmluZywgaW5jbHVzaXZlTGVmdDogdHJ1ZSwgaW5jbHVzaXZl
UmlnaHQ6IHRydWV9KTsKKyAgICB9CisKICAgICByZXZlYWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4
dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQsIG5vSGlnaGxpZ2h0KQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQocG9zaXRpb24gPT09IHVuZGVmaW5lZCB8fCBwb3NpdGlvbiBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24sICJyZXZlYWxQb3NpdGlv
biBjYWxsZWQgd2l0aG91dCBhIFNvdXJjZUNvZGVQb3NpdGlvbiIpOwo=
</data>
<flag name="review"
          id="285457"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="285458"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>260273</attachid>
            <date>2015-08-30 21:17:32 -0700</date>
            <delta_ts>2015-08-30 21:17:32 -0700</delta_ts>
            <desc>[Image] With the patch applied</desc>
            <filename>code-hotness-visualizer.png</filename>
            <type>image/png</type>
            <size>155599</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">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
di5rCfZ1Z7vKBvx0bRRLvYngKgrJvukZsoI0sa/naAyuRFSs4JoTFOO12XNG88f8g+vF5su84Bpf
00IG10N3ht/hM++szX8PgysRERERERERES0+BlcGVwbXmw7fCe84FavojMz7RwaE4bykw4vmHC2K
qHYcQOO1evT44ebkXHwnazQ6rTCiljQnmuujVSlNOQfWx7YqxtGWwZWIFia4mjnBdZ4R72QlXmtM
rG0Lq19McP2c3yH/7NinaHenr5n9Pf/hr+caKuVw/PnqhMGViIiIiIiIiIgKg8GVwZXB9cajD0sV
o7hahtlswTKqEAVh4u5S70CHEM2rmolmswmzVs6sTffdVuPzXSswLQt6VYneL2J79FxW/wBytIdS
1WFZJipy9J1K2jAEM7gS0YIE1yT+BaNev7x23cDLzGUD4dIf6OV81uHDOCYqOBnbbzAMv19McL3R
75Ddeyve+zHeTl83+3vcOu7duYM78fhKgMvgSkRERERERET/s3c/LW3DARjH39POewc79DjxOMHL
XsNunrwMD+KEzm2MyspwCAVBnAOHwznqvxkmlQ5t3Q+b0JS0Zcpg8KxNbf0T201St3T5fuA5qL9E
2+uXVCAiCK4EV4JrqJW0Mtd6evV801raPAicNdaKZiYnrpyd0budYvC+NRO87+QLfdx3Ame94qZS
05fvO51a0oHX+DnBFcAABdfvhX2lG2fbIW41803VdmS16zpczmqxcb90l3sdPk11gm1mfFvHhboq
jZULJ6pfOWtevemcnXu0rXIzNrqetsaaATI+wfXm70NwdWv9/GxiQXnL1XHOkbE8Vft1jb2hoYvB
9d6UbIIrAAAAAAAAIoLgSnAluPZhNbckY4yKRSO31vupWKdkZJozJdV+c1/P8e8bONvtvv5Zxzv7
HsEVwL8Prqs3DIoms+Cf77X02H7vYBuYHzsDIXTuypngksr5oTHEa/J/T/fgunpLwbXcI7jmTLj3
Ibgfyo5cd92UcqZP19ifLwfXuzzhCgAAAAAAgOgguBJcCa4xHMEVwN8KruvDrZA2P1H443BY2d7V
YqJLbE2klH3vdb/W2tPbkaRm7/jne35EcXltPRBoZ4cX9SWzrFn/69TZ/xcN8Zrsgua7/g0nWmvf
60khfHBtfyTz8IdrnnBd0cvOawr/PgRX1854unW+s+fKm/5cU9167YfW9oYeb/A/XAEAAAAAABAZ
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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264464</attachid>
            <date>2015-10-30 21:39:16 -0700</date>
            <delta_ts>2015-10-30 21:39:16 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP.txt</filename>
            <type>text/plain</type>
            <size>94995</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCmluZGV4IDI5NTkwMDMuLjk3ZGEwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDc4MywxMCArNDc4
Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAg
ICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6IHsKICAgICAgICAgQmFzaWNCbG9ja0xvY2F0aW9u
KiBiYXNpY0Jsb2NrTG9jYXRpb24gPSBub2RlLT5iYXNpY0Jsb2NrTG9jYXRpb24oKTsKLSAgICAg
ICAgaWYgKCFiYXNpY0Jsb2NrTG9jYXRpb24tPmhhc0V4ZWN1dGVkKCkpIHsKLSAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tMb2Nh
dGlvbi0+ZW1pdEV4ZWN1dGVDb2RlKG1faml0LCBzY3JhdGNoMS5ncHIoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgICAgICBiYXNpY0Jsb2Nr
TG9jYXRpb24tPmVtaXRFeGVjdXRlQ29kZShtX2ppdCwgc2NyYXRjaDEuZ3ByKCkpOwogICAgICAg
ICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOTlhYWRkZi4u
MjA0MDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC00ODEzLDEwICs0ODEzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzog
ewogICAgICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGJhc2ljQmxvY2tMb2NhdGlvbiA9IG5vZGUt
PmJhc2ljQmxvY2tMb2NhdGlvbigpOwotICAgICAgICBpZiAoIWJhc2ljQmxvY2tMb2NhdGlvbi0+
aGFzRXhlY3V0ZWQoKSkgewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMp
OwotICAgICAgICAgICAgYmFzaWNCbG9ja0xvY2F0aW9uLT5lbWl0RXhlY3V0ZUNvZGUobV9qaXQs
IHNjcmF0Y2gxLmdwcigpKTsKLSAgICAgICAgfQorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDEodGhpcyk7CisgICAgICAgIGJhc2ljQmxvY2tMb2NhdGlvbi0+ZW1pdEV4ZWN1dGVDb2RlKG1f
aml0LCBzY3JhdGNoMS5ncHIoKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCBmMTVkNThk
Li4wNzZjYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM1Nyw2ICsz
NTcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFzaWNCbG9ja3MoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgICAgICAgICAgLnNldFN0YXJ0T2Zm
c2V0KGJsb2NrLm1fc3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAuc2V0RW5kT2Zmc2V0KGJsb2Nr
Lm1fZW5kT2Zmc2V0KQogICAgICAgICAgICAgLnNldEhhc0V4ZWN1dGVkKGJsb2NrLm1faGFzRXhl
Y3V0ZWQpCisgICAgICAgICAgICAuc2V0RXhlY3V0aW9uQ291bnQoYmxvY2subV9leGVjdXRpb25D
b3VudCkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgICAgIGJhc2ljQmxvY2tzLT5hZGRJ
dGVtKFdURjo6bW92ZShsb2NhdGlvbikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KaW5kZXggYzMyMWY2YS4u
MGJhYjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9SdW50aW1lLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9SdW50aW1lLmpzb24KQEAgLTE4OCw3ICsxODgsOCBAQAogICAgICAgICAgICAgInBy
b3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydE9mZnNldCIsICJ0
eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnQgb2Zmc2V0IG9mIHRoZSBiYXNp
YyBibG9jay4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRPZmZzZXQiLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkVuZCBvZmZzZXQgb2YgdGhlIGJhc2ljIGJs
b2NrLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhc0V4ZWN1dGVkIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgaWYgdGhlIGJhc2ljIGJsb2Nr
IGhhcyBleGVjdXRlZCBiZWZvcmUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYXNF
eGVjdXRlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIGlm
IHRoZSBiYXNpYyBibG9jayBoYXMgZXhlY3V0ZWQgYmVmb3JlLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImV4ZWN1dGlvbkNvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlw
dGlvbiI6ICJJbmRpY2F0ZXMgaG93IG1hbnkgdGltZXMgdGhlIGJhc2ljIGJsb2NrIGhhcyBleGVj
dXRlZC4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA2NmViZDUxLi5lZTBmZTYwIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEzNjgsOCArMTM2OCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3RvX2luZGV4X3N0cmluZyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGJh
c2ljQmxvY2tMb2NhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LmJhc2ljQmxvY2tMb2Nh
dGlvbjsKLSAgICBpZiAoIWJhc2ljQmxvY2tMb2NhdGlvbi0+aGFzRXhlY3V0ZWQoKSkKLSAgICAg
ICAgYmFzaWNCbG9ja0xvY2F0aW9uLT5lbWl0RXhlY3V0ZUNvZGUoKnRoaXMsIHJlZ1QxKTsKKyAg
ICBiYXNpY0Jsb2NrTG9jYXRpb24tPmVtaXRFeGVjdXRlQ29kZSgqdGhpcywgcmVnVDEpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGRhZjU3ODYuLjJlNjZmMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE2NjksMTIgKzE2NjksNiBAQCBfbGxpbnRfb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZykKICAgICBkaXNwYXRjaCgzKQog
Ci1fbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQotICAgIHN0b3JlYiAxLCBCYXNpY0Jsb2Nr
TG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCi0gICAgZGlzcGF0Y2goMikKLQogIyBMYXN0bHks
IG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQg
YWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNp
bmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CiAjIGFzIG11Y2guCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCmluZGV4IGE2NmNlZTYuLmE2MTE1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yNDEwLDYg
KzI0MTAsMTMgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIC5vcFByb2ZpbGVUeXBlRG9uZToK
ICAgICBkaXNwYXRjaCg2KQogCitfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQorICAgIHN0
b3JlYiAxLCBCYXNpY0Jsb2NrTG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCisgICAgYWRkaSAx
LCBCYXNpY0Jsb2NrTG9jYXRpb246Om1fZXhlY3V0aW9uQ291bnRbdDBdCisgICAgZGlzcGF0Y2go
MikKKwogX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CmluZGV4IGJmN2VkYTUuLjQ2ODQ4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjg0LDYgKzIyODQsMTMg
QEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIC5vcFByb2ZpbGVUeXBlRG9uZToKICAgICBkaXNw
YXRjaCg2KQogCitfbGxpbnRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDEsIHQwKQorICAgIHN0b3JlYiAxLCBC
YXNpY0Jsb2NrTG9jYXRpb246Om1faGFzRXhlY3V0ZWRbdDBdCisgICAgYWRkcSAxLCBCYXNpY0Js
b2NrTG9jYXRpb246Om1fZXhlY3V0aW9uQ291bnRbdDBdCisgICAgZGlzcGF0Y2goMikKKwogX2xs
aW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CYXNpY0Jsb2NrTG9jYXRpb24uY3BwCmluZGV4IDMzY2MzOTYuLmU4NzExZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmFzaWNCbG9ja0xvY2F0
aW9uLmNwcApAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrTG9jYXRpb246OkJhc2ljQmxvY2tM
b2NhdGlvbihpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCiAgICAgOiBtX3N0YXJ0T2Zm
c2V0KHN0YXJ0T2Zmc2V0KQogICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQogICAgICwgbV9o
YXNFeGVjdXRlZChmYWxzZSkKKyAgICAsIG1fZXhlY3V0aW9uQ291bnQoMCkKIHsKIH0KIApAQCAt
NzUsNyArNzYsNyBAQCB2b2lkIEJhc2ljQmxvY2tMb2NhdGlvbjo6ZHVtcERhdGEoKSBjb25zdAog
ewogICAgIFZlY3RvcjxHYXA+IGV4ZWN1dGVkUmFuZ2VzID0gZ2V0RXhlY3V0ZWRSYW5nZXMoKTsK
ICAgICBmb3IgKEdhcCBnYXAgOiBleGVjdXRlZFJhbmdlcykKLSAgICAgICAgZGF0YUxvZ0YoIlx0
QmFzaWNCbG9jazogWyVkLCAlZF0gaGFzRXhlY3V0ZWQ6ICVzXG4iLCBnYXAuZmlyc3QsIGdhcC5z
ZWNvbmQsIGhhc0V4ZWN1dGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgZGF0YUxv
Z0YoIlx0QmFzaWNCbG9jazogWyVkLCAlZF0gaGFzRXhlY3V0ZWQ6ICVzLCBleGVjdXRpb25Db3Vu
dDolenVcbiIsIGdhcC5maXJzdCwgZ2FwLnNlY29uZCwgaGFzRXhlY3V0ZWQoKSA/ICJ0cnVlIiA6
ICJmYWxzZSIsIG1fZXhlY3V0aW9uQ291bnQpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTgz
LDYgKzg0LDEzIEBAIHZvaWQgQmFzaWNCbG9ja0xvY2F0aW9uOjplbWl0RXhlY3V0ZUNvZGUoQ0Nh
bGxIZWxwZXJzJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpSZWdpCiB7CiAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZtX2hhc0V4ZWN1dGVkKSwgcHRyUmVnKTsKICAgICBq
aXQuc3RvcmU4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRydWUpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocHRyUmVnLCAwKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihzaXplX3QpID09IDgsICJBc3N1bWluZyBzaXplX3QgaXMgNjQgYml0cyBvbiA2
NCBiaXQgcGxhdGZvcm1zLiIpOworICAgIGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigxKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJm1fZXhlY3V0aW9uQ291bnQp
KTsKKyNlbHNlCisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSA0LCAiQXNzdW1p
bmcgc2l6ZV90IGlzIDMyIGJpdHMgb24gMzIgYml0IHBsYXRmb3Jtcy4iKTsKKyAgICBqaXQuYWRk
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKCZtX2V4ZWN1dGlvbkNvdW50KSk7CisjZW5kaWYKIH0KICNlbmRpZiAvLyBFTkFCTEUo
SklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Js
b2NrTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jhc2ljQmxvY2tM
b2NhdGlvbi5oCmluZGV4IDQ5YmY1MTQuLmE0NTJjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5oCkBAIC00OCw2ICs0OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCBzdGFydE9mZnNldCkgeyBtX3N0
YXJ0T2Zmc2V0ID0gc3RhcnRPZmZzZXQ7IH0KICAgICB2b2lkIHNldEVuZE9mZnNldChpbnQgZW5k
T2Zmc2V0KSB7IG1fZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OyB9CiAgICAgYm9vbCBoYXNFeGVjdXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRXhlY3V0ZWQ7IH0KKyAgICBzaXplX3QgZXhlY3V0aW9u
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGlvbkNvdW50OyB9CiAgICAgdm9pZCBpbnNl
cnRHYXAoaW50LCBpbnQpOwogICAgIFZlY3RvcjxHYXA+IGdldEV4ZWN1dGVkUmFuZ2VzKCkgY29u
c3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wRGF0YSgpIGNvbnN0OwpAQCAtNjEs
NiArNjIsNyBAQCBwcml2YXRlOgogICAgIGludCBtX3N0YXJ0T2Zmc2V0OwogICAgIGludCBtX2Vu
ZE9mZnNldDsKICAgICBib29sIG1faGFzRXhlY3V0ZWQ7CisgICAgc2l6ZV90IG1fZXhlY3V0aW9u
Q291bnQ7CiAgICAgVmVjdG9yPEdhcD4gbV9nYXBzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcAppbmRleCBkODBl
N2YzLi5lN2M5M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b250cm9sRmxvd1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcApAQCAtNzYsMjIgKzc2LDI1IEBAIFZlY3RvcjxCYXNp
Y0Jsb2NrUmFuZ2U+IENvbnRyb2xGbG93UHJvZmlsZXI6OmdldEJhc2ljQmxvY2tzRm9yU291cmNl
SUQoaW50cHRyX3QKICAgICBjb25zdCBCbG9ja0xvY2F0aW9uQ2FjaGUmIGNhY2hlID0gYnVja2V0
RmluZFJlc3VsdC0+dmFsdWU7CiAgICAgZm9yIChjb25zdCBCYXNpY0Jsb2NrTG9jYXRpb24qIGJs
b2NrIDogY2FjaGUudmFsdWVzKCkpIHsKICAgICAgICAgYm9vbCBoYXNFeGVjdXRlZCA9IGJsb2Nr
LT5oYXNFeGVjdXRlZCgpOworICAgICAgICBzaXplX3QgZXhlY3V0aW9uQ291bnQgPSBibG9jay0+
ZXhlY3V0aW9uQ291bnQoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPEJhc2ljQmxvY2tMb2NhdGlv
bjo6R2FwPiYgYmxvY2tSYW5nZXMgPSBibG9jay0+Z2V0RXhlY3V0ZWRSYW5nZXMoKTsKICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrTG9jYXRpb246OkdhcCBnYXAgOiBibG9ja1JhbmdlcykgewogICAg
ICAgICAgICAgQmFzaWNCbG9ja1JhbmdlIHJhbmdlOwogICAgICAgICAgICAgcmFuZ2UubV9oYXNF
eGVjdXRlZCA9IGhhc0V4ZWN1dGVkOworICAgICAgICAgICAgcmFuZ2UubV9leGVjdXRpb25Db3Vu
dCA9IGV4ZWN1dGlvbkNvdW50OwogICAgICAgICAgICAgcmFuZ2UubV9zdGFydE9mZnNldCA9IGdh
cC5maXJzdDsKICAgICAgICAgICAgIHJhbmdlLm1fZW5kT2Zmc2V0ID0gZ2FwLnNlY29uZDsKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmFuZ2UpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
Y29uc3QgVmVjdG9yPHN0ZDo6dHVwbGU8Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPj4mIHVuZXhl
Y3V0ZWRGdW5jdGlvblJhbmdlcyA9IHZtLmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5nZXRG
dW5jdGlvblJhbmdlcyhzb3VyY2VJRCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBmdW5jdGlvblJh
bmdlIDogdW5leGVjdXRlZEZ1bmN0aW9uUmFuZ2VzKSB7CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6
dHVwbGU8Ym9vbCwgdW5zaWduZWQsIHVuc2lnbmVkPj4mIGZ1bmN0aW9uUmFuZ2VzID0gdm0uZnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmdldEZ1bmN0aW9uUmFuZ2VzKHNvdXJjZUlEKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGZ1bmN0aW9uUmFuZ2UgOiBmdW5jdGlvblJhbmdlcykgewogICAg
ICAgICBCYXNpY0Jsb2NrUmFuZ2UgcmFuZ2U7CiAgICAgICAgIHJhbmdlLm1faGFzRXhlY3V0ZWQg
PSBzdGQ6OmdldDwwPihmdW5jdGlvblJhbmdlKTsKICAgICAgICAgcmFuZ2UubV9zdGFydE9mZnNl
dCA9IHN0YXRpY19jYXN0PGludD4oc3RkOjpnZXQ8MT4oZnVuY3Rpb25SYW5nZSkpOwogICAgICAg
ICByYW5nZS5tX2VuZE9mZnNldCA9IHN0YXRpY19jYXN0PGludD4oc3RkOjpnZXQ8Mj4oZnVuY3Rp
b25SYW5nZSkpOworICAgICAgICByYW5nZS5tX2V4ZWN1dGlvbkNvdW50ID0gcmFuZ2UubV9oYXNF
eGVjdXRlZCA/IDEgOiAwOyAvLyBUaGlzIGlzIGEgaGFjay4gV2UgZG9uJ3QgYWN0dWFsbHkgY291
bnQgdGhpcy4KICAgICAgICAgcmVzdWx0LmFwcGVuZChyYW5nZSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgKaW5k
ZXggODE3NDlkYy4uY2ViYTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaApAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgQmFz
aWNCbG9ja1JhbmdlIHsKICAgICBpbnQgbV9zdGFydE9mZnNldDsKICAgICBpbnQgbV9lbmRPZmZz
ZXQ7CiAgICAgYm9vbCBtX2hhc0V4ZWN1dGVkOworICAgIHNpemVfdCBtX2V4ZWN1dGlvbkNvdW50
OwogfTsKIAogY2xhc3MgQ29udHJvbEZsb3dQcm9maWxlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IGIzMTE1
MGMuLjhkYWIyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC00NjksNiArNDY5LDI2IEBAIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJwYXJ0aXRpb24iLAogICAgIH0KIH0pOwogCitP
YmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAibWVyZ2VTb3J0ZWQiLAorewor
ICAgIHZhbHVlOiBmdW5jdGlvbihyaWdodCwgY29tcGFyYXRvcikKKyAgICB7CisgICAgICAgIHZh
ciByZXN1bHQgPSBbXTsKKyAgICAgICAgdmFyIGxlZnQgPSB0aGlzOworICAgICAgICB2YXIgaW5k
ZXhMZWZ0ID0gMDsKKyAgICAgICAgdmFyIGluZGV4UmlnaHQgPSAwOworCisgICAgICAgIHdoaWxl
IChpbmRleExlZnQgPCBsZWZ0Lmxlbmd0aCAmJiBpbmRleFJpZ2h0IDwgcmlnaHQubGVuZ3RoKSB7
CisgICAgICAgICAgICBpZiAoY29tcGFyYXRvcihsZWZ0W2luZGV4TGVmdF0sIHJpZ2h0W2luZGV4
UmlnaHRdKSA8IDApCisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobGVmdFtpbmRleExlZnQr
K10pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHJpZ2h0
W2luZGV4UmlnaHQrK10pOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5jb25j
YXQobGVmdC5zbGljZShpbmRleExlZnQpLCByaWdodC5zbGljZShpbmRleFJpZ2h0KSk7CisgICAg
fQorfSk7CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAidHJpbU1p
ZGRsZSIsCiB7CiAgICAgdmFsdWU6IGZ1bmN0aW9uKG1heExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Jhc2ljQmxvY2tB
bm5vdGF0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9CYXNpY0Jsb2NrQW5ub3RhdG9yLmpzCmluZGV4IGUzNTM0NTIuLjYyNWM1MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Jh
c2ljQmxvY2tBbm5vdGF0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQmFzaWNCbG9ja0Fubm90YXRvci5qcwpAQCAtMzEsMTUgKzMxLDgy
IEBAIFdlYkluc3BlY3Rvci5CYXNpY0Jsb2NrQW5ub3RhdG9yID0gY2xhc3MgQmFzaWNCbG9ja0Fu
bm90YXRvciBleHRlbmRzIFdlYkluc3BlY3RvCiAgICAgICAgIHN1cGVyKHNvdXJjZUNvZGVUZXh0
RWRpdG9yKTsKIAogICAgICAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7Ci0gICAgICAgIHRoaXMu
X2Jhc2ljQmxvY2tNYXJrZXJzID0gbmV3IE1hcDsgLy8gT25seSBjb250YWlucyB1bmV4ZWN1dGVk
IGJhc2ljIGJsb2Nrcy4KKworICAgICAgICAvLyBBIGNhY2hlIG9mIGFsbCByZW5kZXJlZCBibG9j
a3MKKyAgICAgICAgLy8gc3RhcnRPZmZzZXQgLT4gYmxvY2sKKyAgICAgICAgdGhpcy5fYmxvY2tz
ID0gbmV3IE1hcCgpOworCisgICAgICAgIHRoaXMuX2NvbG9yQSA9IGNocm9tYS5sY2goOTksIDIs
IDk2KTsKKyAgICAgICAgdGhpcy5fY29sb3JCID0gY2hyb21hLmxjaCg4OSwgMzAsIDUwKTsKKyAg
ICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIC8vIENvbnZlcnQgYmFzaWMgYmxvY2tzLCB3aGlj
aCBtYXkgY2FzY2FkZSwgaW50byBhIGxpc3Qgb2Ygbm9uLW92ZXJsYXBwaW5nIHJhbmdlcy4KKyAg
ICBzdGF0aWMgZmxhdHRlbkJhc2ljQmxvY2tzKGJhc2ljQmxvY2tzKQorICAgIHsKKyAgICAgICAg
YmFzaWNCbG9ja3Muc29ydChmdW5jdGlvbihhLCBiKSB7CisgICAgICAgICAgICBsZXQgZGVsdGEg
PSBhLnN0YXJ0T2Zmc2V0IC0gYi5zdGFydE9mZnNldDsKKyAgICAgICAgICAgIGlmIChkZWx0YSAh
PT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVsdGE7CisKKyAgICAgICAgICAgIHJldHVy
biBhLmVuZE9mZnNldCAtIGIuZW5kT2Zmc2V0OworICAgICAgICB9KTsKKworICAgICAgICBsZXQg
c3RhcnRQb2ludHMgPSBiYXNpY0Jsb2Nrcy5tYXAoZnVuY3Rpb24oYmxvY2spIHsKKyAgICAgICAg
ICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgaXNTdGFydDogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICBvZmZzZXQ6IGJsb2NrLnN0YXJ0T2Zmc2V0LAorICAgICAgICAgICAgICAgIGV4ZWN1dGlv
bkNvdW50OiBibG9jay5leGVjdXRpb25Db3VudAorICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSAoYSwgYikgPT4gYS5vZmZzZXQgLSBiLm9mZnNl
dDsKKworICAgICAgICBsZXQgZW5kUG9pbnRzID0gYmFzaWNCbG9ja3MubWFwKGZ1bmN0aW9uKGJs
b2NrKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIGlzU3RhcnQ6IGZh
bHNlLAorICAgICAgICAgICAgICAgIG9mZnNldDogYmxvY2suZW5kT2Zmc2V0LAorICAgICAgICAg
ICAgICAgIGV4ZWN1dGlvbkNvdW50OiBibG9jay5leGVjdXRpb25Db3VudAorICAgICAgICAgICAg
fTsKKyAgICAgICAgfSkuc29ydChjb21wYXJhdG9yKTsKKworICAgICAgICAvLyBVc2UgYSBzdGFi
bGUgc29ydC4KKyAgICAgICAgbGV0IHBvaW50cyA9IHN0YXJ0UG9pbnRzLm1lcmdlU29ydGVkKGVu
ZFBvaW50cywgY29tcGFyYXRvcik7CisKKyAgICAgICAgLy8gQ29udmVydCBwb2ludHMgaW50byBu
b24tb3ZlcmxhcHBpbmcgcmFuZ2VzIGJ5IHVzaW5nIGEgc3dlZXAgbGluZSBhbGdvcml0aG0uCisg
ICAgICAgIGxldCBmbGF0UmFuZ2VzID0gW107CisgICAgICAgIGxldCBwb2ludCA9IHBvaW50c1sw
XTsKKyAgICAgICAgbGV0IGV4ZWN1dGlvbkNvdW50ID0gcG9pbnQuZXhlY3V0aW9uQ291bnQ7Cisg
ICAgICAgIGxldCBzdGFydE9mZnNldCA9IHBvaW50Lm9mZnNldDsKKyAgICAgICAgbGV0IHN0YWNr
ID0gW2V4ZWN1dGlvbkNvdW50XTsKKworICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvaW50
cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcG9pbnQgPSBwb2ludHNbaV07CisKKyAgICAg
ICAgICAgIGlmIChwb2ludC5pc1N0YXJ0KSB7CisgICAgICAgICAgICAgICAgaWYgKHBvaW50Lm9m
ZnNldCAhPT0gc3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZmxhdFJhbmdlcy5w
dXNoKHtzdGFydE9mZnNldCwgZW5kT2Zmc2V0OiBwb2ludC5vZmZzZXQgLSAxLCBleGVjdXRpb25D
b3VudH0pOworICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldCA9IHBvaW50Lm9mZnNldDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhlY3V0aW9uQ291bnQgPSBwb2lu
dC5leGVjdXRpb25Db3VudDsKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGV4ZWN1dGlvbkNv
dW50KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXhlY3V0aW9uQ291
bnQgPSBzdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcG9pbnRzLmxlbmd0
aCAtIDEpCisgICAgICAgICAgICAgICAgICAgIGZsYXRSYW5nZXMucHVzaCh7c3RhcnRPZmZzZXQs
IGVuZE9mZnNldDogcG9pbnQub2Zmc2V0IC0gMSwgZXhlY3V0aW9uQ291bnR9KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmbGF0UmFuZ2VzOwogICAgIH0KIAog
ICAgIC8vIFByb3RlY3RlZAogCiAgICAgY2xlYXJBbm5vdGF0aW9ucygpCiAgICAgewotICAgICAg
ICBmb3IgKHZhciBrZXkgb2YgdGhpcy5fYmFzaWNCbG9ja01hcmtlcnMua2V5cygpKQotICAgICAg
ICAgICAgdGhpcy5fY2xlYXJSYW5nZUZvckJhc2ljQmxvY2tNYXJrZXIoa2V5KTsKKyAgICAgICAg
Zm9yIChsZXQga2V5IG9mIHRoaXMuX2Jsb2Nrcy5rZXlzKCkpCisgICAgICAgICAgICB0aGlzLl9j
bGVhckFubm90YXRpb25CeUtleShrZXkpOwogICAgIH0KIAogICAgIGluc2VydEFubm90YXRpb25z
KCkKQEAgLTY1LDQwICsxMzIsODkgQEAgV2ViSW5zcGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0b3Ig
PSBjbGFzcyBCYXNpY0Jsb2NrQW5ub3RhdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAg
ICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgdmFyIHtzdGFydE9mZnNldCwgZW5kT2Zmc2V0fSA9IHRoaXMuc291cmNlQ29kZVRl
eHRFZGl0b3IudmlzaWJsZVJhbmdlT2Zmc2V0cygpOwotICAgICAgICAgICAgYmFzaWNCbG9ja3Mg
PSBiYXNpY0Jsb2Nrcy5maWx0ZXIoZnVuY3Rpb24oYmxvY2spIHsKKyAgICAgICAgICAgIGlmICgh
YmFzaWNCbG9ja3MubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgY29uc3Qge3N0YXJ0T2Zmc2V0LCBlbmRPZmZzZXR9ID0gdGhpcy5zb3VyY2VDb2RlVGV4dEVk
aXRvci52aXNpYmxlUmFuZ2VPZmZzZXRzKCk7CisgICAgICAgICAgICBsZXQgdmlzaWJsZUJsb2Nr
cyA9IGJhc2ljQmxvY2tzLmZpbHRlcihmdW5jdGlvbiBpc1Zpc2libGUoYmxvY2spIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYmxvY2suc3RhcnRPZmZzZXQgPT09IGJsb2NrLmVuZE9mZnNldCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRoZSBiYWNrZW5kIHNob3VsZCd0IHJldHVybiB0aGVzZSBibG9ja3MKKyAgICAgICAgICAg
ICAgICBpZiAoYmxvY2suZW5kT2Zmc2V0ID09PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgICAgICAgICAgICAgcmV0dXJuIChibG9jay5zdGFydE9mZnNldCA+
PSBzdGFydE9mZnNldCAmJiBibG9jay5zdGFydE9mZnNldCA8PSBlbmRPZmZzZXQpIHx8IChibG9j
ay5zdGFydE9mZnNldCA8PSBzdGFydE9mZnNldCAmJiBibG9jay5lbmRPZmZzZXQgPj0gZW5kT2Zm
c2V0KTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBmb3IgKHZhciBibG9jayBvZiBi
YXNpY0Jsb2NrcykgewotICAgICAgICAgICAgICAgIHZhciBrZXkgPSBibG9jay5zdGFydE9mZnNl
dCArICI6IiArIGJsb2NrLmVuZE9mZnNldDsKLSAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0g
dGhpcy5fYmFzaWNCbG9ja01hcmtlcnMuaGFzKGtleSk7Ci0gICAgICAgICAgICAgICAgdmFyIGhh
c0V4ZWN1dGVkID0gYmxvY2suaGFzRXhlY3V0ZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc0tl
eSAmJiBoYXNFeGVjdXRlZCkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJSYW5nZUZv
ckJhc2ljQmxvY2tNYXJrZXIoa2V5KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghaGFzS2V5
ICYmICFoYXNFeGVjdXRlZCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyID0gdGhp
cy5faGlnaGxpZ2h0VGV4dEZvckJhc2ljQmxvY2soYmxvY2spOwotICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9iYXNpY0Jsb2NrTWFya2Vycy5zZXQoa2V5LCBtYXJrZXIpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBmbGF0UmFuZ2VzID0gV2ViSW5z
cGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0b3IuZmxhdHRlbkJhc2ljQmxvY2tzKHZpc2libGVCbG9j
a3MpOwogCi0gICAgICAgICAgICB2YXIgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGlt
ZTsKLSAgICAgICAgICAgIHZhciB0aW1lb3V0VGltZSA9IE51bWJlci5jb25zdHJhaW4oMzAgKiB0
b3RhbFRpbWUsIDUwMCwgNTAwMCk7CisgICAgICAgICAgICB0aGlzLl9yZW5kZXJNb2RpZmllZFJh
bmdlcyhmbGF0UmFuZ2VzKTsKKworICAgICAgICAgICAgbGV0IHRvdGFsVGltZSA9IERhdGUubm93
KCkgLSBzdGFydFRpbWU7CisgICAgICAgICAgICBsZXQgdGltZW91dFRpbWUgPSBOdW1iZXIuY29u
c3RyYWluKDMwICogdG90YWxUaW1lLCA1MDAsIDUwMDApOwogICAgICAgICAgICAgdGhpcy5fdGlt
ZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KHRoaXMuaW5zZXJ0QW5ub3RhdGlvbnMuYmluZCh0
aGlzKSwgdGltZW91dFRpbWUpOwogICAgICAgICB9LmJpbmQodGhpcykpOwogICAgIH0KIAorICAg
IF9yZW5kZXJNb2RpZmllZFJhbmdlcyhmbGF0UmFuZ2VzKQorICAgIHsKKyAgICAgICAgZm9yIChs
ZXQgYmxvY2sgb2YgZmxhdFJhbmdlcykgeworICAgICAgICAgICAgbGV0IGV4aXN0aW5nQmxvY2sg
PSB0aGlzLl9ibG9ja3MuZ2V0KGJsb2NrLnN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChl
eGlzdGluZ0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrLmVuZE9mZnNldCA9PT0g
ZXhpc3RpbmdCbG9jay5lbmRPZmZzZXQgJiYgYmxvY2suZXhlY3V0aW9uQ291bnQgPT09IGV4aXN0
aW5nQmxvY2suZXhlY3V0aW9uQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVW5jaGFu
Z2VkLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJBbm5vdGF0aW9uQnlLZXkoYmxvY2su
c3RhcnRPZmZzZXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgbWFya2VyID0g
dGhpcy5faGlnaGxpZ2h0VGV4dEZvckJhc2ljQmxvY2soYmxvY2spOworICAgICAgICAgICAgYmxv
Y2subWFya2VyID0gbWFya2VyOworCisgICAgICAgICAgICB0aGlzLl9ibG9ja3Muc2V0KGJsb2Nr
LnN0YXJ0T2Zmc2V0LCBibG9jayk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfaGlnaGxpZ2h0
VGV4dEZvckJhc2ljQmxvY2soYmFzaWNCbG9jaykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJhc2ljQmxvY2suc3RhcnRPZmZzZXQgPD0gYmFzaWNCbG9jay5lbmRPZmZzZXQgJiYgYmFz
aWNCbG9jay5zdGFydE9mZnNldCA+PSAwICYmIGJhc2ljQmxvY2suZW5kT2Zmc2V0ID49IDAsICIi
ICsgYmFzaWNCbG9jay5zdGFydE9mZnNldCArICI6IiArIGJhc2ljQmxvY2suZW5kT2Zmc2V0KTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoIWJhc2ljQmxvY2suaGFzRXhlY3V0ZWQpOwogCi0gICAg
ICAgIHZhciBzdGFydFBvc2l0aW9uID0gdGhpcy5zb3VyY2VDb2RlVGV4dEVkaXRvci5vcmlnaW5h
bE9mZnNldFRvQ3VycmVudFBvc2l0aW9uKGJhc2ljQmxvY2suc3RhcnRPZmZzZXQpOwotICAgICAg
ICB2YXIgZW5kUG9zaXRpb24gPSB0aGlzLnNvdXJjZUNvZGVUZXh0RWRpdG9yLm9yaWdpbmFsT2Zm
c2V0VG9DdXJyZW50UG9zaXRpb24oYmFzaWNCbG9jay5lbmRPZmZzZXQpOworICAgICAgICBjb25z
b2xlLmluZm8oImJhc2ljQmxvY2sgJWk6JWkgWyVpXSIsIGJhc2ljQmxvY2suc3RhcnRPZmZzZXQs
IGJhc2ljQmxvY2suZW5kT2Zmc2V0LCBiYXNpY0Jsb2NrLmV4ZWN1dGlvbkNvdW50KTsKKworICAg
ICAgICBsZXQgZXhlY3V0aW9uQ291bnQgPSBiYXNpY0Jsb2NrLmV4ZWN1dGlvbkNvdW50OworCisg
ICAgICAgIGxldCBzdGFydFBvc2l0aW9uID0gdGhpcy5zb3VyY2VDb2RlVGV4dEVkaXRvci5vcmln
aW5hbE9mZnNldFRvQ3VycmVudFBvc2l0aW9uKGJhc2ljQmxvY2suc3RhcnRPZmZzZXQpOworICAg
ICAgICBsZXQgZW5kUG9zaXRpb24gPSB0aGlzLnNvdXJjZUNvZGVUZXh0RWRpdG9yLm9yaWdpbmFs
T2Zmc2V0VG9DdXJyZW50UG9zaXRpb24oYmFzaWNCbG9jay5lbmRPZmZzZXQpOwogICAgICAgICBp
ZiAodGhpcy5faXNUZXh0UmFuZ2VPbmx5Q2xvc2luZ0JyYWNlKHN0YXJ0UG9zaXRpb24sIGVuZFBv
c2l0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIHZhciBtYXJrZXIg
PSB0aGlzLnNvdXJjZUNvZGVUZXh0RWRpdG9yLmFkZFN0eWxlVG9UZXh0UmFuZ2Uoc3RhcnRQb3Np
dGlvbiwgZW5kUG9zaXRpb24sIFdlYkluc3BlY3Rvci5CYXNpY0Jsb2NrQW5ub3RhdG9yLkhhc05v
dEV4ZWN1dGVkQ2xhc3NOYW1lKTsKKyAgICAgICAgbGV0IG1hcmtlciA9IG51bGw7CisgICAgICAg
IGxldCBjc3NTdHJpbmcgPSAiIjsKKworICAgICAgICBpZiAoIWV4ZWN1dGlvbkNvdW50KSB7Cisg
ICAgICAgICAgICBsZXQgY3NzQ29sb3IgPSBjaHJvbWEuaHNsKDI1NiwgMC45LCAwLjk3KTsKKyAg
ICAgICAgICAgIC8vY3NzU3RyaW5nID0gImJhY2tncm91bmQtY29sb3I6ICIgKyBjc3NDb2xvcjsK
KyAgICAgICAgICAgIC8vbWFya2VyID0gdGhpcy5zb3VyY2VDb2RlVGV4dEVkaXRvci5hZGRDc3NU
b1RleHRSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgY3NzU3RyaW5nKTsKKyAgICAg
ICAgICAgIC8vbWFya2VyLnVuZXhlY3V0ZWQgPSB0cnVlOworCisgICAgICAgICAgICBtYXJrZXIg
PSB0aGlzLnNvdXJjZUNvZGVUZXh0RWRpdG9yLmFkZENsYXNzVG9UZXh0UmFuZ2Uoc3RhcnRQb3Np
dGlvbiwgZW5kUG9zaXRpb24sIFdlYkluc3BlY3Rvci5CYXNpY0Jsb2NrQW5ub3RhdG9yLkhhc05v
dEV4ZWN1dGVkQ2xhc3NOYW1lKTsKKworICAgICAgICAgICAgdGhpcy5zb3VyY2VDb2RlVGV4dEVk
aXRvci5zZXRHdXR0ZXJUZXh0KHN0YXJ0UG9zaXRpb24ubGluZSwgdW5kZWZpbmVkLCBjc3NDb2xv
cik7CisgICAgICAgIH0gZWxzZSBpZiAoZXhlY3V0aW9uQ291bnQgPj0gMSkgeworICAgICAgICAg
ICAgY29uc3QgcSA9IE1hdGgubWluKE1hdGgucG93KGV4ZWN1dGlvbkNvdW50LCAxLzIuMSksIDMw
KSAvIDMwOworICAgICAgICAgICAgY29uc3QgY3NzQ29sb3IgPSBjaHJvbWEuaW50ZXJwb2xhdGUo
dGhpcy5fY29sb3JBLCB0aGlzLl9jb2xvckIsIHEsICJsY2giKTsKKworICAgICAgICAgICAgY3Nz
U3RyaW5nID0gWworICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWNvbG9yOiIgKyBjc3NDb2xv
ci50b1N0cmluZygpCisgICAgICAgICAgICAgICAgLy8sIm91dGxpbmU6IDFweCBzb2xpZCAiICsg
Y3NzQ29sb3IuZGFya2VuKDIpLnNhdHVyYXRlKDEuOCkuYWxwaGEoMC4zKSAvLyBEZWJ1ZyB2aWV3
LgorICAgICAgICAgICAgXS5qb2luKCI7ICIpOworICAgICAgICAgICAgbWFya2VyID0gdGhpcy5z
b3VyY2VDb2RlVGV4dEVkaXRvci5hZGRDc3NUb1RleHRSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQ
b3NpdGlvbiwgY3NzU3RyaW5nKTsKKworICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNvdW50ID4g
MSkKKyAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUNvZGVUZXh0RWRpdG9yLnNldEd1dHRlclRl
eHQoc3RhcnRQb3NpdGlvbi5saW5lLCBleGVjdXRpb25Db3VudCArICIiLCBjc3NDb2xvcik7Cisg
ICAgICAgIH0KKwogICAgICAgICByZXR1cm4gbWFya2VyOwogICAgIH0KIApAQCAtMTA4LDEzICsy
MjQsMTggQEAgV2ViSW5zcGVjdG9yLkJhc2ljQmxvY2tBbm5vdGF0b3IgPSBjbGFzcyBCYXNpY0Js
b2NrQW5ub3RhdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAgcmV0dXJuIGlzT25seUNs
b3NpbmdCcmFjZS50ZXN0KHRoaXMuc291cmNlQ29kZVRleHRFZGl0b3IuZ2V0VGV4dEluUmFuZ2Uo
c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pKTsKICAgICB9CiAKLSAgICBfY2xlYXJSYW5nZUZv
ckJhc2ljQmxvY2tNYXJrZXIoa2V5KQorICAgIF9jbGVhckFubm90YXRpb25CeUtleShzdGFydE9m
ZnNldCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Jhc2ljQmxvY2tNYXJr
ZXJzLmhhcyhrZXkpKTsKLSAgICAgICAgdmFyIG1hcmtlciA9IHRoaXMuX2Jhc2ljQmxvY2tNYXJr
ZXJzLmdldChrZXkpOwotICAgICAgICBpZiAobWFya2VyKQotICAgICAgICAgICAgbWFya2VyLmNs
ZWFyKCk7Ci0gICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tNYXJrZXJzLmRlbGV0ZShrZXkpOworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygc3RhcnRPZmZzZXQgPT09ICJudW1iZXIiICYmIHN0
YXJ0T2Zmc2V0ID49IDAgJiYgIWlzTmFOKHN0YXJ0T2Zmc2V0KSk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2Jsb2Nrcy5oYXMoc3RhcnRPZmZzZXQpKTsKKworICAgICAgICBsZXQgYmxv
Y2sgPSB0aGlzLl9ibG9ja3MuZ2V0KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoYmxvY2subWFya2VyKTsKKworICAgICAgICBpZiAoYmxvY2subWFya2VyKQorICAgICAgICAg
ICAgYmxvY2subWFya2VyLmNsZWFyKCk7CisKKyAgICAgICAgdGhpcy5fYmxvY2tzLmRlbGV0ZShz
dGFydE9mZnNldCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ2hyb21hL2Nocm9tYS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nocm9tYS9jaHJvbWEuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdjYTllNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nocm9tYS9jaHJv
bWEuanMKQEAgLTAsMCArMSwyMjI2IEBACisKKy8qKgorICogQGxpY2Vuc2UKKyAqCisgKiBjaHJv
bWEuanMgLSBKYXZhU2NyaXB0IGxpYnJhcnkgZm9yIGNvbG9yIGNvbnZlcnNpb25zCisgKiAKKyAq
IENvcHlyaWdodCAoYykgMjAxMS0yMDE1LCBHcmVnb3IgQWlzY2gKKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAg
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24KKyAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiAzLiBUaGUgbmFtZSBHcmVnb3IgQWlzY2gg
bWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICogICAgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBHUkVHT1IgQUlTQ0ggT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwKKyAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsCisgKiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisoZnVuY3Rpb24oKSB7CisgIHZhciBDb2xvciwgSywgUElUSElSRCwg
VFdPUEksIFgsIFksIFosIGJlemllciwgYmxlbmQsIGJsZW5kX2YsIGJyZXdlciwgYnVybiwgY2hy
b21hLCBjbGlwX3JnYiwgY215azJyZ2IsIGNvbG9ycywgY29zLCBjc3MycmdiLCBkYXJrZW4sIGRv
ZGdlLCBlYWNoLCBmbG9vciwgaGV4MnJnYiwgaHNpMnJnYiwgaHNsMnJnYiwgaHN2MnJnYiwgbGFi
MmxjaCwgbGFiMnJnYiwgbGFiX3h5eiwgbGNoMmxhYiwgbGNoMnJnYiwgbGlnaHRlbiwgbGltaXQs
IGxvZywgbHVtaW5hbmNlLCBsdW1pbmFuY2VfeCwgbXVsdGlwbHksIG5vcm1hbCwgbnVtMnJnYiwg
b3ZlcmxheSwgcG93LCByZ2IyY215aywgcmdiMmhleCwgcmdiMmhzaSwgcmdiMmhzbCwgcmdiMmhz
diwgcmdiMmxhYiwgcmdiMmxjaCwgcmdiMm51bSwgcmdiMnRlbXAsIHJnYjJ4eXosIHJnYl94eXos
IHJvb3QsIHJvdW5kLCBzY3JlZW4sIHNpbiwgdGVtcDJyZ2IsIHR5cGUsIHVucGFjaywgeHl6X2xh
YiwgeHl6X3JnYiwKKyAgICBzbGljZSA9IFtdLnNsaWNlOworCisgIGNocm9tYSA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiAoZnVuY3Rpb24oZnVuYywgYXJncywgY3RvcikgeworICAgICAgY3Rv
ci5wcm90b3R5cGUgPSBmdW5jLnByb3RvdHlwZTsKKyAgICAgIHZhciBjaGlsZCA9IG5ldyBjdG9y
LCByZXN1bHQgPSBmdW5jLmFwcGx5KGNoaWxkLCBhcmdzKTsKKyAgICAgIHJldHVybiBPYmplY3Qo
cmVzdWx0KSA9PT0gcmVzdWx0ID8gcmVzdWx0IDogY2hpbGQ7CisgICAgfSkoQ29sb3IsIGFyZ3Vt
ZW50cywgZnVuY3Rpb24oKXt9KTsKKyAgfTsKKworICBpZiAoKHR5cGVvZiBtb2R1bGUgIT09ICJ1
bmRlZmluZWQiICYmIG1vZHVsZSAhPT0gbnVsbCkgJiYgKG1vZHVsZS5leHBvcnRzICE9IG51bGwp
KSB7CisgICAgbW9kdWxlLmV4cG9ydHMgPSBjaHJvbWE7CisgIH0KKworICBpZiAodHlwZW9mIGRl
ZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CisgICAgZGVmaW5lKFtdLCBmdW5j
dGlvbigpIHsKKyAgICAgIHJldHVybiBjaHJvbWE7CisgICAgfSk7CisgIH0gZWxzZSB7CisgICAg
cm9vdCA9IHR5cGVvZiBleHBvcnRzICE9PSAidW5kZWZpbmVkIiAmJiBleHBvcnRzICE9PSBudWxs
ID8gZXhwb3J0cyA6IHRoaXM7CisgICAgcm9vdC5jaHJvbWEgPSBjaHJvbWE7CisgIH0KKworICBj
aHJvbWEuY29sb3IgPSBmdW5jdGlvbih4LCB5LCB6LCBtKSB7CisgICAgcmV0dXJuIG5ldyBDb2xv
cih4LCB5LCB6LCBtKTsKKyAgfTsKKworICBjaHJvbWEuaHNsID0gZnVuY3Rpb24oaCwgcywgbCwg
YSkgeworICAgIHJldHVybiBuZXcgQ29sb3IoaCwgcywgbCwgYSwgJ2hzbCcpOworICB9OworCisg
IGNocm9tYS5oc3YgPSBmdW5jdGlvbihoLCBzLCB2LCBhKSB7CisgICAgcmV0dXJuIG5ldyBDb2xv
cihoLCBzLCB2LCBhLCAnaHN2Jyk7CisgIH07CisKKyAgY2hyb21hLnJnYiA9IGZ1bmN0aW9uKHIs
IGcsIGIsIGEpIHsKKyAgICByZXR1cm4gbmV3IENvbG9yKHIsIGcsIGIsIGEsICdyZ2InKTsKKyAg
fTsKKworICBjaHJvbWEuaGV4ID0gZnVuY3Rpb24oeCkgeworICAgIHJldHVybiBuZXcgQ29sb3Io
eCk7CisgIH07CisKKyAgY2hyb21hLmNzcyA9IGZ1bmN0aW9uKHgpIHsKKyAgICByZXR1cm4gbmV3
IENvbG9yKHgpOworICB9OworCisgIGNocm9tYS5sYWIgPSBmdW5jdGlvbihsLCBhLCBiKSB7Cisg
ICAgcmV0dXJuIG5ldyBDb2xvcihsLCBhLCBiLCAnbGFiJyk7CisgIH07CisKKyAgY2hyb21hLmxj
aCA9IGZ1bmN0aW9uKGwsIGMsIGgpIHsKKyAgICByZXR1cm4gbmV3IENvbG9yKGwsIGMsIGgsICds
Y2gnKTsKKyAgfTsKKworICBjaHJvbWEuaHNpID0gZnVuY3Rpb24oaCwgcywgaSkgeworICAgIHJl
dHVybiBuZXcgQ29sb3IoaCwgcywgaSwgJ2hzaScpOworICB9OworCisgIGNocm9tYS5nbCA9IGZ1
bmN0aW9uKHIsIGcsIGIsIGEpIHsKKyAgICByZXR1cm4gbmV3IENvbG9yKHIsIGcsIGIsIGEsICdn
bCcpOworICB9OworCisgIGNocm9tYS5udW0gPSBmdW5jdGlvbihuKSB7CisgICAgcmV0dXJuIG5l
dyBDb2xvcihuLCAnbnVtJyk7CisgIH07CisKKyAgY2hyb21hLmNteWsgPSBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4gKGZ1bmN0aW9uKGZ1bmMsIGFyZ3MsIGN0b3IpIHsKKyAgICAgIGN0b3IucHJv
dG90eXBlID0gZnVuYy5wcm90b3R5cGU7CisgICAgICB2YXIgY2hpbGQgPSBuZXcgY3RvciwgcmVz
dWx0ID0gZnVuYy5hcHBseShjaGlsZCwgYXJncyk7CisgICAgICByZXR1cm4gT2JqZWN0KHJlc3Vs
dCkgPT09IHJlc3VsdCA/IHJlc3VsdCA6IGNoaWxkOworICAgIH0pKENvbG9yLCBzbGljZS5jYWxs
KGFyZ3VtZW50cykuY29uY2F0KFsnY215ayddKSwgZnVuY3Rpb24oKXt9KTsKKyAgfTsKKworICBj
aHJvbWEucmFuZG9tID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvZGUsIGRpZ2l0cywgaSwgbzsK
KyAgICBkaWdpdHMgPSAnMDEyMzQ1Njc4OWFiY2RlZic7CisgICAgY29kZSA9ICcjJzsKKyAgICBm
b3IgKGkgPSBvID0gMDsgbyA8IDY7IGkgPSArK28pIHsKKyAgICAgIGNvZGUgKz0gZGlnaXRzLmNo
YXJBdChmbG9vcihNYXRoLnJhbmRvbSgpICogMTYpKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBD
b2xvcihjb2RlKTsKKyAgfTsKKworICBjaHJvbWEuaW50ZXJwb2xhdGUgPSBmdW5jdGlvbihhLCBi
LCBmLCBtKSB7CisgICAgdmFyIHJlZiwgcmVmMTsKKyAgICBpZiAoKGEgPT0gbnVsbCkgfHwgKGIg
PT0gbnVsbCkpIHsKKyAgICAgIHJldHVybiAnIzAwMCc7CisgICAgfQorICAgIGlmICgocmVmID0g
dHlwZShhKSkgPT09ICdzdHJpbmcnIHx8IHJlZiA9PT0gJ251bWJlcicpIHsKKyAgICAgIGEgPSBu
ZXcgQ29sb3IoYSk7CisgICAgfQorICAgIGlmICgocmVmMSA9IHR5cGUoYikpID09PSAnc3RyaW5n
JyB8fCByZWYxID09PSAnbnVtYmVyJykgeworICAgICAgYiA9IG5ldyBDb2xvcihiKTsKKyAgICB9
CisgICAgcmV0dXJuIGEuaW50ZXJwb2xhdGUoZiwgYiwgbSk7CisgIH07CisKKyAgY2hyb21hLm1p
eCA9IGNocm9tYS5pbnRlcnBvbGF0ZTsKKworICBjaHJvbWEuY29udHJhc3QgPSBmdW5jdGlvbihh
LCBiKSB7CisgICAgdmFyIGwxLCBsMiwgcmVmLCByZWYxOworICAgIGlmICgocmVmID0gdHlwZShh
KSkgPT09ICdzdHJpbmcnIHx8IHJlZiA9PT0gJ251bWJlcicpIHsKKyAgICAgIGEgPSBuZXcgQ29s
b3IoYSk7CisgICAgfQorICAgIGlmICgocmVmMSA9IHR5cGUoYikpID09PSAnc3RyaW5nJyB8fCBy
ZWYxID09PSAnbnVtYmVyJykgeworICAgICAgYiA9IG5ldyBDb2xvcihiKTsKKyAgICB9CisgICAg
bDEgPSBhLmx1bWluYW5jZSgpOworICAgIGwyID0gYi5sdW1pbmFuY2UoKTsKKyAgICBpZiAobDEg
PiBsMikgeworICAgICAgcmV0dXJuIChsMSArIDAuMDUpIC8gKGwyICsgMC4wNSk7CisgICAgfSBl
bHNlIHsKKyAgICAgIHJldHVybiAobDIgKyAwLjA1KSAvIChsMSArIDAuMDUpOworICAgIH0KKyAg
fTsKKworICBjaHJvbWEubHVtaW5hbmNlID0gZnVuY3Rpb24oY29sb3IpIHsKKyAgICByZXR1cm4g
Y2hyb21hKGNvbG9yKS5sdW1pbmFuY2UoKTsKKyAgfTsKKworICBjaHJvbWEua2VsdmluID0gZnVu
Y3Rpb24oaykgeworICAgIHJldHVybiBjaHJvbWEodGVtcDJyZ2IoayksICdyZ2InKTsKKyAgfTsK
KworICBjaHJvbWEudmVyc2lvbiA9ICcwLjguMCc7CisKKyAgY2hyb21hLl9Db2xvciA9IENvbG9y
OworCisKKyAgLyoqCisgICAgICBjaHJvbWEuanMKKyAgCisgICAgICBDb3B5cmlnaHQgKGMpIDIw
MTEtMjAxMywgR3JlZ29yIEFpc2NoCisgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAKKyAg
ICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgIAorICAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMKKyAgICAgICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgIAorICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgICAgIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24KKyAgICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgIAorICAgICAgKiBUaGUgbmFtZSBHcmVnb3IgQWlzY2gg
bWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICAgICAgICBk
ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAgCisgICAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAgICAgIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAgICAgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICAgICAgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgR1JFR09SIEFJU0NIIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsCisgICAgICBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAgICAgIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgICAgICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgICAgICBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORworICAgICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLAorICAgICAgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAgCisgICAgICBAc291cmNlOiBo
dHRwczovL2dpdGh1Yi5jb20vZ2thL2Nocm9tYS5qcworICAgKi8KKworICBDb2xvciA9IChmdW5j
dGlvbigpIHsKKyAgICBmdW5jdGlvbiBDb2xvcigpIHsKKyAgICAgIHZhciBhLCBhcmcsIGFyZ3Ms
IGxlbiwgbSwgbWUsIG1lX3JnYiwgbywgcmVmLCByZWYxLCByZWYyLCByZWYzLCByZWY0LCB4LCB5
LCB6OworICAgICAgbWUgPSB0aGlzOworICAgICAgYXJncyA9IFtdOworICAgICAgZm9yIChvID0g
MCwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsgbyA8IGxlbjsgbysrKSB7CisgICAgICAgIGFyZyA9
IGFyZ3VtZW50c1tvXTsKKyAgICAgICAgaWYgKGFyZyAhPSBudWxsKSB7CisgICAgICAgICAgYXJn
cy5wdXNoKGFyZyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmIChhcmdzLmxlbmd0aCA9
PT0gMCkgeworICAgICAgICByZWYgPSBbMjU1LCAwLCAyNTUsIDEsICdyZ2InXSwgeCA9IHJlZlsw
XSwgeSA9IHJlZlsxXSwgeiA9IHJlZlsyXSwgYSA9IHJlZlszXSwgbSA9IHJlZls0XTsKKyAgICAg
IH0gZWxzZSBpZiAodHlwZShhcmdzWzBdKSA9PT0gImFycmF5IikgeworICAgICAgICBpZiAoYXJn
c1swXS5sZW5ndGggPT09IDMpIHsKKyAgICAgICAgICByZWYxID0gYXJnc1swXSwgeCA9IHJlZjFb
MF0sIHkgPSByZWYxWzFdLCB6ID0gcmVmMVsyXTsKKyAgICAgICAgICBhID0gMTsKKyAgICAgICAg
fSBlbHNlIGlmIChhcmdzWzBdLmxlbmd0aCA9PT0gNCkgeworICAgICAgICAgIHJlZjIgPSBhcmdz
WzBdLCB4ID0gcmVmMlswXSwgeSA9IHJlZjJbMV0sIHogPSByZWYyWzJdLCBhID0gcmVmMlszXTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aHJvdyAndW5rbm93biBpbnB1dCBhcmd1bWVu
dCc7CisgICAgICAgIH0KKyAgICAgICAgbSA9IChyZWYzID0gYXJnc1sxXSkgIT0gbnVsbCA/IHJl
ZjMgOiAncmdiJzsKKyAgICAgIH0gZWxzZSBpZiAodHlwZShhcmdzWzBdKSA9PT0gInN0cmluZyIp
IHsKKyAgICAgICAgeCA9IGFyZ3NbMF07CisgICAgICAgIG0gPSAnaGV4JzsKKyAgICAgIH0gZWxz
ZSBpZiAodHlwZShhcmdzWzBdKSA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgcmVmNCA9IGFyZ3Nb
MF0uX3JnYiwgeCA9IHJlZjRbMF0sIHkgPSByZWY0WzFdLCB6ID0gcmVmNFsyXSwgYSA9IHJlZjRb
M107CisgICAgICAgIG0gPSAncmdiJzsKKyAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPD0g
MiAmJiB0eXBlKGFyZ3NbMF0pID09PSAibnVtYmVyIikgeworICAgICAgICB4ID0gYXJnc1swXTsK
KyAgICAgICAgbSA9ICdudW0nOworICAgICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA+PSAzKSB7
CisgICAgICAgIHggPSBhcmdzWzBdOworICAgICAgICB5ID0gYXJnc1sxXTsKKyAgICAgICAgeiA9
IGFyZ3NbMl07CisgICAgICB9CisgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDMpIHsKKyAgICAg
ICAgbSA9ICdyZ2InOworICAgICAgICBhID0gMTsKKyAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5n
dGggPT09IDQpIHsKKyAgICAgICAgaWYgKHR5cGUoYXJnc1szXSkgPT09ICJzdHJpbmciKSB7Cisg
ICAgICAgICAgbSA9IGFyZ3NbM107CisgICAgICAgICAgYSA9IDE7CisgICAgICAgIH0gZWxzZSBp
ZiAodHlwZShhcmdzWzNdKSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICBtID0gJ3JnYic7Cisg
ICAgICAgICAgYSA9IGFyZ3NbM107CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoYXJncy5s
ZW5ndGggPT09IDUpIHsKKyAgICAgICAgYSA9IGFyZ3NbM107CisgICAgICAgIG0gPSBhcmdzWzRd
OworICAgICAgfQorICAgICAgaWYgKG0gIT09ICdjbXlrJykgeworICAgICAgICBpZiAoYSA9PSBu
dWxsKSB7CisgICAgICAgICAgYSA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmICht
ID09PSAncmdiJykgeworICAgICAgICBtZS5fcmdiID0gW3gsIHksIHosIGFdOworICAgICAgfSBl
bHNlIGlmIChtID09PSAnZ2wnKSB7CisgICAgICAgIG1lLl9yZ2IgPSBbeCAqIDI1NSwgeSAqIDI1
NSwgeiAqIDI1NSwgYV07CisgICAgICB9IGVsc2UgaWYgKG0gPT09ICdoc2wnKSB7CisgICAgICAg
IG1lLl9yZ2IgPSBoc2wycmdiKHgsIHksIHopOworICAgICAgICBtZS5fcmdiWzNdID0gYTsKKyAg
ICAgIH0gZWxzZSBpZiAobSA9PT0gJ2hzdicpIHsKKyAgICAgICAgbWUuX3JnYiA9IGhzdjJyZ2Io
eCwgeSwgeik7CisgICAgICAgIG1lLl9yZ2JbM10gPSBhOworICAgICAgfSBlbHNlIGlmIChtID09
PSAnaGV4JykgeworICAgICAgICBtZS5fcmdiID0gaGV4MnJnYih4KTsKKyAgICAgIH0gZWxzZSBp
ZiAobSA9PT0gJ2xhYicpIHsKKyAgICAgICAgbWUuX3JnYiA9IGxhYjJyZ2IoeCwgeSwgeik7Cisg
ICAgICAgIG1lLl9yZ2JbM10gPSBhOworICAgICAgfSBlbHNlIGlmIChtID09PSAnbGNoJykgewor
ICAgICAgICBtZS5fcmdiID0gbGNoMnJnYih4LCB5LCB6KTsKKyAgICAgICAgbWUuX3JnYlszXSA9
IGE7CisgICAgICB9IGVsc2UgaWYgKG0gPT09ICdoc2knKSB7CisgICAgICAgIG1lLl9yZ2IgPSBo
c2kycmdiKHgsIHksIHopOworICAgICAgICBtZS5fcmdiWzNdID0gYTsKKyAgICAgIH0gZWxzZSBp
ZiAobSA9PT0gJ251bScpIHsKKyAgICAgICAgbWUuX3JnYiA9IG51bTJyZ2IoeCk7CisgICAgICB9
IGVsc2UgaWYgKG0gPT09ICdjbXlrJykgeworICAgICAgICBtZS5fcmdiID0gY215azJyZ2IoeCwg
eSwgeiwgYSk7CisgICAgICB9CisgICAgICBtZV9yZ2IgPSBjbGlwX3JnYihtZS5fcmdiKTsKKyAg
ICB9CisKKyAgICBDb2xvci5wcm90b3R5cGUucmdiID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1
cm4gdGhpcy5fcmdiLnNsaWNlKDAsIDMpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUu
cmdiYSA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRoaXMuX3JnYjsKKyAgICB9OworCisg
ICAgQ29sb3IucHJvdG90eXBlLmhleCA9IGZ1bmN0aW9uKG1vZGUpIHsKKyAgICAgIGlmIChtb2Rl
ID09IG51bGwpIHsKKyAgICAgICAgbW9kZSA9ICdyZ2InOworICAgICAgfQorICAgICAgcmV0dXJu
IHJnYjJoZXgodGhpcy5fcmdiLCBtb2RlKTsKKyAgICB9OworCisgICAgQ29sb3IucHJvdG90eXBl
LnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gdGhpcy5uYW1lKCk7CisgICAg
fTsKKworICAgIENvbG9yLnByb3RvdHlwZS5oc2wgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVy
biByZ2IyaHNsKHRoaXMuX3JnYik7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5oc3Yg
PSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiByZ2IyaHN2KHRoaXMuX3JnYik7CisgICAgfTsK
KworICAgIENvbG9yLnByb3RvdHlwZS5sYWIgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBy
Z2IybGFiKHRoaXMuX3JnYik7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5sY2ggPSBm
dW5jdGlvbigpIHsKKyAgICAgIHJldHVybiByZ2IybGNoKHRoaXMuX3JnYik7CisgICAgfTsKKwor
ICAgIENvbG9yLnByb3RvdHlwZS5oc2kgPSBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiByZ2Iy
aHNpKHRoaXMuX3JnYik7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5nbCA9IGZ1bmN0
aW9uKCkgeworICAgICAgcmV0dXJuIFt0aGlzLl9yZ2JbMF0gLyAyNTUsIHRoaXMuX3JnYlsxXSAv
IDI1NSwgdGhpcy5fcmdiWzJdIC8gMjU1LCB0aGlzLl9yZ2JbM11dOworICAgIH07CisKKyAgICBD
b2xvci5wcm90b3R5cGUubnVtID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gcmdiMm51bSh0
aGlzLl9yZ2IpOworICAgIH07CisKKyAgICBDb2xvci5wcm90b3R5cGUubHVtaW5hbmNlID0gZnVu
Y3Rpb24obHVtLCBtb2RlKSB7CisgICAgICB2YXIgY3VyX2x1bSwgZXBzLCBtYXhfaXRlciwgdGVz
dDsKKyAgICAgIGlmIChtb2RlID09IG51bGwpIHsKKyAgICAgICAgbW9kZSA9ICdyZ2InOworICAg
ICAgfQorICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBsdW1p
bmFuY2UodGhpcy5fcmdiKTsKKyAgICAgIH0KKyAgICAgIGlmIChsdW0gPT09IDApIHsKKyAgICAg
ICAgdGhpcy5fcmdiID0gWzAsIDAsIDAsIHRoaXMuX3JnYlszXV07CisgICAgICB9CisgICAgICBp
ZiAobHVtID09PSAxKSB7CisgICAgICAgIHRoaXMuX3JnYiA9IFsyNTUsIDI1NSwgMjU1LCB0aGlz
Ll9yZ2JbM11dOworICAgICAgfQorICAgICAgY3VyX2x1bSA9IGx1bWluYW5jZSh0aGlzLl9yZ2Ip
OworICAgICAgZXBzID0gMWUtNzsKKyAgICAgIG1heF9pdGVyID0gMjA7CisgICAgICB0ZXN0ID0g
ZnVuY3Rpb24obCwgaCkgeworICAgICAgICB2YXIgbG0sIG07CisgICAgICAgIG0gPSBsLmludGVy
cG9sYXRlKDAuNSwgaCwgbW9kZSk7CisgICAgICAgIGxtID0gbS5sdW1pbmFuY2UoKTsKKyAgICAg
ICAgaWYgKE1hdGguYWJzKGx1bSAtIGxtKSA8IGVwcyB8fCAhbWF4X2l0ZXItLSkgeworICAgICAg
ICAgIHJldHVybiBtOworICAgICAgICB9CisgICAgICAgIGlmIChsbSA+IGx1bSkgeworICAgICAg
ICAgIHJldHVybiB0ZXN0KGwsIG0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0ZXN0KG0s
IGgpOworICAgICAgfTsKKyAgICAgIHRoaXMuX3JnYiA9IChjdXJfbHVtID4gbHVtID8gdGVzdChu
ZXcgQ29sb3IoJ2JsYWNrJyksIHRoaXMpIDogdGVzdCh0aGlzLCBuZXcgQ29sb3IoJ3doaXRlJykp
KS5yZ2JhKCk7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAgQ29sb3IucHJvdG90
eXBlLm5hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBoLCBrOworICAgICAgaCA9IHRoaXMu
aGV4KCk7CisgICAgICBmb3IgKGsgaW4gY2hyb21hLmNvbG9ycykgeworICAgICAgICBpZiAoaCA9
PT0gY2hyb21hLmNvbG9yc1trXSkgeworICAgICAgICAgIHJldHVybiBrOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICByZXR1cm4gaDsKKyAgICB9OworCisgICAgQ29sb3IucHJvdG90eXBlLmFs
cGhhID0gZnVuY3Rpb24oYWxwaGEpIHsKKyAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7Cisg
ICAgICAgIHRoaXMuX3JnYlszXSA9IGFscGhhOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICAg
IH0KKyAgICAgIHJldHVybiB0aGlzLl9yZ2JbM107CisgICAgfTsKKworICAgIENvbG9yLnByb3Rv
dHlwZS5jc3MgPSBmdW5jdGlvbihtb2RlKSB7CisgICAgICB2YXIgaHNsLCBtZSwgcmdiLCBybmQ7
CisgICAgICBpZiAobW9kZSA9PSBudWxsKSB7CisgICAgICAgIG1vZGUgPSAncmdiJzsKKyAgICAg
IH0KKyAgICAgIG1lID0gdGhpczsKKyAgICAgIHJnYiA9IG1lLl9yZ2I7CisgICAgICBpZiAobW9k
ZS5sZW5ndGggPT09IDMgJiYgcmdiWzNdIDwgMSkgeworICAgICAgICBtb2RlICs9ICdhJzsKKyAg
ICAgIH0KKyAgICAgIGlmIChtb2RlID09PSAncmdiJykgeworICAgICAgICByZXR1cm4gbW9kZSAr
ICcoJyArIHJnYi5zbGljZSgwLCAzKS5tYXAocm91bmQpLmpvaW4oJywnKSArICcpJzsKKyAgICAg
IH0gZWxzZSBpZiAobW9kZSA9PT0gJ3JnYmEnKSB7CisgICAgICAgIHJldHVybiBtb2RlICsgJygn
ICsgcmdiLnNsaWNlKDAsIDMpLm1hcChyb3VuZCkuam9pbignLCcpICsgJywnICsgcmdiWzNdICsg
JyknOworICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAnaHNsJyB8fCBtb2RlID09PSAnaHNsYScp
IHsKKyAgICAgICAgaHNsID0gbWUuaHNsKCk7CisgICAgICAgIHJuZCA9IGZ1bmN0aW9uKGEpIHsK
KyAgICAgICAgICByZXR1cm4gcm91bmQoYSAqIDEwMCkgLyAxMDA7CisgICAgICAgIH07CisgICAg
ICAgIGhzbFswXSA9IHJuZChoc2xbMF0gfHwgMCk7CisgICAgICAgIGhzbFsxXSA9IHJuZChoc2xb
MV0gKiAxMDApICsgJyUnOworICAgICAgICBoc2xbMl0gPSBybmQoaHNsWzJdICogMTAwKSArICcl
JzsKKyAgICAgICAgaWYgKG1vZGUubGVuZ3RoID09PSA0KSB7CisgICAgICAgICAgaHNsWzNdID0g
cmdiWzNdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtb2RlICsgJygnICsgaHNsLmpvaW4o
JywnKSArICcpJzsKKyAgICAgIH0KKyAgICB9OworCisgICAgQ29sb3IucHJvdG90eXBlLmludGVy
cG9sYXRlID0gZnVuY3Rpb24oZiwgY29sLCBtKSB7CisKKyAgICAgIC8qCisgICAgICBpbnRlcnBv
bGF0ZXMgYmV0d2VlbiBjb2xvcnMKKyAgICAgIGYgPSAwIC0tPiBtZQorICAgICAgZiA9IDEgLS0+
IGNvbAorICAgICAgICovCisgICAgICB2YXIgZGgsIGh1ZSwgaHVlMCwgaHVlMSwgbGJ2LCBsYnYw
LCBsYnYxLCBtZSwgcmVzLCBzYXQsIHNhdDAsIHNhdDEsIHh5ejAsIHh5ejE7CisgICAgICBtZSA9
IHRoaXM7CisgICAgICBpZiAobSA9PSBudWxsKSB7CisgICAgICAgIG0gPSAncmdiJzsKKyAgICAg
IH0KKyAgICAgIGlmICh0eXBlKGNvbCkgPT09ICJzdHJpbmciKSB7CisgICAgICAgIGNvbCA9IG5l
dyBDb2xvcihjb2wpOworICAgICAgfQorICAgICAgaWYgKG0gPT09ICdoc2wnIHx8IG0gPT09ICdo
c3YnIHx8IG0gPT09ICdsY2gnIHx8IG0gPT09ICdoc2knKSB7CisgICAgICAgIGlmIChtID09PSAn
aHNsJykgeworICAgICAgICAgIHh5ejAgPSBtZS5oc2woKTsKKyAgICAgICAgICB4eXoxID0gY29s
LmhzbCgpOworICAgICAgICB9IGVsc2UgaWYgKG0gPT09ICdoc3YnKSB7CisgICAgICAgICAgeHl6
MCA9IG1lLmhzdigpOworICAgICAgICAgIHh5ejEgPSBjb2wuaHN2KCk7CisgICAgICAgIH0gZWxz
ZSBpZiAobSA9PT0gJ2hzaScpIHsKKyAgICAgICAgICB4eXowID0gbWUuaHNpKCk7CisgICAgICAg
ICAgeHl6MSA9IGNvbC5oc2koKTsKKyAgICAgICAgfSBlbHNlIGlmIChtID09PSAnbGNoJykgewor
ICAgICAgICAgIHh5ejAgPSBtZS5sY2goKTsKKyAgICAgICAgICB4eXoxID0gY29sLmxjaCgpOwor
ICAgICAgICB9CisgICAgICAgIGlmIChtLnN1YnN0cigwLCAxKSA9PT0gJ2gnKSB7CisgICAgICAg
ICAgaHVlMCA9IHh5ejBbMF0sIHNhdDAgPSB4eXowWzFdLCBsYnYwID0geHl6MFsyXTsKKyAgICAg
ICAgICBodWUxID0geHl6MVswXSwgc2F0MSA9IHh5ejFbMV0sIGxidjEgPSB4eXoxWzJdOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIGxidjAgPSB4eXowWzBdLCBzYXQwID0geHl6MFsxXSwg
aHVlMCA9IHh5ejBbMl07CisgICAgICAgICAgbGJ2MSA9IHh5ejFbMF0sIHNhdDEgPSB4eXoxWzFd
LCBodWUxID0geHl6MVsyXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWlzTmFOKGh1ZTApICYm
ICFpc05hTihodWUxKSkgeworICAgICAgICAgIGlmIChodWUxID4gaHVlMCAmJiBodWUxIC0gaHVl
MCA+IDE4MCkgeworICAgICAgICAgICAgZGggPSBodWUxIC0gKGh1ZTAgKyAzNjApOworICAgICAg
ICAgIH0gZWxzZSBpZiAoaHVlMSA8IGh1ZTAgJiYgaHVlMCAtIGh1ZTEgPiAxODApIHsKKyAgICAg
ICAgICAgIGRoID0gaHVlMSArIDM2MCAtIGh1ZTA7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGRoID0gaHVlMSAtIGh1ZTA7CisgICAgICAgICAgfQorICAgICAgICAgIGh1ZSA9IGh1
ZTAgKyBmICogZGg7CisgICAgICAgIH0gZWxzZSBpZiAoIWlzTmFOKGh1ZTApKSB7CisgICAgICAg
ICAgaHVlID0gaHVlMDsKKyAgICAgICAgICBpZiAoKGxidjEgPT09IDEgfHwgbGJ2MSA9PT0gMCkg
JiYgbSAhPT0gJ2hzdicpIHsKKyAgICAgICAgICAgIHNhdCA9IHNhdDA7CisgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgaWYgKCFpc05hTihodWUxKSkgeworICAgICAgICAgIGh1ZSA9IGh1ZTE7
CisgICAgICAgICAgaWYgKChsYnYwID09PSAxIHx8IGxidjAgPT09IDApICYmIG0gIT09ICdoc3Yn
KSB7CisgICAgICAgICAgICBzYXQgPSBzYXQxOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICBodWUgPSBOdW1iZXIuTmFOOworICAgICAgICB9CisgICAgICAgIGlmIChz
YXQgPT0gbnVsbCkgeworICAgICAgICAgIHNhdCA9IHNhdDAgKyBmICogKHNhdDEgLSBzYXQwKTsK
KyAgICAgICAgfQorICAgICAgICBsYnYgPSBsYnYwICsgZiAqIChsYnYxIC0gbGJ2MCk7CisgICAg
ICAgIGlmIChtLnN1YnN0cigwLCAxKSA9PT0gJ2gnKSB7CisgICAgICAgICAgcmVzID0gbmV3IENv
bG9yKGh1ZSwgc2F0LCBsYnYsIG0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJlcyA9
IG5ldyBDb2xvcihsYnYsIHNhdCwgaHVlLCBtKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlm
IChtID09PSAncmdiJykgeworICAgICAgICB4eXowID0gbWUuX3JnYjsKKyAgICAgICAgeHl6MSA9
IGNvbC5fcmdiOworICAgICAgICByZXMgPSBuZXcgQ29sb3IoeHl6MFswXSArIGYgKiAoeHl6MVsw
XSAtIHh5ejBbMF0pLCB4eXowWzFdICsgZiAqICh4eXoxWzFdIC0geHl6MFsxXSksIHh5ejBbMl0g
KyBmICogKHh5ejFbMl0gLSB4eXowWzJdKSwgbSk7CisgICAgICB9IGVsc2UgaWYgKG0gPT09ICdu
dW0nKSB7CisgICAgICAgIGlmICghKGNvbCBpbnN0YW5jZW9mIENvbG9yKSkgeworICAgICAgICAg
IGNvbCA9IG5ldyBDb2xvcihjb2wsIG0pOworICAgICAgICB9CisgICAgICAgIHh5ejAgPSBtZS5f
cmdiOworICAgICAgICB4eXoxID0gY29sLl9yZ2I7CisgICAgICAgIHJlcyA9IG5ldyBDb2xvcigo
KHh5ejBbMF0gKyBmICogKHh5ejFbMF0gLSB4eXowWzBdKSkgPDwgMTYpICsgKCh4eXowWzFdICsg
ZiAqICh4eXoxWzFdIC0geHl6MFsxXSkpIDw8IDgpICsgKCh4eXowWzJdICsgZiAqICh4eXoxWzJd
IC0geHl6MFsyXSkpICYgMHhmZiksIG0pOworICAgICAgfSBlbHNlIGlmIChtID09PSAnbGFiJykg
eworICAgICAgICB4eXowID0gbWUubGFiKCk7CisgICAgICAgIHh5ejEgPSBjb2wubGFiKCk7Cisg
ICAgICAgIHJlcyA9IG5ldyBDb2xvcih4eXowWzBdICsgZiAqICh4eXoxWzBdIC0geHl6MFswXSks
IHh5ejBbMV0gKyBmICogKHh5ejFbMV0gLSB4eXowWzFdKSwgeHl6MFsyXSArIGYgKiAoeHl6MVsy
XSAtIHh5ejBbMl0pLCBtKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93ICJjb2xvciBt
b2RlICIgKyBtICsgIiBpcyBub3Qgc3VwcG9ydGVkIjsKKyAgICAgIH0KKyAgICAgIHJlcy5hbHBo
YShtZS5hbHBoYSgpICsgZiAqIChjb2wuYWxwaGEoKSAtIG1lLmFscGhhKCkpKTsKKyAgICAgIHJl
dHVybiByZXM7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5taXggPSBmdW5jdGlvbihm
LCBjb2wsIG0pIHsKKyAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKGYsIGNvbCwgbSk7Cisg
ICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5wcmVtdWx0aXBseSA9IGZ1bmN0aW9uKCkgewor
ICAgICAgdmFyIGEsIHJnYjsKKyAgICAgIHJnYiA9IHRoaXMucmdiKCk7CisgICAgICBhID0gdGhp
cy5hbHBoYSgpOworICAgICAgcmV0dXJuIGNocm9tYShyZ2JbMF0gKiBhLCByZ2JbMV0gKiBhLCBy
Z2JbMl0gKiBhLCBhKTsKKyAgICB9OworCisgICAgQ29sb3IucHJvdG90eXBlLmRhcmtlbiA9IGZ1
bmN0aW9uKGFtb3VudCkgeworICAgICAgdmFyIGxjaCwgbWU7CisgICAgICBpZiAoYW1vdW50ID09
IG51bGwpIHsKKyAgICAgICAgYW1vdW50ID0gMjA7CisgICAgICB9CisgICAgICBtZSA9IHRoaXM7
CisgICAgICBsY2ggPSBtZS5sY2goKTsKKyAgICAgIGxjaFswXSAtPSBhbW91bnQ7CisgICAgICBy
ZXR1cm4gY2hyb21hLmxjaChsY2gpLmFscGhhKG1lLmFscGhhKCkpOworICAgIH07CisKKyAgICBD
b2xvci5wcm90b3R5cGUuZGFya2VyID0gZnVuY3Rpb24oYW1vdW50KSB7CisgICAgICByZXR1cm4g
dGhpcy5kYXJrZW4oYW1vdW50KTsKKyAgICB9OworCisgICAgQ29sb3IucHJvdG90eXBlLmJyaWdo
dGVuID0gZnVuY3Rpb24oYW1vdW50KSB7CisgICAgICBpZiAoYW1vdW50ID09IG51bGwpIHsKKyAg
ICAgICAgYW1vdW50ID0gMjA7CisgICAgICB9CisgICAgICByZXR1cm4gdGhpcy5kYXJrZW4oLWFt
b3VudCk7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5icmlnaHRlciA9IGZ1bmN0aW9u
KGFtb3VudCkgeworICAgICAgcmV0dXJuIHRoaXMuYnJpZ2h0ZW4oYW1vdW50KTsKKyAgICB9Owor
CisgICAgQ29sb3IucHJvdG90eXBlLnNhdHVyYXRlID0gZnVuY3Rpb24oYW1vdW50KSB7CisgICAg
ICB2YXIgbGNoLCBtZTsKKyAgICAgIGlmIChhbW91bnQgPT0gbnVsbCkgeworICAgICAgICBhbW91
bnQgPSAyMDsKKyAgICAgIH0KKyAgICAgIG1lID0gdGhpczsKKyAgICAgIGxjaCA9IG1lLmxjaCgp
OworICAgICAgbGNoWzFdICs9IGFtb3VudDsKKyAgICAgIHJldHVybiBjaHJvbWEubGNoKGxjaCku
YWxwaGEobWUuYWxwaGEoKSk7CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5kZXNhdHVy
YXRlID0gZnVuY3Rpb24oYW1vdW50KSB7CisgICAgICBpZiAoYW1vdW50ID09IG51bGwpIHsKKyAg
ICAgICAgYW1vdW50ID0gMjA7CisgICAgICB9CisgICAgICByZXR1cm4gdGhpcy5zYXR1cmF0ZSgt
YW1vdW50KTsKKyAgICB9OworCisgICAgQ29sb3IucHJvdG90eXBlLmJsZW5kID0gZnVuY3Rpb24o
Y29sLCBtb2RlKSB7CisgICAgICByZXR1cm4gY2hyb21hLmJsZW5kKHRoaXMsIGNvbCwgbW9kZSk7
CisgICAgfTsKKworICAgIENvbG9yLnByb3RvdHlwZS5rZWx2aW4gPSBmdW5jdGlvbigpIHsKKyAg
ICAgIHJldHVybiByZ2IydGVtcCh0aGlzLl9yZ2IpOworICAgIH07CisKKyAgICBDb2xvci5wcm90
b3R5cGUuY215ayA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHJnYjJjbXlrKHRoaXMuX3Jn
Yik7CisgICAgfTsKKworICAgIHJldHVybiBDb2xvcjsKKworICB9KSgpOworCisgIGNsaXBfcmdi
ID0gZnVuY3Rpb24ocmdiKSB7CisgICAgdmFyIGk7CisgICAgZm9yIChpIGluIHJnYikgeworICAg
ICAgaWYgKGkgPCAzKSB7CisgICAgICAgIGlmIChyZ2JbaV0gPCAwKSB7CisgICAgICAgICAgcmdi
W2ldID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmdiW2ldID4gMjU1KSB7CisgICAgICAg
ICAgcmdiW2ldID0gMjU1OworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGkgPT09IDMpIHsK
KyAgICAgICAgaWYgKHJnYltpXSA8IDApIHsKKyAgICAgICAgICByZ2JbaV0gPSAwOworICAgICAg
ICB9CisgICAgICAgIGlmIChyZ2JbaV0gPiAxKSB7CisgICAgICAgICAgcmdiW2ldID0gMTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmdiOworICB9OworCisgIHJnYjJj
bXlrID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGIsIGMsIGYsIGcsIGssIG0sIHIsIHJlZiwgeTsK
KyAgICByZWYgPSB1bnBhY2soYXJndW1lbnRzKSwgciA9IHJlZlswXSwgZyA9IHJlZlsxXSwgYiA9
IHJlZlsyXTsKKyAgICByID0gciAvIDI1NTsKKyAgICBnID0gZyAvIDI1NTsKKyAgICBiID0gYiAv
IDI1NTsKKyAgICBrID0gMSAtIE1hdGgubWF4KHIsIE1hdGgubWF4KGcsIGIpKTsKKyAgICBmID0g
ayA8IDEgPyAxIC8gKDEgLSBrKSA6IDA7CisgICAgYyA9ICgxIC0gciAtIGspICogZjsKKyAgICBt
ID0gKDEgLSBnIC0gaykgKiBmOworICAgIHkgPSAoMSAtIGIgLSBrKSAqIGY7CisgICAgcmV0dXJu
IFtjLCBtLCB5LCBrXTsKKyAgfTsKKworICBjbXlrMnJnYiA9IGZ1bmN0aW9uKCkgeworICAgIHZh
ciBiLCBjLCBnLCBrLCBtLCByLCByZWYsIHk7CisgICAgcmVmID0gdW5wYWNrKGFyZ3VtZW50cyks
IGMgPSByZWZbMF0sIG0gPSByZWZbMV0sIHkgPSByZWZbMl0sIGsgPSByZWZbM107CisgICAgaWYg
KGsgPT09IDEpIHsKKyAgICAgIHJldHVybiBbMCwgMCwgMF07CisgICAgfQorICAgIHIgPSBjID49
IDEgPyAwIDogcm91bmQoMjU1ICogKDEgLSBjKSAqICgxIC0gaykpOworICAgIGcgPSBtID49IDEg
PyAwIDogcm91bmQoMjU1ICogKDEgLSBtKSAqICgxIC0gaykpOworICAgIGIgPSB5ID49IDEgPyAw
IDogcm91bmQoMjU1ICogKDEgLSB5KSAqICgxIC0gaykpOworICAgIHJldHVybiBbciwgZywgYl07
CisgIH07CisKKyAgY3NzMnJnYiA9IGZ1bmN0aW9uKGNzcykgeworICAgIHZhciBhYSwgYWIsIGhz
bCwgaSwgbSwgbywgcmdiLCB3OworICAgIGNzcyA9IGNzcy50b0xvd2VyQ2FzZSgpOworICAgIGlm
ICgoY2hyb21hLmNvbG9ycyAhPSBudWxsKSAmJiBjaHJvbWEuY29sb3JzW2Nzc10pIHsKKyAgICAg
IHJldHVybiBoZXgycmdiKGNocm9tYS5jb2xvcnNbY3NzXSk7CisgICAgfQorICAgIGlmIChtID0g
Y3NzLm1hdGNoKC9yZ2JcKFxzKihcLT9cZCspLFxzKihcLT9cZCspXHMqLFxzKihcLT9cZCspXHMq
XCkvKSkgeworICAgICAgcmdiID0gbS5zbGljZSgxLCA0KTsKKyAgICAgIGZvciAoaSA9IG8gPSAw
OyBvIDw9IDI7IGkgPSArK28pIHsKKyAgICAgICAgcmdiW2ldID0gK3JnYltpXTsKKyAgICAgIH0K
KyAgICAgIHJnYlszXSA9IDE7CisgICAgfSBlbHNlIGlmIChtID0gY3NzLm1hdGNoKC9yZ2JhXChc
cyooXC0/XGQrKSxccyooXC0/XGQrKVxzKixccyooXC0/XGQrKVxzKixccyooWzAxXXxbMDFdP1wu
XGQrKVwpLykpIHsKKyAgICAgIHJnYiA9IG0uc2xpY2UoMSwgNSk7CisgICAgICBmb3IgKGkgPSB3
ID0gMDsgdyA8PSAzOyBpID0gKyt3KSB7CisgICAgICAgIHJnYltpXSA9ICtyZ2JbaV07CisgICAg
ICB9CisgICAgfSBlbHNlIGlmIChtID0gY3NzLm1hdGNoKC9yZ2JcKFxzKihcLT9cZCsoPzpcLlxk
Kyk/KSUsXHMqKFwtP1xkKyg/OlwuXGQrKT8pJVxzKixccyooXC0/XGQrKD86XC5cZCspPyklXHMq
XCkvKSkgeworICAgICAgcmdiID0gbS5zbGljZSgxLCA0KTsKKyAgICAgIGZvciAoaSA9IGFhID0g
MDsgYWEgPD0gMjsgaSA9ICsrYWEpIHsKKyAgICAgICAgcmdiW2ldID0gcm91bmQocmdiW2ldICog
Mi41NSk7CisgICAgICB9CisgICAgICByZ2JbM10gPSAxOworICAgIH0gZWxzZSBpZiAobSA9IGNz
cy5tYXRjaCgvcmdiYVwoXHMqKFwtP1xkKyg/OlwuXGQrKT8pJSxccyooXC0/XGQrKD86XC5cZCsp
PyklXHMqLFxzKihcLT9cZCsoPzpcLlxkKyk/KSVccyosXHMqKFswMV18WzAxXT9cLlxkKylcKS8p
KSB7CisgICAgICByZ2IgPSBtLnNsaWNlKDEsIDUpOworICAgICAgZm9yIChpID0gYWIgPSAwOyBh
YiA8PSAyOyBpID0gKythYikgeworICAgICAgICByZ2JbaV0gPSByb3VuZChyZ2JbaV0gKiAyLjU1
KTsKKyAgICAgIH0KKyAgICAgIHJnYlszXSA9ICtyZ2JbM107CisgICAgfSBlbHNlIGlmIChtID0g
Y3NzLm1hdGNoKC9oc2xcKFxzKihcLT9cZCsoPzpcLlxkKyk/KSxccyooXC0/XGQrKD86XC5cZCsp
PyklXHMqLFxzKihcLT9cZCsoPzpcLlxkKyk/KSVccypcKS8pKSB7CisgICAgICBoc2wgPSBtLnNs
aWNlKDEsIDQpOworICAgICAgaHNsWzFdICo9IDAuMDE7CisgICAgICBoc2xbMl0gKj0gMC4wMTsK
KyAgICAgIHJnYiA9IGhzbDJyZ2IoaHNsKTsKKyAgICAgIHJnYlszXSA9IDE7CisgICAgfSBlbHNl
IGlmIChtID0gY3NzLm1hdGNoKC9oc2xhXChccyooXC0/XGQrKD86XC5cZCspPyksXHMqKFwtP1xk
Kyg/OlwuXGQrKT8pJVxzKixccyooXC0/XGQrKD86XC5cZCspPyklXHMqLFxzKihbMDFdfFswMV0/
XC5cZCspXCkvKSkgeworICAgICAgaHNsID0gbS5zbGljZSgxLCA0KTsKKyAgICAgIGhzbFsxXSAq
PSAwLjAxOworICAgICAgaHNsWzJdICo9IDAuMDE7CisgICAgICByZ2IgPSBoc2wycmdiKGhzbCk7
CisgICAgICByZ2JbM10gPSArbVs0XTsKKyAgICB9CisgICAgcmV0dXJuIHJnYjsKKyAgfTsKKwor
ICBoZXgycmdiID0gZnVuY3Rpb24oaGV4KSB7CisgICAgdmFyIGEsIGIsIGcsIHIsIHJnYiwgdTsK
KyAgICBpZiAoaGV4Lm1hdGNoKC9eIz8oW0EtRmEtZjAtOV17Nn18W0EtRmEtZjAtOV17M30pJC8p
KSB7CisgICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gNCB8fCBoZXgubGVuZ3RoID09PSA3KSB7Cisg
ICAgICAgIGhleCA9IGhleC5zdWJzdHIoMSk7CisgICAgICB9CisgICAgICBpZiAoaGV4Lmxlbmd0
aCA9PT0gMykgeworICAgICAgICBoZXggPSBoZXguc3BsaXQoIiIpOworICAgICAgICBoZXggPSBo
ZXhbMF0gKyBoZXhbMF0gKyBoZXhbMV0gKyBoZXhbMV0gKyBoZXhbMl0gKyBoZXhbMl07CisgICAg
ICB9CisgICAgICB1ID0gcGFyc2VJbnQoaGV4LCAxNik7CisgICAgICByID0gdSA+PiAxNjsKKyAg
ICAgIGcgPSB1ID4+IDggJiAweEZGOworICAgICAgYiA9IHUgJiAweEZGOworICAgICAgcmV0dXJu
IFtyLCBnLCBiLCAxXTsKKyAgICB9CisgICAgaWYgKGhleC5tYXRjaCgvXiM/KFtBLUZhLWYwLTld
ezh9KSQvKSkgeworICAgICAgaWYgKGhleC5sZW5ndGggPT09IDkpIHsKKyAgICAgICAgaGV4ID0g
aGV4LnN1YnN0cigxKTsKKyAgICAgIH0KKyAgICAgIHUgPSBwYXJzZUludChoZXgsIDE2KTsKKyAg
ICAgIHIgPSB1ID4+IDI0ICYgMHhGRjsKKyAgICAgIGcgPSB1ID4+IDE2ICYgMHhGRjsKKyAgICAg
IGIgPSB1ID4+IDggJiAweEZGOworICAgICAgYSA9IHJvdW5kKCh1ICYgMHhGRikgLyAweEZGICog
MTAwKSAvIDEwMDsKKyAgICAgIHJldHVybiBbciwgZywgYiwgYV07CisgICAgfQorICAgIGlmIChy
Z2IgPSBjc3MycmdiKGhleCkpIHsKKyAgICAgIHJldHVybiByZ2I7CisgICAgfQorICAgIHRocm93
ICJ1bmtub3duIGNvbG9yOiAiICsgaGV4OworICB9OworCisgIGhzaTJyZ2IgPSBmdW5jdGlvbiho
LCBzLCBpKSB7CisKKyAgICAvKgorICAgIGJvcnJvd2VkIGZyb20gaGVyZToKKyAgICBodHRwOi8v
aHVtbWVyLnN0YW5mb3JkLmVkdS9tdXNlaW5mby9kb2MvZXhhbXBsZXMvaHVtZHJ1bS9rZXlzY2Fw
ZTIvaHNpMnJnYi5jcHAKKyAgICAgKi8KKyAgICB2YXIgYiwgZywgciwgcmVmOworICAgIHJlZiA9
IHVucGFjayhhcmd1bWVudHMpLCBoID0gcmVmWzBdLCBzID0gcmVmWzFdLCBpID0gcmVmWzJdOwor
ICAgIGggLz0gMzYwOworICAgIGlmIChoIDwgMSAvIDMpIHsKKyAgICAgIGIgPSAoMSAtIHMpIC8g
MzsKKyAgICAgIHIgPSAoMSArIHMgKiBjb3MoVFdPUEkgKiBoKSAvIGNvcyhQSVRISVJEIC0gVFdP
UEkgKiBoKSkgLyAzOworICAgICAgZyA9IDEgLSAoYiArIHIpOworICAgIH0gZWxzZSBpZiAoaCA8
IDIgLyAzKSB7CisgICAgICBoIC09IDEgLyAzOworICAgICAgciA9ICgxIC0gcykgLyAzOworICAg
ICAgZyA9ICgxICsgcyAqIGNvcyhUV09QSSAqIGgpIC8gY29zKFBJVEhJUkQgLSBUV09QSSAqIGgp
KSAvIDM7CisgICAgICBiID0gMSAtIChyICsgZyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGggLT0g
MiAvIDM7CisgICAgICBnID0gKDEgLSBzKSAvIDM7CisgICAgICBiID0gKDEgKyBzICogY29zKFRX
T1BJICogaCkgLyBjb3MoUElUSElSRCAtIFRXT1BJICogaCkpIC8gMzsKKyAgICAgIHIgPSAxIC0g
KGcgKyBiKTsKKyAgICB9CisgICAgciA9IGxpbWl0KGkgKiByICogMyk7CisgICAgZyA9IGxpbWl0
KGkgKiBnICogMyk7CisgICAgYiA9IGxpbWl0KGkgKiBiICogMyk7CisgICAgcmV0dXJuIFtyICog
MjU1LCBnICogMjU1LCBiICogMjU1XTsKKyAgfTsKKworICBoc2wycmdiID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIGIsIGMsIGcsIGgsIGksIGwsIG8sIHIsIHJlZiwgcmVmMSwgcywgdDEsIHQyLCB0
MzsKKyAgICByZWYgPSB1bnBhY2soYXJndW1lbnRzKSwgaCA9IHJlZlswXSwgcyA9IHJlZlsxXSwg
bCA9IHJlZlsyXTsKKyAgICBpZiAocyA9PT0gMCkgeworICAgICAgciA9IGcgPSBiID0gbCAqIDI1
NTsKKyAgICB9IGVsc2UgeworICAgICAgdDMgPSBbMCwgMCwgMF07CisgICAgICBjID0gWzAsIDAs
IDBdOworICAgICAgdDIgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzOwor
ICAgICAgdDEgPSAyICogbCAtIHQyOworICAgICAgaCAvPSAzNjA7CisgICAgICB0M1swXSA9IGgg
KyAxIC8gMzsKKyAgICAgIHQzWzFdID0gaDsKKyAgICAgIHQzWzJdID0gaCAtIDEgLyAzOworICAg
ICAgZm9yIChpID0gbyA9IDA7IG8gPD0gMjsgaSA9ICsrbykgeworICAgICAgICBpZiAodDNbaV0g
PCAwKSB7CisgICAgICAgICAgdDNbaV0gKz0gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAodDNb
aV0gPiAxKSB7CisgICAgICAgICAgdDNbaV0gLT0gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
NiAqIHQzW2ldIDwgMSkgeworICAgICAgICAgIGNbaV0gPSB0MSArICh0MiAtIHQxKSAqIDYgKiB0
M1tpXTsKKyAgICAgICAgfSBlbHNlIGlmICgyICogdDNbaV0gPCAxKSB7CisgICAgICAgICAgY1tp
XSA9IHQyOworICAgICAgICB9IGVsc2UgaWYgKDMgKiB0M1tpXSA8IDIpIHsKKyAgICAgICAgICBj
W2ldID0gdDEgKyAodDIgLSB0MSkgKiAoKDIgLyAzKSAtIHQzW2ldKSAqIDY7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgY1tpXSA9IHQxOworICAgICAgICB9CisgICAgICB9CisgICAgICBy
ZWYxID0gW3JvdW5kKGNbMF0gKiAyNTUpLCByb3VuZChjWzFdICogMjU1KSwgcm91bmQoY1syXSAq
IDI1NSldLCByID0gcmVmMVswXSwgZyA9IHJlZjFbMV0sIGIgPSByZWYxWzJdOworICAgIH0KKyAg
ICByZXR1cm4gW3IsIGcsIGJdOworICB9OworCisgIGhzdjJyZ2IgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgYiwgZiwgZywgaCwgaSwgcCwgcSwgciwgcmVmLCByZWYxLCByZWYyLCByZWYzLCByZWY0
LCByZWY1LCByZWY2LCBzLCB0LCB2OworICAgIHJlZiA9IHVucGFjayhhcmd1bWVudHMpLCBoID0g
cmVmWzBdLCBzID0gcmVmWzFdLCB2ID0gcmVmWzJdOworICAgIHYgKj0gMjU1OworICAgIGlmIChz
ID09PSAwKSB7CisgICAgICByID0gZyA9IGIgPSB2OworICAgIH0gZWxzZSB7CisgICAgICBpZiAo
aCA9PT0gMzYwKSB7CisgICAgICAgIGggPSAwOworICAgICAgfQorICAgICAgaWYgKGggPiAzNjAp
IHsKKyAgICAgICAgaCAtPSAzNjA7CisgICAgICB9CisgICAgICBpZiAoaCA8IDApIHsKKyAgICAg
ICAgaCArPSAzNjA7CisgICAgICB9CisgICAgICBoIC89IDYwOworICAgICAgaSA9IGZsb29yKGgp
OworICAgICAgZiA9IGggLSBpOworICAgICAgcCA9IHYgKiAoMSAtIHMpOworICAgICAgcSA9IHYg
KiAoMSAtIHMgKiBmKTsKKyAgICAgIHQgPSB2ICogKDEgLSBzICogKDEgLSBmKSk7CisgICAgICBz
d2l0Y2ggKGkpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgIHJlZjEgPSBbdiwgdCwgcF0s
IHIgPSByZWYxWzBdLCBnID0gcmVmMVsxXSwgYiA9IHJlZjFbMl07CisgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICByZWYyID0gW3EsIHYsIHBdLCByID0gcmVmMlsw
XSwgZyA9IHJlZjJbMV0sIGIgPSByZWYyWzJdOworICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgcmVmMyA9IFtwLCB2LCB0XSwgciA9IHJlZjNbMF0sIGcgPSByZWYz
WzFdLCBiID0gcmVmM1syXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAg
ICAgICAgIHJlZjQgPSBbcCwgcSwgdl0sIHIgPSByZWY0WzBdLCBnID0gcmVmNFsxXSwgYiA9IHJl
ZjRbMl07CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICByZWY1
ID0gW3QsIHAsIHZdLCByID0gcmVmNVswXSwgZyA9IHJlZjVbMV0sIGIgPSByZWY1WzJdOworICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgcmVmNiA9IFt2LCBwLCBx
XSwgciA9IHJlZjZbMF0sIGcgPSByZWY2WzFdLCBiID0gcmVmNlsyXTsKKyAgICAgIH0KKyAgICB9
CisgICAgciA9IHJvdW5kKHIpOworICAgIGcgPSByb3VuZChnKTsKKyAgICBiID0gcm91bmQoYik7
CisgICAgcmV0dXJuIFtyLCBnLCBiXTsKKyAgfTsKKworICBLID0gMTg7CisKKyAgWCA9IDAuOTUw
NDcwOworCisgIFkgPSAxOworCisgIFogPSAxLjA4ODgzMDsKKworICBsYWIybGNoID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIGEsIGIsIGMsIGgsIGwsIHJlZjsKKyAgICByZWYgPSB1bnBhY2soYXJn
dW1lbnRzKSwgbCA9IHJlZlswXSwgYSA9IHJlZlsxXSwgYiA9IHJlZlsyXTsKKyAgICBjID0gTWF0
aC5zcXJ0KGEgKiBhICsgYiAqIGIpOworICAgIGggPSAoTWF0aC5hdGFuMihiLCBhKSAvIE1hdGgu
UEkgKiAxODAgKyAzNjApICUgMzYwOworICAgIHJldHVybiBbbCwgYywgaF07CisgIH07CisKKyAg
bGFiMnJnYiA9IGZ1bmN0aW9uKGwsIGEsIGIpIHsKKworICAgIC8qCisgICAgYWRhcHRlZCB0byBt
YXRjaCBkMyBpbXBsZW1lbnRhdGlvbgorICAgICAqLworICAgIHZhciBnLCByLCByZWYsIHJlZjEs
IHgsIHksIHo7CisgICAgaWYgKGwgIT09IHZvaWQgMCAmJiBsLmxlbmd0aCA9PT0gMykgeworICAg
ICAgcmVmID0gbCwgbCA9IHJlZlswXSwgYSA9IHJlZlsxXSwgYiA9IHJlZlsyXTsKKyAgICB9Cisg
ICAgaWYgKGwgIT09IHZvaWQgMCAmJiBsLmxlbmd0aCA9PT0gMykgeworICAgICAgcmVmMSA9IGws
IGwgPSByZWYxWzBdLCBhID0gcmVmMVsxXSwgYiA9IHJlZjFbMl07CisgICAgfQorICAgIHkgPSAo
bCArIDE2KSAvIDExNjsKKyAgICB4ID0geSArIGEgLyA1MDA7CisgICAgeiA9IHkgLSBiIC8gMjAw
OworICAgIHggPSBsYWJfeHl6KHgpICogWDsKKyAgICB5ID0gbGFiX3h5eih5KSAqIFk7CisgICAg
eiA9IGxhYl94eXooeikgKiBaOworICAgIHIgPSB4eXpfcmdiKDMuMjQwNDU0MiAqIHggLSAxLjUz
NzEzODUgKiB5IC0gMC40OTg1MzE0ICogeik7CisgICAgZyA9IHh5el9yZ2IoLTAuOTY5MjY2MCAq
IHggKyAxLjg3NjAxMDggKiB5ICsgMC4wNDE1NTYwICogeik7CisgICAgYiA9IHh5el9yZ2IoMC4w
NTU2NDM0ICogeCAtIDAuMjA0MDI1OSAqIHkgKyAxLjA1NzIyNTIgKiB6KTsKKyAgICByZXR1cm4g
W2xpbWl0KHIsIDAsIDI1NSksIGxpbWl0KGcsIDAsIDI1NSksIGxpbWl0KGIsIDAsIDI1NSksIDFd
OworICB9OworCisgIGxhYl94eXogPSBmdW5jdGlvbih4KSB7CisgICAgaWYgKHggPiAwLjIwNjg5
MzAzNCkgeworICAgICAgcmV0dXJuIHggKiB4ICogeDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0
dXJuICh4IC0gNCAvIDI5KSAvIDcuNzg3MDM3OworICAgIH0KKyAgfTsKKworICB4eXpfcmdiID0g
ZnVuY3Rpb24ocikgeworICAgIHJldHVybiByb3VuZCgyNTUgKiAociA8PSAwLjAwMzA0ID8gMTIu
OTIgKiByIDogMS4wNTUgKiBwb3cociwgMSAvIDIuNCkgLSAwLjA1NSkpOworICB9OworCisgIGxj
aDJsYWIgPSBmdW5jdGlvbigpIHsKKworICAgIC8qCisgICAgQ29udmVydCBmcm9tIGEgcXVhbGl0
YXRpdmUgcGFyYW1ldGVyIGggYW5kIGEgcXVhbnRpdGF0aXZlIHBhcmFtZXRlciBsIHRvIGEgMjQt
Yml0IHBpeGVsLiBUaGVzZSBmb3JtdWxhcyB3ZXJlIGludmVudGVkIGJ5IERhdmlkIERhbHJ5bXBs
ZSB0byBvYnRhaW4gbWF4aW11bSBjb250cmFzdCB3aXRob3V0IGdvaW5nIG91dCBvZiBnYW11dCBp
ZiB0aGUgcGFyYW1ldGVycyBhcmUgaW4gdGhlIHJhbmdlIDAtMS4KKyAgICBBIHNhdHVyYXRpb24g
bXVsdGlwbGllciB3YXMgYWRkZWQgYnkgR3JlZ29yIEFpc2NoCisgICAgICovCisgICAgdmFyIGMs
IGgsIGwsIHJlZjsKKyAgICByZWYgPSB1bnBhY2soYXJndW1lbnRzKSwgbCA9IHJlZlswXSwgYyA9
IHJlZlsxXSwgaCA9IHJlZlsyXTsKKyAgICBoID0gaCAqIE1hdGguUEkgLyAxODA7CisgICAgcmV0
dXJuIFtsLCBNYXRoLmNvcyhoKSAqIGMsIE1hdGguc2luKGgpICogY107CisgIH07CisKKyAgbGNo
MnJnYiA9IGZ1bmN0aW9uKGwsIGMsIGgpIHsKKyAgICB2YXIgTCwgYSwgYiwgZywgciwgcmVmLCBy
ZWYxOworICAgIHJlZiA9IGxjaDJsYWIobCwgYywgaCksIEwgPSByZWZbMF0sIGEgPSByZWZbMV0s
IGIgPSByZWZbMl07CisgICAgcmVmMSA9IGxhYjJyZ2IoTCwgYSwgYiksIHIgPSByZWYxWzBdLCBn
ID0gcmVmMVsxXSwgYiA9IHJlZjFbMl07CisgICAgcmV0dXJuIFtsaW1pdChyLCAwLCAyNTUpLCBs
aW1pdChnLCAwLCAyNTUpLCBsaW1pdChiLCAwLCAyNTUpXTsKKyAgfTsKKworICBsdW1pbmFuY2Ug
PSBmdW5jdGlvbihyLCBnLCBiKSB7CisgICAgdmFyIHJlZjsKKyAgICByZWYgPSB1bnBhY2soYXJn
dW1lbnRzKSwgciA9IHJlZlswXSwgZyA9IHJlZlsxXSwgYiA9IHJlZlsyXTsKKyAgICByID0gbHVt
aW5hbmNlX3gocik7CisgICAgZyA9IGx1bWluYW5jZV94KGcpOworICAgIGIgPSBsdW1pbmFuY2Vf
eChiKTsKKyAgICByZXR1cm4gMC4yMTI2ICogciArIDAuNzE1MiAqIGcgKyAwLjA3MjIgKiBiOwor
ICB9OworCisgIGx1bWluYW5jZV94ID0gZnVuY3Rpb24oeCkgeworICAgIHggLz0gMjU1OworICAg
IGlmICh4IDw9IDAuMDM5MjgpIHsKKyAgICAgIHJldHVybiB4IC8gMTIuOTI7CisgICAgfSBlbHNl
IHsKKyAgICAgIHJldHVybiBNYXRoLnBvdygoeCArIDAuMDU1KSAvIDEuMDU1LCAyLjQpOworICAg
IH0KKyAgfTsKKworICBudW0ycmdiID0gZnVuY3Rpb24obnVtKSB7CisgICAgdmFyIGIsIGcsIHI7
CisgICAgaWYgKHR5cGUobnVtKSA9PT0gIm51bWJlciIgJiYgbnVtID49IDAgJiYgbnVtIDw9IDB4
RkZGRkZGKSB7CisgICAgICByID0gbnVtID4+IDE2OworICAgICAgZyA9IChudW0gPj4gOCkgJiAw
eEZGOworICAgICAgYiA9IG51bSAmIDB4RkY7CisgICAgICByZXR1cm4gW3IsIGcsIGIsIDFdOwor
ICAgIH0KKyAgICB0aHJvdyAidW5rbm93biBudW0gY29sb3I6ICIgKyBudW07CisgIH07CisKKyAg
cmdiMmhleCA9IGZ1bmN0aW9uKGNoYW5uZWxzLCBtb2RlKSB7CisgICAgdmFyIGEsIGIsIGcsIGh4
YSwgciwgc3RyLCB1OworICAgIGlmIChtb2RlID09IG51bGwpIHsKKyAgICAgIG1vZGUgPSAncmdi
JzsKKyAgICB9CisgICAgciA9IGNoYW5uZWxzWzBdLCBnID0gY2hhbm5lbHNbMV0sIGIgPSBjaGFu
bmVsc1syXSwgYSA9IGNoYW5uZWxzWzNdOworICAgIHUgPSByIDw8IDE2IHwgZyA8PCA4IHwgYjsK
KyAgICBzdHIgPSAiMDAwMDAwIiArIHUudG9TdHJpbmcoMTYpOworICAgIHN0ciA9IHN0ci5zdWJz
dHIoc3RyLmxlbmd0aCAtIDYpOworICAgIGh4YSA9ICcwJyArIHJvdW5kKGEgKiAyNTUpLnRvU3Ry
aW5nKDE2KTsKKyAgICBoeGEgPSBoeGEuc3Vic3RyKGh4YS5sZW5ndGggLSAyKTsKKyAgICByZXR1
cm4gIiMiICsgKGZ1bmN0aW9uKCkgeworICAgICAgc3dpdGNoIChtb2RlLnRvTG93ZXJDYXNlKCkp
IHsKKyAgICAgICAgY2FzZSAncmdiYSc6CisgICAgICAgICAgcmV0dXJuIHN0ciArIGh4YTsKKyAg
ICAgICAgY2FzZSAnYXJnYic6CisgICAgICAgICAgcmV0dXJuIGh4YSArIHN0cjsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gc3RyOworICAgICAgfQorICAgIH0pKCk7CisgIH07
CisKKyAgcmdiMmhzaSA9IGZ1bmN0aW9uKCkgeworCisgICAgLyoKKyAgICBib3Jyb3dlZCBmcm9t
IGhlcmU6CisgICAgaHR0cDovL2h1bW1lci5zdGFuZm9yZC5lZHUvbXVzZWluZm8vZG9jL2V4YW1w
bGVzL2h1bWRydW0va2V5c2NhcGUyL3JnYjJoc2kuY3BwCisgICAgICovCisgICAgdmFyIFRXT1BJ
LCBiLCBnLCBoLCBpLCBtaW4sIHIsIHJlZiwgczsKKyAgICByZWYgPSB1bnBhY2soYXJndW1lbnRz
KSwgciA9IHJlZlswXSwgZyA9IHJlZlsxXSwgYiA9IHJlZlsyXTsKKyAgICBUV09QSSA9IE1hdGgu
UEkgKiAyOworICAgIHIgLz0gMjU1OworICAgIGcgLz0gMjU1OworICAgIGIgLz0gMjU1OworICAg
IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpOworICAgIGkgPSAociArIGcgKyBiKSAvIDM7CisgICAg
cyA9IDEgLSBtaW4gLyBpOworICAgIGlmIChzID09PSAwKSB7CisgICAgICBoID0gMDsKKyAgICB9
IGVsc2UgeworICAgICAgaCA9ICgociAtIGcpICsgKHIgLSBiKSkgLyAyOworICAgICAgaCAvPSBN
YXRoLnNxcnQoKHIgLSBnKSAqIChyIC0gZykgKyAociAtIGIpICogKGcgLSBiKSk7CisgICAgICBo
ID0gTWF0aC5hY29zKGgpOworICAgICAgaWYgKGIgPiBnKSB7CisgICAgICAgIGggPSBUV09QSSAt
IGg7CisgICAgICB9CisgICAgICBoIC89IFRXT1BJOworICAgIH0KKyAgICByZXR1cm4gW2ggKiAz
NjAsIHMsIGldOworICB9OworCisgIHJnYjJoc2wgPSBmdW5jdGlvbihyLCBnLCBiKSB7CisgICAg
dmFyIGgsIGwsIG1heCwgbWluLCByZWYsIHM7CisgICAgaWYgKHIgIT09IHZvaWQgMCAmJiByLmxl
bmd0aCA+PSAzKSB7CisgICAgICByZWYgPSByLCByID0gcmVmWzBdLCBnID0gcmVmWzFdLCBiID0g
cmVmWzJdOworICAgIH0KKyAgICByIC89IDI1NTsKKyAgICBnIC89IDI1NTsKKyAgICBiIC89IDI1
NTsKKyAgICBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKKyAgICBtYXggPSBNYXRoLm1heChyLCBn
LCBiKTsKKyAgICBsID0gKG1heCArIG1pbikgLyAyOworICAgIGlmIChtYXggPT09IG1pbikgewor
ICAgICAgcyA9IDA7CisgICAgICBoID0gTnVtYmVyLk5hTjsKKyAgICB9IGVsc2UgeworICAgICAg
cyA9IGwgPCAwLjUgPyAobWF4IC0gbWluKSAvIChtYXggKyBtaW4pIDogKG1heCAtIG1pbikgLyAo
MiAtIG1heCAtIG1pbik7CisgICAgfQorICAgIGlmIChyID09PSBtYXgpIHsKKyAgICAgIGggPSAo
ZyAtIGIpIC8gKG1heCAtIG1pbik7CisgICAgfSBlbHNlIGlmIChnID09PSBtYXgpIHsKKyAgICAg
IGggPSAyICsgKGIgLSByKSAvIChtYXggLSBtaW4pOworICAgIH0gZWxzZSBpZiAoYiA9PT0gbWF4
KSB7CisgICAgICBoID0gNCArIChyIC0gZykgLyAobWF4IC0gbWluKTsKKyAgICB9CisgICAgaCAq
PSA2MDsKKyAgICBpZiAoaCA8IDApIHsKKyAgICAgIGggKz0gMzYwOworICAgIH0KKyAgICByZXR1
cm4gW2gsIHMsIGxdOworICB9OworCisgIHJnYjJoc3YgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
YiwgZGVsdGEsIGcsIGgsIG1heCwgbWluLCByLCByZWYsIHMsIHY7CisgICAgcmVmID0gdW5wYWNr
KGFyZ3VtZW50cyksIHIgPSByZWZbMF0sIGcgPSByZWZbMV0sIGIgPSByZWZbMl07CisgICAgbWlu
ID0gTWF0aC5taW4ociwgZywgYik7CisgICAgbWF4ID0gTWF0aC5tYXgociwgZywgYik7CisgICAg
ZGVsdGEgPSBtYXggLSBtaW47CisgICAgdiA9IG1heCAvIDI1NS4wOworICAgIGlmIChtYXggPT09
IDApIHsKKyAgICAgIGggPSBOdW1iZXIuTmFOOworICAgICAgcyA9IDA7CisgICAgfSBlbHNlIHsK
KyAgICAgIHMgPSBkZWx0YSAvIG1heDsKKyAgICAgIGlmIChyID09PSBtYXgpIHsKKyAgICAgICAg
aCA9IChnIC0gYikgLyBkZWx0YTsKKyAgICAgIH0KKyAgICAgIGlmIChnID09PSBtYXgpIHsKKyAg
ICAgICAgaCA9IDIgKyAoYiAtIHIpIC8gZGVsdGE7CisgICAgICB9CisgICAgICBpZiAoYiA9PT0g
bWF4KSB7CisgICAgICAgIGggPSA0ICsgKHIgLSBnKSAvIGRlbHRhOworICAgICAgfQorICAgICAg
aCAqPSA2MDsKKyAgICAgIGlmIChoIDwgMCkgeworICAgICAgICBoICs9IDM2MDsKKyAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIFtoLCBzLCB2XTsKKyAgfTsKKworICByZ2IybGFiID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIGIsIGcsIHIsIHJlZiwgcmVmMSwgeCwgeSwgejsKKyAgICByZWYgPSB1
bnBhY2soYXJndW1lbnRzKSwgciA9IHJlZlswXSwgZyA9IHJlZlsxXSwgYiA9IHJlZlsyXTsKKyAg
ICByZWYxID0gcmdiMnh5eihyLCBnLCBiKSwgeCA9IHJlZjFbMF0sIHkgPSByZWYxWzFdLCB6ID0g
cmVmMVsyXTsKKyAgICByZXR1cm4gWzExNiAqIHkgLSAxNiwgNTAwICogKHggLSB5KSwgMjAwICog
KHkgLSB6KV07CisgIH07CisKKyAgcmdiX3h5eiA9IGZ1bmN0aW9uKHIpIHsKKyAgICBpZiAoKHIg
Lz0gMjU1KSA8PSAwLjA0MDQ1KSB7CisgICAgICByZXR1cm4gciAvIDEyLjkyOworICAgIH0gZWxz
ZSB7CisgICAgICByZXR1cm4gTWF0aC5wb3coKHIgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTsKKyAg
ICB9CisgIH07CisKKyAgeHl6X2xhYiA9IGZ1bmN0aW9uKHgpIHsKKyAgICBpZiAoeCA+IDAuMDA4
ODU2KSB7CisgICAgICByZXR1cm4gTWF0aC5wb3coeCwgMSAvIDMpOworICAgIH0gZWxzZSB7Cisg
ICAgICByZXR1cm4gNy43ODcwMzcgKiB4ICsgNCAvIDI5OworICAgIH0KKyAgfTsKKworICByZ2Iy
eHl6ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGIsIGcsIHIsIHJlZiwgeCwgeSwgejsKKyAgICBy
ZWYgPSB1bnBhY2soYXJndW1lbnRzKSwgciA9IHJlZlswXSwgZyA9IHJlZlsxXSwgYiA9IHJlZlsy
XTsKKyAgICByID0gcmdiX3h5eihyKTsKKyAgICBnID0gcmdiX3h5eihnKTsKKyAgICBiID0gcmdi
X3h5eihiKTsKKyAgICB4ID0geHl6X2xhYigoMC40MTI0NTY0ICogciArIDAuMzU3NTc2MSAqIGcg
KyAwLjE4MDQzNzUgKiBiKSAvIFgpOworICAgIHkgPSB4eXpfbGFiKCgwLjIxMjY3MjkgKiByICsg
MC43MTUxNTIyICogZyArIDAuMDcyMTc1MCAqIGIpIC8gWSk7CisgICAgeiA9IHh5el9sYWIoKDAu
MDE5MzMzOSAqIHIgKyAwLjExOTE5MjAgKiBnICsgMC45NTAzMDQxICogYikgLyBaKTsKKyAgICBy
ZXR1cm4gW3gsIHksIHpdOworICB9OworCisgIHJnYjJsY2ggPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgYSwgYiwgZywgbCwgciwgcmVmLCByZWYxOworICAgIHJlZiA9IHVucGFjayhhcmd1bWVudHMp
LCByID0gcmVmWzBdLCBnID0gcmVmWzFdLCBiID0gcmVmWzJdOworICAgIHJlZjEgPSByZ2IybGFi
KHIsIGcsIGIpLCBsID0gcmVmMVswXSwgYSA9IHJlZjFbMV0sIGIgPSByZWYxWzJdOworICAgIHJl
dHVybiBsYWIybGNoKGwsIGEsIGIpOworICB9OworCisgIHJnYjJudW0gPSBmdW5jdGlvbigpIHsK
KyAgICB2YXIgYiwgZywgciwgcmVmOworICAgIHJlZiA9IHVucGFjayhhcmd1bWVudHMpLCByID0g
cmVmWzBdLCBnID0gcmVmWzFdLCBiID0gcmVmWzJdOworICAgIHJldHVybiAociA8PCAxNikgKyAo
ZyA8PCA4KSArIGI7CisgIH07CisKKyAgdGVtcDJyZ2IgPSBmdW5jdGlvbihrZWx2aW4pIHsKKyAg
ICB2YXIgYiwgZywgciwgdGVtcDsKKyAgICB0ZW1wID0ga2VsdmluIC8gMTAwOworICAgIGlmICh0
ZW1wIDwgNjYpIHsKKyAgICAgIHIgPSAyNTU7CisgICAgICBnID0gLTE1NS4yNTQ4NTU2MjcwOTE3
OSAtIDAuNDQ1OTY5NTA0Njk1NzkxMzMgKiAoZyA9IHRlbXAgLSAyKSArIDEwNC40OTIxNjE5OTM5
Mzg4OCAqIGxvZyhnKTsKKyAgICAgIGIgPSB0ZW1wIDwgMjAgPyAwIDogLTI1NC43NjkzNTE4NDEy
MDkwMiArIDAuODI3NDA5NjA2NDAwNzM5NSAqIChiID0gdGVtcCAtIDEwKSArIDExNS42Nzk5NDQw
MTA2NjE0NyAqIGxvZyhiKTsKKyAgICB9IGVsc2UgeworICAgICAgciA9IDM1MS45NzY5MDU2Njgw
NTY5MyArIDAuMTE0MjA2NDUzNzg0MTY1ICogKHIgPSB0ZW1wIC0gNTUpIC0gNDAuMjUzNjYzMDkz
MzIxMjcgKiBsb2cocik7CisgICAgICBnID0gMzI1LjQ0OTQxMjU3MTE5NzQgKyAwLjA3OTQzNDU2
NTM2NjYyMzQyICogKGcgPSB0ZW1wIC0gNTApIC0gMjguMDg1Mjk2MzUwNzk1NyAqIGxvZyhnKTsK
KyAgICAgIGIgPSAyNTU7CisgICAgfQorICAgIHJldHVybiBjbGlwX3JnYihbciwgZywgYl0pOwor
ICB9OworCisgIHJnYjJ0ZW1wID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGIsIGVwcywgZywgbWF4
VGVtcCwgbWluVGVtcCwgciwgcmVmLCByZ2IsIHRlbXA7CisgICAgcmVmID0gdW5wYWNrKGFyZ3Vt
ZW50cyksIHIgPSByZWZbMF0sIGcgPSByZWZbMV0sIGIgPSByZWZbMl07CisgICAgbWluVGVtcCA9
IDEwMDA7CisgICAgbWF4VGVtcCA9IDQwMDAwOworICAgIGVwcyA9IDAuNDsKKyAgICB3aGlsZSAo
bWF4VGVtcCAtIG1pblRlbXAgPiBlcHMpIHsKKyAgICAgIHRlbXAgPSAobWF4VGVtcCArIG1pblRl
bXApICogMC41OworICAgICAgcmdiID0gdGVtcDJyZ2IodGVtcCk7CisgICAgICBpZiAoKHJnYlsy
XSAvIHJnYlswXSkgPj0gKGIgLyByKSkgeworICAgICAgICBtYXhUZW1wID0gdGVtcDsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIG1pblRlbXAgPSB0ZW1wOworICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gcm91bmQodGVtcCk7CisgIH07CisKKworICAvKgorICAgICAgY2hyb21hLmpzCisgIAor
ICAgICAgQ29weXJpZ2h0IChjKSAyMDExLTIwMTMsIEdyZWdvciBBaXNjaAorICAgICAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAgCisgICAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
bWV0OgorICAKKyAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgICAgICAgIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAKKyAgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLAorICAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICAgIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICAKKyAgICAgICog
VGhlIG5hbWUgR3JlZ29yIEFpc2NoIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMKKyAgICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgIAorICAgICAgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiCisgICAgICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgICAgICBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAgICAgIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdSRUdPUiBBSVNDSCBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICAgICAgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsCisgICAgICBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICAgICAgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICAgICAgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAgICAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwK
KyAgICAgIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgIAorICAgICAgQHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2drYS9jaHJvbWEuanMKKyAg
ICovCisKKyAgY2hyb21hLnNjYWxlID0gZnVuY3Rpb24oY29sb3JzLCBwb3NpdGlvbnMpIHsKKyAg
ICB2YXIgX2NvbG9yQ2FjaGUsIF9jb2xvcnMsIF9jb3JyZWN0TGlnaHRuZXNzLCBfZG9tYWluLCBf
Zml4ZWQsIF9tYXgsIF9taW4sIF9tb2RlLCBfbmFjb2wsIF9udW1DbGFzc2VzLCBfb3V0LCBfcG9z
LCBfc3ByZWFkLCBjbGFzc2lmeVZhbHVlLCBmLCBnZXRDbGFzcywgZ2V0Q29sb3IsIHJlc2V0Q2Fj
aGUsIHNldENvbG9ycywgc2V0RG9tYWluLCB0bWFwOworICAgIF9tb2RlID0gJ3JnYic7CisgICAg
X25hY29sID0gY2hyb21hKCcjY2NjJyk7CisgICAgX3NwcmVhZCA9IDA7CisgICAgX2ZpeGVkID0g
ZmFsc2U7CisgICAgX2RvbWFpbiA9IFswLCAxXTsKKyAgICBfY29sb3JzID0gW107CisgICAgX291
dCA9IGZhbHNlOworICAgIF9wb3MgPSBbXTsKKyAgICBfbWluID0gMDsKKyAgICBfbWF4ID0gMTsK
KyAgICBfY29ycmVjdExpZ2h0bmVzcyA9IGZhbHNlOworICAgIF9udW1DbGFzc2VzID0gMDsKKyAg
ICBfY29sb3JDYWNoZSA9IHt9OworICAgIHNldENvbG9ycyA9IGZ1bmN0aW9uKGNvbG9ycywgcG9z
aXRpb25zKSB7CisgICAgICB2YXIgYywgY29sLCBvLCByZWYsIHJlZjEsIHJlZjIsIHc7CisgICAg
ICBpZiAoY29sb3JzID09IG51bGwpIHsKKyAgICAgICAgY29sb3JzID0gWycjZGRkJywgJyMyMjIn
XTsKKyAgICAgIH0KKyAgICAgIGlmICgoY29sb3JzICE9IG51bGwpICYmIHR5cGUoY29sb3JzKSA9
PT0gJ3N0cmluZycgJiYgKCgocmVmID0gY2hyb21hLmJyZXdlcikgIT0gbnVsbCA/IHJlZltjb2xv
cnNdIDogdm9pZCAwKSAhPSBudWxsKSkgeworICAgICAgICBjb2xvcnMgPSBjaHJvbWEuYnJld2Vy
W2NvbG9yc107CisgICAgICB9CisgICAgICBpZiAodHlwZShjb2xvcnMpID09PSAnYXJyYXknKSB7
CisgICAgICAgIGNvbG9ycyA9IGNvbG9ycy5zbGljZSgwKTsKKyAgICAgICAgZm9yIChjID0gbyA9
IDAsIHJlZjEgPSBjb2xvcnMubGVuZ3RoIC0gMTsgMCA8PSByZWYxID8gbyA8PSByZWYxIDogbyA+
PSByZWYxOyBjID0gMCA8PSByZWYxID8gKytvIDogLS1vKSB7CisgICAgICAgICAgY29sID0gY29s
b3JzW2NdOworICAgICAgICAgIGlmICh0eXBlKGNvbCkgPT09ICJzdHJpbmciKSB7CisgICAgICAg
ICAgICBjb2xvcnNbY10gPSBjaHJvbWEoY29sKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHBvc2l0aW9ucyAhPSBudWxsKSB7CisgICAgICAgICAgX3BvcyA9IHBvc2l0aW9u
czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBfcG9zID0gW107CisgICAgICAgICAgZm9y
IChjID0gdyA9IDAsIHJlZjIgPSBjb2xvcnMubGVuZ3RoIC0gMTsgMCA8PSByZWYyID8gdyA8PSBy
ZWYyIDogdyA+PSByZWYyOyBjID0gMCA8PSByZWYyID8gKyt3IDogLS13KSB7CisgICAgICAgICAg
ICBfcG9zLnB1c2goYyAvIChjb2xvcnMubGVuZ3RoIC0gMSkpOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgcmVzZXRDYWNoZSgpOworICAgICAgcmV0dXJuIF9jb2xvcnMg
PSBjb2xvcnM7CisgICAgfTsKKyAgICBzZXREb21haW4gPSBmdW5jdGlvbihkb21haW4pIHsKKyAg
ICAgIGlmIChkb21haW4gPT0gbnVsbCkgeworICAgICAgICBkb21haW4gPSBbXTsKKyAgICAgIH0K
KworICAgICAgLyoKKyAgICAgICAqIHVzZSB0aGlzIGlmIHlvdSB3YW50IHRvIGRpc3BsYXkgYSBs
aW1pdGVkIG51bWJlciBvZiBkYXRhIGNsYXNzZXMKKyAgICAgICAqIHBvc3NpYmxlIG1ldGhvZHMg
YXJlICJlcXVhbGludGVydmFsIiwgInF1YW50aWxlcyIsICJjdXN0b20iCisgICAgICAgKi8KKyAg
ICAgIF9kb21haW4gPSBkb21haW47CisgICAgICBfbWluID0gZG9tYWluWzBdOworICAgICAgX21h
eCA9IGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV07CisgICAgICByZXNldENhY2hlKCk7CisgICAg
ICBpZiAoZG9tYWluLmxlbmd0aCA9PT0gMikgeworICAgICAgICByZXR1cm4gX251bUNsYXNzZXMg
PSAwOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIF9udW1DbGFzc2VzID0gZG9tYWlu
Lmxlbmd0aCAtIDE7CisgICAgICB9CisgICAgfTsKKyAgICBnZXRDbGFzcyA9IGZ1bmN0aW9uKHZh
bHVlKSB7CisgICAgICB2YXIgaSwgbjsKKyAgICAgIGlmIChfZG9tYWluICE9IG51bGwpIHsKKyAg
ICAgICAgbiA9IF9kb21haW4ubGVuZ3RoIC0gMTsKKyAgICAgICAgaSA9IDA7CisgICAgICAgIHdo
aWxlIChpIDwgbiAmJiB2YWx1ZSA+PSBfZG9tYWluW2ldKSB7CisgICAgICAgICAgaSsrOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBpIC0gMTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAwOwor
ICAgIH07CisgICAgdG1hcCA9IGZ1bmN0aW9uKHQpIHsKKyAgICAgIHJldHVybiB0OworICAgIH07
CisgICAgY2xhc3NpZnlWYWx1ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICB2YXIgaSwgbWF4
YywgbWluYywgbiwgdmFsOworICAgICAgdmFsID0gdmFsdWU7CisgICAgICBpZiAoX2RvbWFpbi5s
ZW5ndGggPiAyKSB7CisgICAgICAgIG4gPSBfZG9tYWluLmxlbmd0aCAtIDE7CisgICAgICAgIGkg
PSBnZXRDbGFzcyh2YWx1ZSk7CisgICAgICAgIG1pbmMgPSBfZG9tYWluWzBdICsgKF9kb21haW5b
MV0gLSBfZG9tYWluWzBdKSAqICgwICsgX3NwcmVhZCAqIDAuNSk7CisgICAgICAgIG1heGMgPSBf
ZG9tYWluW24gLSAxXSArIChfZG9tYWluW25dIC0gX2RvbWFpbltuIC0gMV0pICogKDEgLSBfc3By
ZWFkICogMC41KTsKKyAgICAgICAgdmFsID0gX21pbiArICgoX2RvbWFpbltpXSArIChfZG9tYWlu
W2kgKyAxXSAtIF9kb21haW5baV0pICogMC41IC0gbWluYykgLyAobWF4YyAtIG1pbmMpKSAqIChf
bWF4IC0gX21pbik7CisgICAgICB9CisgICAgICByZXR1cm4gdmFsOworICAgIH07CisgICAgZ2V0
Q29sb3IgPSBmdW5jdGlvbih2YWwsIGJ5cGFzc01hcCkgeworICAgICAgdmFyIGMsIGNvbCwgZjAs
IGksIGssIG8sIHAsIHJlZiwgdDsKKyAgICAgIGlmIChieXBhc3NNYXAgPT0gbnVsbCkgeworICAg
ICAgICBieXBhc3NNYXAgPSBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGlmIChpc05hTih2YWwpKSB7
CisgICAgICAgIHJldHVybiBfbmFjb2w7CisgICAgICB9CisgICAgICBpZiAoIWJ5cGFzc01hcCkg
eworICAgICAgICBpZiAoX2RvbWFpbi5sZW5ndGggPiAyKSB7CisgICAgICAgICAgYyA9IGdldENs
YXNzKHZhbCk7CisgICAgICAgICAgdCA9IGMgLyAoX251bUNsYXNzZXMgLSAxKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICB0ID0gZjAgPSBfbWluICE9PSBfbWF4ID8gKHZhbCAtIF9taW4p
IC8gKF9tYXggLSBfbWluKSA6IDA7CisgICAgICAgICAgdCA9IGYwID0gKHZhbCAtIF9taW4pIC8g
KF9tYXggLSBfbWluKTsKKyAgICAgICAgICB0ID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdCkp
OworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICB0ID0gdmFsOworICAgICAgfQor
ICAgICAgaWYgKCFieXBhc3NNYXApIHsKKyAgICAgICAgdCA9IHRtYXAodCk7CisgICAgICB9Cisg
ICAgICBrID0gTWF0aC5mbG9vcih0ICogMTAwMDApOworICAgICAgaWYgKF9jb2xvckNhY2hlW2td
KSB7CisgICAgICAgIGNvbCA9IF9jb2xvckNhY2hlW2tdOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKHR5cGUoX2NvbG9ycykgPT09ICdhcnJheScpIHsKKyAgICAgICAgICBmb3IgKGkgPSBv
ID0gMCwgcmVmID0gX3Bvcy5sZW5ndGggLSAxOyAwIDw9IHJlZiA/IG8gPD0gcmVmIDogbyA+PSBy
ZWY7IGkgPSAwIDw9IHJlZiA/ICsrbyA6IC0tbykgeworICAgICAgICAgICAgcCA9IF9wb3NbaV07
CisgICAgICAgICAgICBpZiAodCA8PSBwKSB7CisgICAgICAgICAgICAgIGNvbCA9IF9jb2xvcnNb
aV07CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHQgPj0gcCAmJiBpID09PSBfcG9zLmxlbmd0aCAtIDEpIHsKKyAgICAgICAgICAgICAgY29sID0g
X2NvbG9yc1tpXTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAodCA+IHAgJiYgdCA8IF9wb3NbaSArIDFdKSB7CisgICAgICAgICAgICAgIHQgPSAo
dCAtIHApIC8gKF9wb3NbaSArIDFdIC0gcCk7CisgICAgICAgICAgICAgIGNvbCA9IGNocm9tYS5p
bnRlcnBvbGF0ZShfY29sb3JzW2ldLCBfY29sb3JzW2kgKyAxXSwgdCwgX21vZGUpOworICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSBpZiAodHlwZShfY29sb3JzKSA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgIGNvbCA9IF9j
b2xvcnModCk7CisgICAgICAgIH0KKyAgICAgICAgX2NvbG9yQ2FjaGVba10gPSBjb2w7CisgICAg
ICB9CisgICAgICByZXR1cm4gY29sOworICAgIH07CisgICAgcmVzZXRDYWNoZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgcmV0dXJuIF9jb2xvckNhY2hlID0ge307CisgICAgfTsKKyAgICBzZXRDb2xv
cnMoY29sb3JzLCBwb3NpdGlvbnMpOworICAgIGYgPSBmdW5jdGlvbih2KSB7CisgICAgICB2YXIg
YzsKKyAgICAgIGMgPSBnZXRDb2xvcih2KTsKKyAgICAgIGlmIChfb3V0ICYmIGNbX291dF0pIHsK
KyAgICAgICAgcmV0dXJuIGNbX291dF0oKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVy
biBjOworICAgICAgfQorICAgIH07CisgICAgZi5kb21haW4gPSBmdW5jdGlvbihkb21haW4sIGNs
YXNzZXMsIG1vZGUsIGtleSkgeworICAgICAgdmFyIGQ7CisgICAgICBpZiAobW9kZSA9PSBudWxs
KSB7CisgICAgICAgIG1vZGUgPSAnZSc7CisgICAgICB9CisgICAgICBpZiAoIWFyZ3VtZW50cy5s
ZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIF9kb21haW47CisgICAgICB9CisgICAgICBpZiAoY2xh
c3NlcyAhPSBudWxsKSB7CisgICAgICAgIGQgPSBjaHJvbWEuYW5hbHl6ZShkb21haW4sIGtleSk7
CisgICAgICAgIGlmIChjbGFzc2VzID09PSAwKSB7CisgICAgICAgICAgZG9tYWluID0gW2QubWlu
LCBkLm1heF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZG9tYWluID0gY2hyb21hLmxp
bWl0cyhkLCBtb2RlLCBjbGFzc2VzKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgc2V0RG9t
YWluKGRvbWFpbik7CisgICAgICByZXR1cm4gZjsKKyAgICB9OworICAgIGYubW9kZSA9IGZ1bmN0
aW9uKF9tKSB7CisgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJu
IF9tb2RlOworICAgICAgfQorICAgICAgX21vZGUgPSBfbTsKKyAgICAgIHJlc2V0Q2FjaGUoKTsK
KyAgICAgIHJldHVybiBmOworICAgIH07CisgICAgZi5yYW5nZSA9IGZ1bmN0aW9uKGNvbG9ycywg
X3BvcykgeworICAgICAgc2V0Q29sb3JzKGNvbG9ycywgX3Bvcyk7CisgICAgICByZXR1cm4gZjsK
KyAgICB9OworICAgIGYub3V0ID0gZnVuY3Rpb24oX28pIHsKKyAgICAgIF9vdXQgPSBfbzsKKyAg
ICAgIHJldHVybiBmOworICAgIH07CisgICAgZi5zcHJlYWQgPSBmdW5jdGlvbih2YWwpIHsKKyAg
ICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICByZXR1cm4gX3NwcmVhZDsKKyAg
ICAgIH0KKyAgICAgIF9zcHJlYWQgPSB2YWw7CisgICAgICByZXR1cm4gZjsKKyAgICB9OworICAg
IGYuY29ycmVjdExpZ2h0bmVzcyA9IGZ1bmN0aW9uKHYpIHsKKyAgICAgIGlmICghYXJndW1lbnRz
Lmxlbmd0aCkgeworICAgICAgICByZXR1cm4gX2NvcnJlY3RMaWdodG5lc3M7CisgICAgICB9Cisg
ICAgICBfY29ycmVjdExpZ2h0bmVzcyA9IHY7CisgICAgICByZXNldENhY2hlKCk7CisgICAgICBp
ZiAoX2NvcnJlY3RMaWdodG5lc3MpIHsKKyAgICAgICAgdG1hcCA9IGZ1bmN0aW9uKHQpIHsKKyAg
ICAgICAgICB2YXIgTDAsIEwxLCBMX2FjdHVhbCwgTF9kaWZmLCBMX2lkZWFsLCBtYXhfaXRlciwg
cG9sLCB0MCwgdDE7CisgICAgICAgICAgTDAgPSBnZXRDb2xvcigwLCB0cnVlKS5sYWIoKVswXTsK
KyAgICAgICAgICBMMSA9IGdldENvbG9yKDEsIHRydWUpLmxhYigpWzBdOworICAgICAgICAgIHBv
bCA9IEwwID4gTDE7CisgICAgICAgICAgTF9hY3R1YWwgPSBnZXRDb2xvcih0LCB0cnVlKS5sYWIo
KVswXTsKKyAgICAgICAgICBMX2lkZWFsID0gTDAgKyAoTDEgLSBMMCkgKiB0OworICAgICAgICAg
IExfZGlmZiA9IExfYWN0dWFsIC0gTF9pZGVhbDsKKyAgICAgICAgICB0MCA9IDA7CisgICAgICAg
ICAgdDEgPSAxOworICAgICAgICAgIG1heF9pdGVyID0gMjA7CisgICAgICAgICAgd2hpbGUgKE1h
dGguYWJzKExfZGlmZikgPiAxZS0yICYmIG1heF9pdGVyLS0gPiAwKSB7CisgICAgICAgICAgICAo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIGlmIChwb2wpIHsKKyAgICAgICAgICAgICAgICBM
X2RpZmYgKj0gLTE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgaWYgKExfZGlmZiA8
IDApIHsKKyAgICAgICAgICAgICAgICB0MCA9IHQ7CisgICAgICAgICAgICAgICAgdCArPSAodDEg
LSB0KSAqIDAuNTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0MSA9
IHQ7CisgICAgICAgICAgICAgICAgdCArPSAodDAgLSB0KSAqIDAuNTsKKyAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICBMX2FjdHVhbCA9IGdldENvbG9yKHQsIHRydWUpLmxhYigpWzBdOwor
ICAgICAgICAgICAgICByZXR1cm4gTF9kaWZmID0gTF9hY3R1YWwgLSBMX2lkZWFsOworICAgICAg
ICAgICAgfSkoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHQ7CisgICAgICAgIH07
CisgICAgICB9IGVsc2UgeworICAgICAgICB0bWFwID0gZnVuY3Rpb24odCkgeworICAgICAgICAg
IHJldHVybiB0OworICAgICAgICB9OworICAgICAgfQorICAgICAgcmV0dXJuIGY7CisgICAgfTsK
KyAgICBmLmNvbG9ycyA9IGZ1bmN0aW9uKG91dCkgeworICAgICAgdmFyIGksIGxlbiwgbywgcmVm
LCBzYW1wbGVzLCB3OworICAgICAgaWYgKG91dCA9PSBudWxsKSB7CisgICAgICAgIG91dCA9ICdo
ZXgnOworICAgICAgfQorICAgICAgY29sb3JzID0gW107CisgICAgICBzYW1wbGVzID0gW107Cisg
ICAgICBpZiAoX2RvbWFpbi5sZW5ndGggPiAyKSB7CisgICAgICAgIGZvciAoaSA9IG8gPSAxLCBy
ZWYgPSBfZG9tYWluLmxlbmd0aDsgMSA8PSByZWYgPyBvIDwgcmVmIDogbyA+IHJlZjsgaSA9IDEg
PD0gcmVmID8gKytvIDogLS1vKSB7CisgICAgICAgICAgc2FtcGxlcy5wdXNoKChfZG9tYWluW2kg
LSAxXSArIF9kb21haW5baV0pICogMC41KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgc2FtcGxlcyA9IF9kb21haW47CisgICAgICB9CisgICAgICBmb3IgKHcgPSAwLCBsZW4g
PSBzYW1wbGVzLmxlbmd0aDsgdyA8IGxlbjsgdysrKSB7CisgICAgICAgIGkgPSBzYW1wbGVzW3dd
OworICAgICAgICBjb2xvcnMucHVzaChmKGkpW291dF0oKSk7CisgICAgICB9CisgICAgICByZXR1
cm4gY29sb3JzOworICAgIH07CisgICAgcmV0dXJuIGY7CisgIH07CisKKyAgaWYgKGNocm9tYS5z
Y2FsZXMgPT0gbnVsbCkgeworICAgIGNocm9tYS5zY2FsZXMgPSB7fTsKKyAgfQorCisgIGNocm9t
YS5zY2FsZXMuY29vbCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBjaHJvbWEuc2NhbGUoW2No
cm9tYS5oc2woMTgwLCAxLCAuOSksIGNocm9tYS5oc2woMjUwLCAuNywgLjQpXSk7CisgIH07CisK
KyAgY2hyb21hLnNjYWxlcy5ob3QgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gY2hyb21hLnNj
YWxlKFsnIzAwMCcsICcjZjAwJywgJyNmZjAnLCAnI2ZmZiddLCBbMCwgLjI1LCAuNzUsIDFdKS5t
b2RlKCdyZ2InKTsKKyAgfTsKKworCisgIC8qCisgICAgICBjaHJvbWEuanMKKyAgCisgICAgICBD
b3B5cmlnaHQgKGMpIDIwMTEtMjAxMywgR3JlZ29yIEFpc2NoCisgICAgICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICAKKyAgICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
IAorICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAgICAgICAgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgIAorICAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAgICAgICAgYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgIAorICAgICAgKiBUaGUgbmFt
ZSBHcmVnb3IgQWlzY2ggbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cworICAgICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAgCisgICAgICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIK
KyAgICAgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAgICAgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICAg
ICAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR1JFR09SIEFJU0NIIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgICAgICBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywKKyAgICAgIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgICAgICBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgICAgICBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORworICAgICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLAorICAgICAg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAgCisg
ICAgICBAc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ2thL2Nocm9tYS5qcworICAgKi8KKwor
ICBjaHJvbWEuYW5hbHl6ZSA9IGZ1bmN0aW9uKGRhdGEsIGtleSwgZmlsdGVyKSB7CisgICAgdmFy
IGFkZCwgaywgbGVuLCBvLCByLCB2YWwsIHZpc2l0OworICAgIHIgPSB7CisgICAgICBtaW46IE51
bWJlci5NQVhfVkFMVUUsCisgICAgICBtYXg6IE51bWJlci5NQVhfVkFMVUUgKiAtMSwKKyAgICAg
IHN1bTogMCwKKyAgICAgIHZhbHVlczogW10sCisgICAgICBjb3VudDogMAorICAgIH07CisgICAg
aWYgKGZpbHRlciA9PSBudWxsKSB7CisgICAgICBmaWx0ZXIgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICB9OworICAgIH0KKyAgICBhZGQgPSBmdW5jdGlvbih2YWwp
IHsKKyAgICAgIGlmICgodmFsICE9IG51bGwpICYmICFpc05hTih2YWwpKSB7CisgICAgICAgIHIu
dmFsdWVzLnB1c2godmFsKTsKKyAgICAgICAgci5zdW0gKz0gdmFsOworICAgICAgICBpZiAodmFs
IDwgci5taW4pIHsKKyAgICAgICAgICByLm1pbiA9IHZhbDsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsID4gci5tYXgpIHsKKyAgICAgICAgICByLm1heCA9IHZhbDsKKyAgICAgICAgfQorICAg
ICAgICByLmNvdW50ICs9IDE7CisgICAgICB9CisgICAgfTsKKyAgICB2aXNpdCA9IGZ1bmN0aW9u
KHZhbCwgaykgeworICAgICAgaWYgKGZpbHRlcih2YWwsIGspKSB7CisgICAgICAgIGlmICgoa2V5
ICE9IG51bGwpICYmIHR5cGUoa2V5KSA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgIHJldHVy
biBhZGQoa2V5KHZhbCkpOworICAgICAgICB9IGVsc2UgaWYgKChrZXkgIT0gbnVsbCkgJiYgdHlw
ZShrZXkpID09PSAnc3RyaW5nJyB8fCB0eXBlKGtleSkgPT09ICdudW1iZXInKSB7CisgICAgICAg
ICAgcmV0dXJuIGFkZCh2YWxba2V5XSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIGFkZCh2YWwpOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgICBpZiAodHlwZShk
YXRhKSA9PT0gJ2FycmF5JykgeworICAgICAgZm9yIChvID0gMCwgbGVuID0gZGF0YS5sZW5ndGg7
IG8gPCBsZW47IG8rKykgeworICAgICAgICB2YWwgPSBkYXRhW29dOworICAgICAgICB2aXNpdCh2
YWwpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBmb3IgKGsgaW4gZGF0YSkgeworICAg
ICAgICB2YWwgPSBkYXRhW2tdOworICAgICAgICB2aXNpdCh2YWwsIGspOworICAgICAgfQorICAg
IH0KKyAgICByLmRvbWFpbiA9IFtyLm1pbiwgci5tYXhdOworICAgIHIubGltaXRzID0gZnVuY3Rp
b24obW9kZSwgbnVtKSB7CisgICAgICByZXR1cm4gY2hyb21hLmxpbWl0cyhyLCBtb2RlLCBudW0p
OworICAgIH07CisgICAgcmV0dXJuIHI7CisgIH07CisKKyAgY2hyb21hLmxpbWl0cyA9IGZ1bmN0
aW9uKGRhdGEsIG1vZGUsIG51bSkgeworICAgIHZhciBhYSwgYWIsIGFjLCBhZCwgYWUsIGFmLCBh
ZywgYWgsIGFpLCBhaiwgYWssIGFsLCBhbSwgYXNzaWdubWVudHMsIGJlc3QsIGNlbnRyb2lkcywg
Y2x1c3RlciwgY2x1c3RlclNpemVzLCBkaXN0LCBpLCBqLCBrQ2x1c3RlcnMsIGxpbWl0cywgbWF4
LCBtYXhfbG9nLCBtaW4sIG1pbl9sb2csIG1pbmRpc3QsIG4sIG5iX2l0ZXJzLCBuZXdDZW50cm9p
ZHMsIG8sIHAsIHBiLCBwciwgcmVmLCByZWYxLCByZWYxMCwgcmVmMTEsIHJlZjEyLCByZWYxMywg
cmVmMTQsIHJlZjIsIHJlZjMsIHJlZjQsIHJlZjUsIHJlZjYsIHJlZjcsIHJlZjgsIHJlZjksIHJl
cGVhdCwgc3VtLCB0bXBLTWVhbnNCcmVha3MsIHZhbHVlLCB2YWx1ZXMsIHc7CisgICAgaWYgKG1v
ZGUgPT0gbnVsbCkgeworICAgICAgbW9kZSA9ICdlcXVhbCc7CisgICAgfQorICAgIGlmIChudW0g
PT0gbnVsbCkgeworICAgICAgbnVtID0gNzsKKyAgICB9CisgICAgaWYgKHR5cGUoZGF0YSkgPT09
ICdhcnJheScpIHsKKyAgICAgIGRhdGEgPSBjaHJvbWEuYW5hbHl6ZShkYXRhKTsKKyAgICB9Cisg
ICAgbWluID0gZGF0YS5taW47CisgICAgbWF4ID0gZGF0YS5tYXg7CisgICAgc3VtID0gZGF0YS5z
dW07CisgICAgdmFsdWVzID0gZGF0YS52YWx1ZXMuc29ydChmdW5jdGlvbihhLCBiKSB7CisgICAg
ICByZXR1cm4gYSAtIGI7CisgICAgfSk7CisgICAgbGltaXRzID0gW107CisgICAgaWYgKG1vZGUu
c3Vic3RyKDAsIDEpID09PSAnYycpIHsKKyAgICAgIGxpbWl0cy5wdXNoKG1pbik7CisgICAgICBs
aW1pdHMucHVzaChtYXgpOworICAgIH0KKyAgICBpZiAobW9kZS5zdWJzdHIoMCwgMSkgPT09ICdl
JykgeworICAgICAgbGltaXRzLnB1c2gobWluKTsKKyAgICAgIGZvciAoaSA9IG8gPSAxLCByZWYg
PSBudW0gLSAxOyAxIDw9IHJlZiA/IG8gPD0gcmVmIDogbyA+PSByZWY7IGkgPSAxIDw9IHJlZiA/
ICsrbyA6IC0tbykgeworICAgICAgICBsaW1pdHMucHVzaChtaW4gKyAoaSAvIG51bSkgKiAobWF4
IC0gbWluKSk7CisgICAgICB9CisgICAgICBsaW1pdHMucHVzaChtYXgpOworICAgIH0gZWxzZSBp
ZiAobW9kZS5zdWJzdHIoMCwgMSkgPT09ICdsJykgeworICAgICAgaWYgKG1pbiA8PSAwKSB7Cisg
ICAgICAgIHRocm93ICdMb2dhcml0aG1pYyBzY2FsZXMgYXJlIG9ubHkgcG9zc2libGUgZm9yIHZh
bHVlcyA+IDAnOworICAgICAgfQorICAgICAgbWluX2xvZyA9IE1hdGguTE9HMTBFICogbG9nKG1p
bik7CisgICAgICBtYXhfbG9nID0gTWF0aC5MT0cxMEUgKiBsb2cobWF4KTsKKyAgICAgIGxpbWl0
cy5wdXNoKG1pbik7CisgICAgICBmb3IgKGkgPSB3ID0gMSwgcmVmMSA9IG51bSAtIDE7IDEgPD0g
cmVmMSA/IHcgPD0gcmVmMSA6IHcgPj0gcmVmMTsgaSA9IDEgPD0gcmVmMSA/ICsrdyA6IC0tdykg
eworICAgICAgICBsaW1pdHMucHVzaChwb3coMTAsIG1pbl9sb2cgKyAoaSAvIG51bSkgKiAobWF4
X2xvZyAtIG1pbl9sb2cpKSk7CisgICAgICB9CisgICAgICBsaW1pdHMucHVzaChtYXgpOworICAg
IH0gZWxzZSBpZiAobW9kZS5zdWJzdHIoMCwgMSkgPT09ICdxJykgeworICAgICAgbGltaXRzLnB1
c2gobWluKTsKKyAgICAgIGZvciAoaSA9IGFhID0gMSwgcmVmMiA9IG51bSAtIDE7IDEgPD0gcmVm
MiA/IGFhIDw9IHJlZjIgOiBhYSA+PSByZWYyOyBpID0gMSA8PSByZWYyID8gKythYSA6IC0tYWEp
IHsKKyAgICAgICAgcCA9IHZhbHVlcy5sZW5ndGggKiBpIC8gbnVtOworICAgICAgICBwYiA9IGZs
b29yKHApOworICAgICAgICBpZiAocGIgPT09IHApIHsKKyAgICAgICAgICBsaW1pdHMucHVzaCh2
YWx1ZXNbcGJdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwciA9IHAgLSBwYjsKKyAg
ICAgICAgICBsaW1pdHMucHVzaCh2YWx1ZXNbcGJdICogcHIgKyB2YWx1ZXNbcGIgKyAxXSAqICgx
IC0gcHIpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgbGltaXRzLnB1c2gobWF4KTsKKyAg
ICB9IGVsc2UgaWYgKG1vZGUuc3Vic3RyKDAsIDEpID09PSAnaycpIHsKKworICAgICAgLyoKKyAg
ICAgIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uCisgICAgICBodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZmlndWUvc291cmNlL2Jyb3dzZS90cnVuay9maWd1ZS5qcyMzMzYKKyAgICAgIHNpbXBsaWZp
ZWQgZm9yIDEtZCBpbnB1dCB2YWx1ZXMKKyAgICAgICAqLworICAgICAgbiA9IHZhbHVlcy5sZW5n
dGg7CisgICAgICBhc3NpZ25tZW50cyA9IG5ldyBBcnJheShuKTsKKyAgICAgIGNsdXN0ZXJTaXpl
cyA9IG5ldyBBcnJheShudW0pOworICAgICAgcmVwZWF0ID0gdHJ1ZTsKKyAgICAgIG5iX2l0ZXJz
ID0gMDsKKyAgICAgIGNlbnRyb2lkcyA9IG51bGw7CisgICAgICBjZW50cm9pZHMgPSBbXTsKKyAg
ICAgIGNlbnRyb2lkcy5wdXNoKG1pbik7CisgICAgICBmb3IgKGkgPSBhYiA9IDEsIHJlZjMgPSBu
dW0gLSAxOyAxIDw9IHJlZjMgPyBhYiA8PSByZWYzIDogYWIgPj0gcmVmMzsgaSA9IDEgPD0gcmVm
MyA/ICsrYWIgOiAtLWFiKSB7CisgICAgICAgIGNlbnRyb2lkcy5wdXNoKG1pbiArIChpIC8gbnVt
KSAqIChtYXggLSBtaW4pKTsKKyAgICAgIH0KKyAgICAgIGNlbnRyb2lkcy5wdXNoKG1heCk7Cisg
ICAgICB3aGlsZSAocmVwZWF0KSB7CisgICAgICAgIGZvciAoaiA9IGFjID0gMCwgcmVmNCA9IG51
bSAtIDE7IDAgPD0gcmVmNCA/IGFjIDw9IHJlZjQgOiBhYyA+PSByZWY0OyBqID0gMCA8PSByZWY0
ID8gKythYyA6IC0tYWMpIHsKKyAgICAgICAgICBjbHVzdGVyU2l6ZXNbal0gPSAwOworICAgICAg
ICB9CisgICAgICAgIGZvciAoaSA9IGFkID0gMCwgcmVmNSA9IG4gLSAxOyAwIDw9IHJlZjUgPyBh
ZCA8PSByZWY1IDogYWQgPj0gcmVmNTsgaSA9IDAgPD0gcmVmNSA/ICsrYWQgOiAtLWFkKSB7Cisg
ICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaV07CisgICAgICAgICAgbWluZGlzdCA9IE51bWJlci5N
QVhfVkFMVUU7CisgICAgICAgICAgZm9yIChqID0gYWUgPSAwLCByZWY2ID0gbnVtIC0gMTsgMCA8
PSByZWY2ID8gYWUgPD0gcmVmNiA6IGFlID49IHJlZjY7IGogPSAwIDw9IHJlZjYgPyArK2FlIDog
LS1hZSkgeworICAgICAgICAgICAgZGlzdCA9IGFicyhjZW50cm9pZHNbal0gLSB2YWx1ZSk7Cisg
ICAgICAgICAgICBpZiAoZGlzdCA8IG1pbmRpc3QpIHsKKyAgICAgICAgICAgICAgbWluZGlzdCA9
IGRpc3Q7CisgICAgICAgICAgICAgIGJlc3QgPSBqOworICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgICBjbHVzdGVyU2l6ZXNbYmVzdF0rKzsKKyAgICAgICAgICBhc3NpZ25tZW50
c1tpXSA9IGJlc3Q7CisgICAgICAgIH0KKyAgICAgICAgbmV3Q2VudHJvaWRzID0gbmV3IEFycmF5
KG51bSk7CisgICAgICAgIGZvciAoaiA9IGFmID0gMCwgcmVmNyA9IG51bSAtIDE7IDAgPD0gcmVm
NyA/IGFmIDw9IHJlZjcgOiBhZiA+PSByZWY3OyBqID0gMCA8PSByZWY3ID8gKythZiA6IC0tYWYp
IHsKKyAgICAgICAgICBuZXdDZW50cm9pZHNbal0gPSBudWxsOworICAgICAgICB9CisgICAgICAg
IGZvciAoaSA9IGFnID0gMCwgcmVmOCA9IG4gLSAxOyAwIDw9IHJlZjggPyBhZyA8PSByZWY4IDog
YWcgPj0gcmVmODsgaSA9IDAgPD0gcmVmOCA/ICsrYWcgOiAtLWFnKSB7CisgICAgICAgICAgY2x1
c3RlciA9IGFzc2lnbm1lbnRzW2ldOworICAgICAgICAgIGlmIChuZXdDZW50cm9pZHNbY2x1c3Rl
cl0gPT09IG51bGwpIHsKKyAgICAgICAgICAgIG5ld0NlbnRyb2lkc1tjbHVzdGVyXSA9IHZhbHVl
c1tpXTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV3Q2VudHJvaWRzW2NsdXN0
ZXJdICs9IHZhbHVlc1tpXTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChq
ID0gYWggPSAwLCByZWY5ID0gbnVtIC0gMTsgMCA8PSByZWY5ID8gYWggPD0gcmVmOSA6IGFoID49
IHJlZjk7IGogPSAwIDw9IHJlZjkgPyArK2FoIDogLS1haCkgeworICAgICAgICAgIG5ld0NlbnRy
b2lkc1tqXSAqPSAxIC8gY2x1c3RlclNpemVzW2pdOworICAgICAgICB9CisgICAgICAgIHJlcGVh
dCA9IGZhbHNlOworICAgICAgICBmb3IgKGogPSBhaSA9IDAsIHJlZjEwID0gbnVtIC0gMTsgMCA8
PSByZWYxMCA/IGFpIDw9IHJlZjEwIDogYWkgPj0gcmVmMTA7IGogPSAwIDw9IHJlZjEwID8gKyth
aSA6IC0tYWkpIHsKKyAgICAgICAgICBpZiAobmV3Q2VudHJvaWRzW2pdICE9PSBjZW50cm9pZHNb
aV0pIHsKKyAgICAgICAgICAgIHJlcGVhdCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2VudHJvaWRzID0gbmV3Q2VudHJvaWRzOwor
ICAgICAgICBuYl9pdGVycysrOworICAgICAgICBpZiAobmJfaXRlcnMgPiAyMDApIHsKKyAgICAg
ICAgICByZXBlYXQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAga0NsdXN0ZXJz
ID0ge307CisgICAgICBmb3IgKGogPSBhaiA9IDAsIHJlZjExID0gbnVtIC0gMTsgMCA8PSByZWYx
MSA/IGFqIDw9IHJlZjExIDogYWogPj0gcmVmMTE7IGogPSAwIDw9IHJlZjExID8gKythaiA6IC0t
YWopIHsKKyAgICAgICAga0NsdXN0ZXJzW2pdID0gW107CisgICAgICB9CisgICAgICBmb3IgKGkg
PSBhayA9IDAsIHJlZjEyID0gbiAtIDE7IDAgPD0gcmVmMTIgPyBhayA8PSByZWYxMiA6IGFrID49
IHJlZjEyOyBpID0gMCA8PSByZWYxMiA/ICsrYWsgOiAtLWFrKSB7CisgICAgICAgIGNsdXN0ZXIg
PSBhc3NpZ25tZW50c1tpXTsKKyAgICAgICAga0NsdXN0ZXJzW2NsdXN0ZXJdLnB1c2godmFsdWVz
W2ldKTsKKyAgICAgIH0KKyAgICAgIHRtcEtNZWFuc0JyZWFrcyA9IFtdOworICAgICAgZm9yIChq
ID0gYWwgPSAwLCByZWYxMyA9IG51bSAtIDE7IDAgPD0gcmVmMTMgPyBhbCA8PSByZWYxMyA6IGFs
ID49IHJlZjEzOyBqID0gMCA8PSByZWYxMyA/ICsrYWwgOiAtLWFsKSB7CisgICAgICAgIHRtcEtN
ZWFuc0JyZWFrcy5wdXNoKGtDbHVzdGVyc1tqXVswXSk7CisgICAgICAgIHRtcEtNZWFuc0JyZWFr
cy5wdXNoKGtDbHVzdGVyc1tqXVtrQ2x1c3RlcnNbal0ubGVuZ3RoIC0gMV0pOworICAgICAgfQor
ICAgICAgdG1wS01lYW5zQnJlYWtzID0gdG1wS01lYW5zQnJlYWtzLnNvcnQoZnVuY3Rpb24oYSwg
YikgeworICAgICAgICByZXR1cm4gYSAtIGI7CisgICAgICB9KTsKKyAgICAgIGxpbWl0cy5wdXNo
KHRtcEtNZWFuc0JyZWFrc1swXSk7CisgICAgICBmb3IgKGkgPSBhbSA9IDEsIHJlZjE0ID0gdG1w
S01lYW5zQnJlYWtzLmxlbmd0aCAtIDE7IGFtIDw9IHJlZjE0OyBpID0gYW0gKz0gMikgeworICAg
ICAgICBpZiAoIWlzTmFOKHRtcEtNZWFuc0JyZWFrc1tpXSkpIHsKKyAgICAgICAgICBsaW1pdHMu
cHVzaCh0bXBLTWVhbnNCcmVha3NbaV0pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAg
IHJldHVybiBsaW1pdHM7CisgIH07CisKKworICAvKioKKyAgCUNvbG9yQnJld2VyIGNvbG9ycyBm
b3IgY2hyb21hLmpzCisgIAorICAJQ29weXJpZ2h0IChjKSAyMDAyIEN5bnRoaWEgQnJld2VyLCBN
YXJrIEhhcnJvd2VyLCBhbmQgVGhlIAorICAJUGVubnN5bHZhbmlhIFN0YXRlIFVuaXZlcnNpdHku
CisgIAorICAJTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7IAorICAJeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAJWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CQorICAJaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisgIAorICAJVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZAorICAJdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVT
IE9SCisgIAlDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICAJc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisgICAg
ICBAcHJlc2VydmUKKyAgICovCisKKyAgY2hyb21hLmJyZXdlciA9IGJyZXdlciA9IHsKKyAgICBP
clJkOiBbJyNmZmY3ZWMnLCAnI2ZlZThjOCcsICcjZmRkNDllJywgJyNmZGJiODQnLCAnI2ZjOGQ1
OScsICcjZWY2NTQ4JywgJyNkNzMwMWYnLCAnI2IzMDAwMCcsICcjN2YwMDAwJ10sCisgICAgUHVC
dTogWycjZmZmN2ZiJywgJyNlY2U3ZjInLCAnI2QwZDFlNicsICcjYTZiZGRiJywgJyM3NGE5Y2Yn
LCAnIzM2OTBjMCcsICcjMDU3MGIwJywgJyMwNDVhOGQnLCAnIzAyMzg1OCddLAorICAgIEJ1UHU6
IFsnI2Y3ZmNmZCcsICcjZTBlY2Y0JywgJyNiZmQzZTYnLCAnIzllYmNkYScsICcjOGM5NmM2Jywg
JyM4YzZiYjEnLCAnIzg4NDE5ZCcsICcjODEwZjdjJywgJyM0ZDAwNGInXSwKKyAgICBPcmFuZ2Vz
OiBbJyNmZmY1ZWInLCAnI2ZlZTZjZScsICcjZmRkMGEyJywgJyNmZGFlNmInLCAnI2ZkOGQzYycs
ICcjZjE2OTEzJywgJyNkOTQ4MDEnLCAnI2E2MzYwMycsICcjN2YyNzA0J10sCisgICAgQnVHbjog
WycjZjdmY2ZkJywgJyNlNWY1ZjknLCAnI2NjZWNlNicsICcjOTlkOGM5JywgJyM2NmMyYTQnLCAn
IzQxYWU3NicsICcjMjM4YjQ1JywgJyMwMDZkMmMnLCAnIzAwNDQxYiddLAorICAgIFlsT3JCcjog
WycjZmZmZmU1JywgJyNmZmY3YmMnLCAnI2ZlZTM5MScsICcjZmVjNDRmJywgJyNmZTk5MjknLCAn
I2VjNzAxNCcsICcjY2M0YzAyJywgJyM5OTM0MDQnLCAnIzY2MjUwNiddLAorICAgIFlsR246IFsn
I2ZmZmZlNScsICcjZjdmY2I5JywgJyNkOWYwYTMnLCAnI2FkZGQ4ZScsICcjNzhjNjc5JywgJyM0
MWFiNWQnLCAnIzIzODQ0MycsICcjMDA2ODM3JywgJyMwMDQ1MjknXSwKKyAgICBSZWRzOiBbJyNm
ZmY1ZjAnLCAnI2ZlZTBkMicsICcjZmNiYmExJywgJyNmYzkyNzInLCAnI2ZiNmE0YScsICcjZWYz
YjJjJywgJyNjYjE4MWQnLCAnI2E1MGYxNScsICcjNjcwMDBkJ10sCisgICAgUmRQdTogWycjZmZm
N2YzJywgJyNmZGUwZGQnLCAnI2ZjYzVjMCcsICcjZmE5ZmI1JywgJyNmNzY4YTEnLCAnI2RkMzQ5
NycsICcjYWUwMTdlJywgJyM3YTAxNzcnLCAnIzQ5MDA2YSddLAorICAgIEdyZWVuczogWycjZjdm
Y2Y1JywgJyNlNWY1ZTAnLCAnI2M3ZTljMCcsICcjYTFkOTliJywgJyM3NGM0NzYnLCAnIzQxYWI1
ZCcsICcjMjM4YjQ1JywgJyMwMDZkMmMnLCAnIzAwNDQxYiddLAorICAgIFlsR25CdTogWycjZmZm
ZmQ5JywgJyNlZGY4YjEnLCAnI2M3ZTliNCcsICcjN2ZjZGJiJywgJyM0MWI2YzQnLCAnIzFkOTFj
MCcsICcjMjI1ZWE4JywgJyMyNTM0OTQnLCAnIzA4MWQ1OCddLAorICAgIFB1cnBsZXM6IFsnI2Zj
ZmJmZCcsICcjZWZlZGY1JywgJyNkYWRhZWInLCAnI2JjYmRkYycsICcjOWU5YWM4JywgJyM4MDdk
YmEnLCAnIzZhNTFhMycsICcjNTQyNzhmJywgJyMzZjAwN2QnXSwKKyAgICBHbkJ1OiBbJyNmN2Zj
ZjAnLCAnI2UwZjNkYicsICcjY2NlYmM1JywgJyNhOGRkYjUnLCAnIzdiY2NjNCcsICcjNGViM2Qz
JywgJyMyYjhjYmUnLCAnIzA4NjhhYycsICcjMDg0MDgxJ10sCisgICAgR3JleXM6IFsnI2ZmZmZm
ZicsICcjZjBmMGYwJywgJyNkOWQ5ZDknLCAnI2JkYmRiZCcsICcjOTY5Njk2JywgJyM3MzczNzMn
LCAnIzUyNTI1MicsICcjMjUyNTI1JywgJyMwMDAwMDAnXSwKKyAgICBZbE9yUmQ6IFsnI2ZmZmZj
YycsICcjZmZlZGEwJywgJyNmZWQ5NzYnLCAnI2ZlYjI0YycsICcjZmQ4ZDNjJywgJyNmYzRlMmEn
LCAnI2UzMWExYycsICcjYmQwMDI2JywgJyM4MDAwMjYnXSwKKyAgICBQdVJkOiBbJyNmN2Y0Zjkn
LCAnI2U3ZTFlZicsICcjZDRiOWRhJywgJyNjOTk0YzcnLCAnI2RmNjViMCcsICcjZTcyOThhJywg
JyNjZTEyNTYnLCAnIzk4MDA0MycsICcjNjcwMDFmJ10sCisgICAgQmx1ZXM6IFsnI2Y3ZmJmZics
ICcjZGVlYmY3JywgJyNjNmRiZWYnLCAnIzllY2FlMScsICcjNmJhZWQ2JywgJyM0MjkyYzYnLCAn
IzIxNzFiNScsICcjMDg1MTljJywgJyMwODMwNmInXSwKKyAgICBQdUJ1R246IFsnI2ZmZjdmYics
ICcjZWNlMmYwJywgJyNkMGQxZTYnLCAnI2E2YmRkYicsICcjNjdhOWNmJywgJyMzNjkwYzAnLCAn
IzAyODE4YScsICcjMDE2YzU5JywgJyMwMTQ2MzYnXSwKKyAgICBTcGVjdHJhbDogWycjOWUwMTQy
JywgJyNkNTNlNGYnLCAnI2Y0NmQ0MycsICcjZmRhZTYxJywgJyNmZWUwOGInLCAnI2ZmZmZiZics
ICcjZTZmNTk4JywgJyNhYmRkYTQnLCAnIzY2YzJhNScsICcjMzI4OGJkJywgJyM1ZTRmYTInXSwK
KyAgICBSZFlsR246IFsnI2E1MDAyNicsICcjZDczMDI3JywgJyNmNDZkNDMnLCAnI2ZkYWU2MScs
ICcjZmVlMDhiJywgJyNmZmZmYmYnLCAnI2Q5ZWY4YicsICcjYTZkOTZhJywgJyM2NmJkNjMnLCAn
IzFhOTg1MCcsICcjMDA2ODM3J10sCisgICAgUmRCdTogWycjNjcwMDFmJywgJyNiMjE4MmInLCAn
I2Q2NjA0ZCcsICcjZjRhNTgyJywgJyNmZGRiYzcnLCAnI2Y3ZjdmNycsICcjZDFlNWYwJywgJyM5
MmM1ZGUnLCAnIzQzOTNjMycsICcjMjE2NmFjJywgJyMwNTMwNjEnXSwKKyAgICBQaVlHOiBbJyM4
ZTAxNTInLCAnI2M1MWI3ZCcsICcjZGU3N2FlJywgJyNmMWI2ZGEnLCAnI2ZkZTBlZicsICcjZjdm
N2Y3JywgJyNlNmY1ZDAnLCAnI2I4ZTE4NicsICcjN2ZiYzQxJywgJyM0ZDkyMjEnLCAnIzI3NjQx
OSddLAorICAgIFBSR246IFsnIzQwMDA0YicsICcjNzYyYTgzJywgJyM5OTcwYWInLCAnI2MyYTVj
ZicsICcjZTdkNGU4JywgJyNmN2Y3ZjcnLCAnI2Q5ZjBkMycsICcjYTZkYmEwJywgJyM1YWFlNjEn
LCAnIzFiNzgzNycsICcjMDA0NDFiJ10sCisgICAgUmRZbEJ1OiBbJyNhNTAwMjYnLCAnI2Q3MzAy
NycsICcjZjQ2ZDQzJywgJyNmZGFlNjEnLCAnI2ZlZTA5MCcsICcjZmZmZmJmJywgJyNlMGYzZjgn
LCAnI2FiZDllOScsICcjNzRhZGQxJywgJyM0NTc1YjQnLCAnIzMxMzY5NSddLAorICAgIEJyQkc6
IFsnIzU0MzAwNScsICcjOGM1MTBhJywgJyNiZjgxMmQnLCAnI2RmYzI3ZCcsICcjZjZlOGMzJywg
JyNmNWY1ZjUnLCAnI2M3ZWFlNScsICcjODBjZGMxJywgJyMzNTk3OGYnLCAnIzAxNjY1ZScsICcj
MDAzYzMwJ10sCisgICAgUmRHeTogWycjNjcwMDFmJywgJyNiMjE4MmInLCAnI2Q2NjA0ZCcsICcj
ZjRhNTgyJywgJyNmZGRiYzcnLCAnI2ZmZmZmZicsICcjZTBlMGUwJywgJyNiYWJhYmEnLCAnIzg3
ODc4NycsICcjNGQ0ZDRkJywgJyMxYTFhMWEnXSwKKyAgICBQdU9yOiBbJyM3ZjNiMDgnLCAnI2Iz
NTgwNicsICcjZTA4MjE0JywgJyNmZGI4NjMnLCAnI2ZlZTBiNicsICcjZjdmN2Y3JywgJyNkOGRh
ZWInLCAnI2IyYWJkMicsICcjODA3M2FjJywgJyM1NDI3ODgnLCAnIzJkMDA0YiddLAorICAgIFNl
dDI6IFsnIzY2YzJhNScsICcjZmM4ZDYyJywgJyM4ZGEwY2InLCAnI2U3OGFjMycsICcjYTZkODU0
JywgJyNmZmQ5MmYnLCAnI2U1YzQ5NCcsICcjYjNiM2IzJ10sCisgICAgQWNjZW50OiBbJyM3ZmM5
N2YnLCAnI2JlYWVkNCcsICcjZmRjMDg2JywgJyNmZmZmOTknLCAnIzM4NmNiMCcsICcjZjAwMjdm
JywgJyNiZjViMTcnLCAnIzY2NjY2NiddLAorICAgIFNldDE6IFsnI2U0MWExYycsICcjMzc3ZWI4
JywgJyM0ZGFmNGEnLCAnIzk4NGVhMycsICcjZmY3ZjAwJywgJyNmZmZmMzMnLCAnI2E2NTYyOCcs
ICcjZjc4MWJmJywgJyM5OTk5OTknXSwKKyAgICBTZXQzOiBbJyM4ZGQzYzcnLCAnI2ZmZmZiMycs
ICcjYmViYWRhJywgJyNmYjgwNzInLCAnIzgwYjFkMycsICcjZmRiNDYyJywgJyNiM2RlNjknLCAn
I2ZjY2RlNScsICcjZDlkOWQ5JywgJyNiYzgwYmQnLCAnI2NjZWJjNScsICcjZmZlZDZmJ10sCisg
ICAgRGFyazI6IFsnIzFiOWU3NycsICcjZDk1ZjAyJywgJyM3NTcwYjMnLCAnI2U3Mjk4YScsICcj
NjZhNjFlJywgJyNlNmFiMDInLCAnI2E2NzYxZCcsICcjNjY2NjY2J10sCisgICAgUGFpcmVkOiBb
JyNhNmNlZTMnLCAnIzFmNzhiNCcsICcjYjJkZjhhJywgJyMzM2EwMmMnLCAnI2ZiOWE5OScsICcj
ZTMxYTFjJywgJyNmZGJmNmYnLCAnI2ZmN2YwMCcsICcjY2FiMmQ2JywgJyM2YTNkOWEnLCAnI2Zm
ZmY5OScsICcjYjE1OTI4J10sCisgICAgUGFzdGVsMjogWycjYjNlMmNkJywgJyNmZGNkYWMnLCAn
I2NiZDVlOCcsICcjZjRjYWU0JywgJyNlNmY1YzknLCAnI2ZmZjJhZScsICcjZjFlMmNjJywgJyNj
Y2NjY2MnXSwKKyAgICBQYXN0ZWwxOiBbJyNmYmI0YWUnLCAnI2IzY2RlMycsICcjY2NlYmM1Jywg
JyNkZWNiZTQnLCAnI2ZlZDlhNicsICcjZmZmZmNjJywgJyNlNWQ4YmQnLCAnI2ZkZGFlYycsICcj
ZjJmMmYyJ10KKyAgfTsKKworCisgIC8qKgorICAJWDExIGNvbG9yIG5hbWVzCisgIAorICAJaHR0
cDovL3d3dy53My5vcmcvVFIvY3NzMy1jb2xvci8jc3ZnLWNvbG9yCisgICAqLworCisgIGNocm9t
YS5jb2xvcnMgPSBjb2xvcnMgPSB7CisgICAgaW5kaWdvOiAiIzRiMDA4MiIsCisgICAgZ29sZDog
IiNmZmQ3MDAiLAorICAgIGhvdHBpbms6ICIjZmY2OWI0IiwKKyAgICBmaXJlYnJpY2s6ICIjYjIy
MjIyIiwKKyAgICBpbmRpYW5yZWQ6ICIjY2Q1YzVjIiwKKyAgICB5ZWxsb3c6ICIjZmZmZjAwIiwK
KyAgICBtaXN0eXJvc2U6ICIjZmZlNGUxIiwKKyAgICBkYXJrb2xpdmVncmVlbjogIiM1NTZiMmYi
LAorICAgIG9saXZlOiAiIzgwODAwMCIsCisgICAgZGFya3NlYWdyZWVuOiAiIzhmYmM4ZiIsCisg
ICAgcGluazogIiNmZmMwY2IiLAorICAgIHRvbWF0bzogIiNmZjYzNDciLAorICAgIGxpZ2h0Y29y
YWw6ICIjZjA4MDgwIiwKKyAgICBvcmFuZ2VyZWQ6ICIjZmY0NTAwIiwKKyAgICBuYXZham93aGl0
ZTogIiNmZmRlYWQiLAorICAgIGxpbWU6ICIjMDBmZjAwIiwKKyAgICBwYWxlZ3JlZW46ICIjOThm
Yjk4IiwKKyAgICBkYXJrc2xhdGVncmV5OiAiIzJmNGY0ZiIsCisgICAgZ3JlZW55ZWxsb3c6ICIj
YWRmZjJmIiwKKyAgICBidXJseXdvb2Q6ICIjZGViODg3IiwKKyAgICBzZWFzaGVsbDogIiNmZmY1
ZWUiLAorICAgIG1lZGl1bXNwcmluZ2dyZWVuOiAiIzAwZmE5YSIsCisgICAgZnVjaHNpYTogIiNm
ZjAwZmYiLAorICAgIHBhcGF5YXdoaXA6ICIjZmZlZmQ1IiwKKyAgICBibGFuY2hlZGFsbW9uZDog
IiNmZmViY2QiLAorICAgIGNoYXJ0cmV1c2U6ICIjN2ZmZjAwIiwKKyAgICBkaW1ncmF5OiAiIzY5
Njk2OSIsCisgICAgYmxhY2s6ICIjMDAwMDAwIiwKKyAgICBwZWFjaHB1ZmY6ICIjZmZkYWI5IiwK
KyAgICBzcHJpbmdncmVlbjogIiMwMGZmN2YiLAorICAgIGFxdWFtYXJpbmU6ICIjN2ZmZmQ0IiwK
KyAgICB3aGl0ZTogIiNmZmZmZmYiLAorICAgIG9yYW5nZTogIiNmZmE1MDAiLAorICAgIGxpZ2h0
c2FsbW9uOiAiI2ZmYTA3YSIsCisgICAgZGFya3NsYXRlZ3JheTogIiMyZjRmNGYiLAorICAgIGJy
b3duOiAiI2E1MmEyYSIsCisgICAgaXZvcnk6ICIjZmZmZmYwIiwKKyAgICBkb2RnZXJibHVlOiAi
IzFlOTBmZiIsCisgICAgcGVydTogIiNjZDg1M2YiLAorICAgIGxhd25ncmVlbjogIiM3Y2ZjMDAi
LAorICAgIGNob2NvbGF0ZTogIiNkMjY5MWUiLAorICAgIGNyaW1zb246ICIjZGMxNDNjIiwKKyAg
ICBmb3Jlc3RncmVlbjogIiMyMjhiMjIiLAorICAgIGRhcmtncmV5OiAiI2E5YTlhOSIsCisgICAg
bGlnaHRzZWFncmVlbjogIiMyMGIyYWEiLAorICAgIGN5YW46ICIjMDBmZmZmIiwKKyAgICBtaW50
Y3JlYW06ICIjZjVmZmZhIiwKKyAgICBzaWx2ZXI6ICIjYzBjMGMwIiwKKyAgICBhbnRpcXVld2hp
dGU6ICIjZmFlYmQ3IiwKKyAgICBtZWRpdW1vcmNoaWQ6ICIjYmE1NWQzIiwKKyAgICBza3libHVl
OiAiIzg3Y2VlYiIsCisgICAgZ3JheTogIiM4MDgwODAiLAorICAgIGRhcmt0dXJxdW9pc2U6ICIj
MDBjZWQxIiwKKyAgICBnb2xkZW5yb2Q6ICIjZGFhNTIwIiwKKyAgICBkYXJrZ3JlZW46ICIjMDA2
NDAwIiwKKyAgICBmbG9yYWx3aGl0ZTogIiNmZmZhZjAiLAorICAgIGRhcmt2aW9sZXQ6ICIjOTQw
MGQzIiwKKyAgICBkYXJrZ3JheTogIiNhOWE5YTkiLAorICAgIG1vY2Nhc2luOiAiI2ZmZTRiNSIs
CisgICAgc2FkZGxlYnJvd246ICIjOGI0NTEzIiwKKyAgICBncmV5OiAiIzgwODA4MCIsCisgICAg
ZGFya3NsYXRlYmx1ZTogIiM0ODNkOGIiLAorICAgIGxpZ2h0c2t5Ymx1ZTogIiM4N2NlZmEiLAor
ICAgIGxpZ2h0cGluazogIiNmZmI2YzEiLAorICAgIG1lZGl1bXZpb2xldHJlZDogIiNjNzE1ODUi
LAorICAgIHNsYXRlZ3JleTogIiM3MDgwOTAiLAorICAgIHJlZDogIiNmZjAwMDAiLAorICAgIGRl
ZXBwaW5rOiAiI2ZmMTQ5MyIsCisgICAgbGltZWdyZWVuOiAiIzMyY2QzMiIsCisgICAgZGFya21h
Z2VudGE6ICIjOGIwMDhiIiwKKyAgICBwYWxlZ29sZGVucm9kOiAiI2VlZThhYSIsCisgICAgcGx1
bTogIiNkZGEwZGQiLAorICAgIHR1cnF1b2lzZTogIiM0MGUwZDAiLAorICAgIGxpZ2h0Z3JleTog
IiNkM2QzZDMiLAorICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAiI2ZhZmFkMiIsCisgICAgZGFy
a2dvbGRlbnJvZDogIiNiODg2MGIiLAorICAgIGxhdmVuZGVyOiAiI2U2ZTZmYSIsCisgICAgbWFy
b29uOiAiIzgwMDAwMCIsCisgICAgeWVsbG93Z3JlZW46ICIjOWFjZDMyIiwKKyAgICBzYW5keWJy
b3duOiAiI2Y0YTQ2MCIsCisgICAgdGhpc3RsZTogIiNkOGJmZDgiLAorICAgIHZpb2xldDogIiNl
ZTgyZWUiLAorICAgIG5hdnk6ICIjMDAwMDgwIiwKKyAgICBtYWdlbnRhOiAiI2ZmMDBmZiIsCisg
ICAgZGltZ3JleTogIiM2OTY5NjkiLAorICAgIHRhbjogIiNkMmI0OGMiLAorICAgIHJvc3licm93
bjogIiNiYzhmOGYiLAorICAgIG9saXZlZHJhYjogIiM2YjhlMjMiLAorICAgIGJsdWU6ICIjMDAw
MGZmIiwKKyAgICBsaWdodGJsdWU6ICIjYWRkOGU2IiwKKyAgICBnaG9zdHdoaXRlOiAiI2Y4Zjhm
ZiIsCisgICAgaG9uZXlkZXc6ICIjZjBmZmYwIiwKKyAgICBjb3JuZmxvd2VyYmx1ZTogIiM2NDk1
ZWQiLAorICAgIHNsYXRlYmx1ZTogIiM2YTVhY2QiLAorICAgIGxpbmVuOiAiI2ZhZjBlNiIsCisg
ICAgZGFya2JsdWU6ICIjMDAwMDhiIiwKKyAgICBwb3dkZXJibHVlOiAiI2IwZTBlNiIsCisgICAg
c2VhZ3JlZW46ICIjMmU4YjU3IiwKKyAgICBkYXJra2hha2k6ICIjYmRiNzZiIiwKKyAgICBzbm93
OiAiI2ZmZmFmYSIsCisgICAgc2llbm5hOiAiI2EwNTIyZCIsCisgICAgbWVkaXVtYmx1ZTogIiMw
MDAwY2QiLAorICAgIHJveWFsYmx1ZTogIiM0MTY5ZTEiLAorICAgIGxpZ2h0Y3lhbjogIiNlMGZm
ZmYiLAorICAgIGdyZWVuOiAiIzAwODAwMCIsCisgICAgbWVkaXVtcHVycGxlOiAiIzkzNzBkYiIs
CisgICAgbWlkbmlnaHRibHVlOiAiIzE5MTk3MCIsCisgICAgY29ybnNpbGs6ICIjZmZmOGRjIiwK
KyAgICBwYWxldHVycXVvaXNlOiAiI2FmZWVlZSIsCisgICAgYmlzcXVlOiAiI2ZmZTRjNCIsCisg
ICAgc2xhdGVncmF5OiAiIzcwODA5MCIsCisgICAgZGFya2N5YW46ICIjMDA4YjhiIiwKKyAgICBr
aGFraTogIiNmMGU2OGMiLAorICAgIHdoZWF0OiAiI2Y1ZGViMyIsCisgICAgdGVhbDogIiMwMDgw
ODAiLAorICAgIGRhcmtvcmNoaWQ6ICIjOTkzMmNjIiwKKyAgICBkZWVwc2t5Ymx1ZTogIiMwMGJm
ZmYiLAorICAgIHNhbG1vbjogIiNmYTgwNzIiLAorICAgIGRhcmtyZWQ6ICIjOGIwMDAwIiwKKyAg
ICBzdGVlbGJsdWU6ICIjNDY4MmI0IiwKKyAgICBwYWxldmlvbGV0cmVkOiAiI2RiNzA5MyIsCisg
ICAgbGlnaHRzbGF0ZWdyYXk6ICIjNzc4ODk5IiwKKyAgICBhbGljZWJsdWU6ICIjZjBmOGZmIiwK
KyAgICBsaWdodHNsYXRlZ3JleTogIiM3Nzg4OTkiLAorICAgIGxpZ2h0Z3JlZW46ICIjOTBlZTkw
IiwKKyAgICBvcmNoaWQ6ICIjZGE3MGQ2IiwKKyAgICBnYWluc2Jvcm86ICIjZGNkY2RjIiwKKyAg
ICBtZWRpdW1zZWFncmVlbjogIiMzY2IzNzEiLAorICAgIGxpZ2h0Z3JheTogIiNkM2QzZDMiLAor
ICAgIG1lZGl1bXR1cnF1b2lzZTogIiM0OGQxY2MiLAorICAgIGxlbW9uY2hpZmZvbjogIiNmZmZh
Y2QiLAorICAgIGNhZGV0Ymx1ZTogIiM1ZjllYTAiLAorICAgIGxpZ2h0eWVsbG93OiAiI2ZmZmZl
MCIsCisgICAgbGF2ZW5kZXJibHVzaDogIiNmZmYwZjUiLAorICAgIGNvcmFsOiAiI2ZmN2Y1MCIs
CisgICAgcHVycGxlOiAiIzgwMDA4MCIsCisgICAgYXF1YTogIiMwMGZmZmYiLAorICAgIHdoaXRl
c21va2U6ICIjZjVmNWY1IiwKKyAgICBtZWRpdW1zbGF0ZWJsdWU6ICIjN2I2OGVlIiwKKyAgICBk
YXJrb3JhbmdlOiAiI2ZmOGMwMCIsCisgICAgbWVkaXVtYXF1YW1hcmluZTogIiM2NmNkYWEiLAor
ICAgIGRhcmtzYWxtb246ICIjZTk5NjdhIiwKKyAgICBiZWlnZTogIiNmNWY1ZGMiLAorICAgIGJs
dWV2aW9sZXQ6ICIjOGEyYmUyIiwKKyAgICBhenVyZTogIiNmMGZmZmYiLAorICAgIGxpZ2h0c3Rl
ZWxibHVlOiAiI2IwYzRkZSIsCisgICAgb2xkbGFjZTogIiNmZGY1ZTYiLAorICAgIHJlYmVjY2Fw
dXJwbGU6ICIjNjYzMzk5IgorICB9OworCisKKyAgLyoKKyAgICAgIGNocm9tYS5qcworICAKKyAg
ICAgIENvcHlyaWdodCAoYykgMjAxMS0yMDEzLCBHcmVnb3IgQWlzY2gKKyAgICAgIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgIAorICAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICAgICBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoKKyAgCisgICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICAgICAgICBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgCisgICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwKKyAgICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgICBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgCisgICAgICAqIFRo
ZSBuYW1lIEdyZWdvciBBaXNjaCBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzCisgICAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICAKKyAgICAgIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFT
IElTIgorICAgICAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICAgICAgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgICAgICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHUkVHT1IgQUlTQ0ggT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAgICAgIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLAorICAgICAgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAgICAgIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAgICAgIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICAgICBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsCisg
ICAgICBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICAKKyAgICAgIEBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9na2EvY2hyb21hLmpzCisgICAq
LworCisgIHR5cGUgPSAoZnVuY3Rpb24oKSB7CisKKyAgICAvKgorICAgIGZvciBicm93c2VyLXNh
ZmUgdHlwZSBjaGVja2luZysKKyAgICBwb3J0ZWQgZnJvbSBqUXVlcnkncyAkLnR5cGUKKyAgICAg
Ki8KKyAgICB2YXIgY2xhc3NUb1R5cGUsIGxlbiwgbmFtZSwgbywgcmVmOworICAgIGNsYXNzVG9U
eXBlID0ge307CisgICAgcmVmID0gIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJh
eSBEYXRlIFJlZ0V4cCBVbmRlZmluZWQgTnVsbCIuc3BsaXQoIiAiKTsKKyAgICBmb3IgKG8gPSAw
LCBsZW4gPSByZWYubGVuZ3RoOyBvIDwgbGVuOyBvKyspIHsKKyAgICAgIG5hbWUgPSByZWZbb107
CisgICAgICBjbGFzc1RvVHlwZVsiW29iamVjdCAiICsgbmFtZSArICJdIl0gPSBuYW1lLnRvTG93
ZXJDYXNlKCk7CisgICAgfQorICAgIHJldHVybiBmdW5jdGlvbihvYmopIHsKKyAgICAgIHZhciBz
dHJUeXBlOworICAgICAgc3RyVHlwZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChv
YmopOworICAgICAgcmV0dXJuIGNsYXNzVG9UeXBlW3N0clR5cGVdIHx8ICJvYmplY3QiOworICAg
IH07CisgIH0pKCk7CisKKyAgbGltaXQgPSBmdW5jdGlvbih4LCBtaW4sIG1heCkgeworICAgIGlm
IChtaW4gPT0gbnVsbCkgeworICAgICAgbWluID0gMDsKKyAgICB9CisgICAgaWYgKG1heCA9PSBu
dWxsKSB7CisgICAgICBtYXggPSAxOworICAgIH0KKyAgICBpZiAoeCA8IG1pbikgeworICAgICAg
eCA9IG1pbjsKKyAgICB9CisgICAgaWYgKHggPiBtYXgpIHsKKyAgICAgIHggPSBtYXg7CisgICAg
fQorICAgIHJldHVybiB4OworICB9OworCisgIHVucGFjayA9IGZ1bmN0aW9uKGFyZ3MpIHsKKyAg
ICBpZiAoYXJncy5sZW5ndGggPj0gMykgeworICAgICAgcmV0dXJuIGFyZ3M7CisgICAgfSBlbHNl
IHsKKyAgICAgIHJldHVybiBhcmdzWzBdOworICAgIH0KKyAgfTsKKworICBUV09QSSA9IE1hdGgu
UEkgKiAyOworCisgIFBJVEhJUkQgPSBNYXRoLlBJIC8gMzsKKworICByb3VuZCA9IE1hdGgucm91
bmQsIGNvcyA9IE1hdGguY29zLCBmbG9vciA9IE1hdGguZmxvb3IsIHBvdyA9IE1hdGgucG93LCBs
b2cgPSBNYXRoLmxvZywgc2luID0gTWF0aC5zaW47CisKKworICAvKgorICBpbnRlcnBvbGF0ZXMg
YmV0d2VlbiBhIHNldCBvZiBjb2xvcnMgdXppbmcgYSBiZXppZXIgc3BsaW5lCisgICAqLworCisg
IGJlemllciA9IGZ1bmN0aW9uKGNvbG9ycykgeworICAgIHZhciBJLCBJMCwgSTEsIGMsIGxhYjAs
IGxhYjEsIGxhYjIsIGxhYjMsIHJlZiwgcmVmMSwgcmVmMjsKKyAgICBjb2xvcnMgPSAoZnVuY3Rp
b24oKSB7CisgICAgICB2YXIgbGVuLCBvLCByZXN1bHRzOworICAgICAgcmVzdWx0cyA9IFtdOwor
ICAgICAgZm9yIChvID0gMCwgbGVuID0gY29sb3JzLmxlbmd0aDsgbyA8IGxlbjsgbysrKSB7Cisg
ICAgICAgIGMgPSBjb2xvcnNbb107CisgICAgICAgIHJlc3VsdHMucHVzaChjaHJvbWEoYykpOwor
ICAgICAgfQorICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgfSkoKTsKKyAgICBpZiAoY29sb3Jz
Lmxlbmd0aCA9PT0gMikgeworICAgICAgcmVmID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
bGVuLCBvLCByZXN1bHRzOworICAgICAgICByZXN1bHRzID0gW107CisgICAgICAgIGZvciAobyA9
IDAsIGxlbiA9IGNvbG9ycy5sZW5ndGg7IG8gPCBsZW47IG8rKykgeworICAgICAgICAgIGMgPSBj
b2xvcnNbb107CisgICAgICAgICAgcmVzdWx0cy5wdXNoKGMubGFiKCkpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgfSkoKSwgbGFiMCA9IHJlZlswXSwgbGFiMSA9
IHJlZlsxXTsKKyAgICAgIEkgPSBmdW5jdGlvbih0KSB7CisgICAgICAgIHZhciBpLCBsYWI7Cisg
ICAgICAgIGxhYiA9IChmdW5jdGlvbigpIHsKKyAgICAgICAgICB2YXIgbywgcmVzdWx0czsKKyAg
ICAgICAgICByZXN1bHRzID0gW107CisgICAgICAgICAgZm9yIChpID0gbyA9IDA7IG8gPD0gMjsg
aSA9ICsrbykgeworICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGxhYjBbaV0gKyB0ICogKGxhYjFb
aV0gLSBsYWIwW2ldKSk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiByZXN1bHRzOwor
ICAgICAgICB9KSgpOworICAgICAgICByZXR1cm4gY2hyb21hLmxhYi5hcHBseShjaHJvbWEsIGxh
Yik7CisgICAgICB9OworICAgIH0gZWxzZSBpZiAoY29sb3JzLmxlbmd0aCA9PT0gMykgeworICAg
ICAgcmVmMSA9IChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGxlbiwgbywgcmVzdWx0czsKKyAg
ICAgICAgcmVzdWx0cyA9IFtdOworICAgICAgICBmb3IgKG8gPSAwLCBsZW4gPSBjb2xvcnMubGVu
Z3RoOyBvIDwgbGVuOyBvKyspIHsKKyAgICAgICAgICBjID0gY29sb3JzW29dOworICAgICAgICAg
IHJlc3VsdHMucHVzaChjLmxhYigpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0
czsKKyAgICAgIH0pKCksIGxhYjAgPSByZWYxWzBdLCBsYWIxID0gcmVmMVsxXSwgbGFiMiA9IHJl
ZjFbMl07CisgICAgICBJID0gZnVuY3Rpb24odCkgeworICAgICAgICB2YXIgaSwgbGFiOworICAg
ICAgICBsYWIgPSAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIG8sIHJlc3VsdHM7CisgICAg
ICAgICAgcmVzdWx0cyA9IFtdOworICAgICAgICAgIGZvciAoaSA9IG8gPSAwOyBvIDw9IDI7IGkg
PSArK28pIHsKKyAgICAgICAgICAgIHJlc3VsdHMucHVzaCgoMSAtIHQpICogKDEgLSB0KSAqIGxh
YjBbaV0gKyAyICogKDEgLSB0KSAqIHQgKiBsYWIxW2ldICsgdCAqIHQgKiBsYWIyW2ldKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICAgIH0pKCk7CisgICAg
ICAgIHJldHVybiBjaHJvbWEubGFiLmFwcGx5KGNocm9tYSwgbGFiKTsKKyAgICAgIH07CisgICAg
fSBlbHNlIGlmIChjb2xvcnMubGVuZ3RoID09PSA0KSB7CisgICAgICByZWYyID0gKGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgbGVuLCBvLCByZXN1bHRzOworICAgICAgICByZXN1bHRzID0gW107
CisgICAgICAgIGZvciAobyA9IDAsIGxlbiA9IGNvbG9ycy5sZW5ndGg7IG8gPCBsZW47IG8rKykg
eworICAgICAgICAgIGMgPSBjb2xvcnNbb107CisgICAgICAgICAgcmVzdWx0cy5wdXNoKGMubGFi
KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgfSkoKSwgbGFi
MCA9IHJlZjJbMF0sIGxhYjEgPSByZWYyWzFdLCBsYWIyID0gcmVmMlsyXSwgbGFiMyA9IHJlZjJb
M107CisgICAgICBJID0gZnVuY3Rpb24odCkgeworICAgICAgICB2YXIgaSwgbGFiOworICAgICAg
ICBsYWIgPSAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIG8sIHJlc3VsdHM7CisgICAgICAg
ICAgcmVzdWx0cyA9IFtdOworICAgICAgICAgIGZvciAoaSA9IG8gPSAwOyBvIDw9IDI7IGkgPSAr
K28pIHsKKyAgICAgICAgICAgIHJlc3VsdHMucHVzaCgoMSAtIHQpICogKDEgLSB0KSAqICgxIC0g
dCkgKiBsYWIwW2ldICsgMyAqICgxIC0gdCkgKiAoMSAtIHQpICogdCAqIGxhYjFbaV0gKyAzICog
KDEgLSB0KSAqIHQgKiB0ICogbGFiMltpXSArIHQgKiB0ICogdCAqIGxhYjNbaV0pOworICAgICAg
ICAgIH0KKyAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgICAgfSkoKTsKKyAgICAgICAg
cmV0dXJuIGNocm9tYS5sYWIuYXBwbHkoY2hyb21hLCBsYWIpOworICAgICAgfTsKKyAgICB9IGVs
c2UgaWYgKGNvbG9ycy5sZW5ndGggPT09IDUpIHsKKyAgICAgIEkwID0gYmV6aWVyKGNvbG9ycy5z
bGljZSgwLCAzKSk7CisgICAgICBJMSA9IGJlemllcihjb2xvcnMuc2xpY2UoMiwgNSkpOworICAg
ICAgSSA9IGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgaWYgKHQgPCAwLjUpIHsKKyAgICAgICAgICBy
ZXR1cm4gSTAodCAqIDIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBJMSgo
dCAtIDAuNSkgKiAyKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgICAgcmV0dXJuIEk7
CisgIH07CisKKyAgY2hyb21hLmludGVycG9sYXRlLmJlemllciA9IGJlemllcjsKKworCisgIC8q
CisgIGludGVycG9sYXRlcyBiZXR3ZWVuIGEgc2V0IG9mIGNvbG9ycyB1emluZyBhIGJlemllciBz
cGxpbmUKKyAgCisgIGJsZW5kIG1vZGUgZm9ybXVsYXMgdGFrZW4gZnJvbToKKyAgaHR0cDovL3d3
dy52ZW50dXJlLXdhcmUuY29tL2tldmluL2NvZGluZy9sZXRzLWxlYXJuLW1hdGgtcGhvdG9zaG9w
LWJsZW5kLW1vZGVzLworICAgKi8KKworICBibGVuZCA9IGZ1bmN0aW9uKGJvdHRvbSwgdG9wLCBt
b2RlKSB7CisgICAgaWYgKCFibGVuZFttb2RlXSkgeworICAgICAgdGhyb3cgJ3Vua25vd24gYmxl
bmQgbW9kZSAnICsgbW9kZTsKKyAgICB9CisgICAgcmV0dXJuIGJsZW5kW21vZGVdKGJvdHRvbSwg
dG9wKTsKKyAgfTsKKworICBibGVuZF9mID0gZnVuY3Rpb24oZikgeworICAgIHJldHVybiBmdW5j
dGlvbihib3R0b20sIHRvcCkgeworICAgICAgdmFyIGMwLCBjMTsKKyAgICAgIGMwID0gY2hyb21h
KHRvcCkucmdiKCk7CisgICAgICBjMSA9IGNocm9tYShib3R0b20pLnJnYigpOworICAgICAgcmV0
dXJuIGNocm9tYShmKGMwLCBjMSksICdyZ2InKTsKKyAgICB9OworICB9OworCisgIGVhY2ggPSBm
dW5jdGlvbihmKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKGMwLCBjMSkgeworICAgICAgdmFyIGks
IG8sIG91dDsKKyAgICAgIG91dCA9IFtdOworICAgICAgZm9yIChpID0gbyA9IDA7IG8gPD0gMzsg
aSA9ICsrbykgeworICAgICAgICBvdXRbaV0gPSBmKGMwW2ldLCBjMVtpXSk7CisgICAgICB9Cisg
ICAgICByZXR1cm4gb3V0OworICAgIH07CisgIH07CisKKyAgbm9ybWFsID0gZnVuY3Rpb24oYSwg
YikgeworICAgIHJldHVybiBhOworICB9OworCisgIG11bHRpcGx5ID0gZnVuY3Rpb24oYSwgYikg
eworICAgIHJldHVybiBhICogYiAvIDI1NTsKKyAgfTsKKworICBkYXJrZW4gPSBmdW5jdGlvbihh
LCBiKSB7CisgICAgaWYgKGEgPiBiKSB7CisgICAgICByZXR1cm4gYjsKKyAgICB9IGVsc2Ugewor
ICAgICAgcmV0dXJuIGE7CisgICAgfQorICB9OworCisgIGxpZ2h0ZW4gPSBmdW5jdGlvbihhLCBi
KSB7CisgICAgaWYgKGEgPiBiKSB7CisgICAgICByZXR1cm4gYTsKKyAgICB9IGVsc2UgeworICAg
ICAgcmV0dXJuIGI7CisgICAgfQorICB9OworCisgIHNjcmVlbiA9IGZ1bmN0aW9uKGEsIGIpIHsK
KyAgICByZXR1cm4gMjU1ICogKDEgLSAoMSAtIGEgLyAyNTUpICogKDEgLSBiIC8gMjU1KSk7Cisg
IH07CisKKyAgb3ZlcmxheSA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZiAoYiA8IDEyOCkgewor
ICAgICAgcmV0dXJuIDIgKiBhICogYiAvIDI1NTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJu
IDI1NSAqICgxIC0gMiAqICgxIC0gYSAvIDI1NSkgKiAoMSAtIGIgLyAyNTUpKTsKKyAgICB9Cisg
IH07CisKKyAgYnVybiA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICByZXR1cm4gMjU1ICogKDEgLSAo
MSAtIGIgLyAyNTUpIC8gKGEgLyAyNTUpKTsKKyAgfTsKKworICBkb2RnZSA9IGZ1bmN0aW9uKGEs
IGIpIHsKKyAgICBpZiAoYSA9PT0gMjU1KSB7CisgICAgICByZXR1cm4gMjU1OworICAgIH0KKyAg
ICBhID0gMjU1ICogKGIgLyAyNTUpIC8gKDEgLSBhIC8gMjU1KTsKKyAgICBpZiAoYSA+IDI1NSkg
eworICAgICAgcmV0dXJuIDI1NTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGE7CisgICAg
fQorICB9OworCisgIGJsZW5kLm5vcm1hbCA9IGJsZW5kX2YoZWFjaChub3JtYWwpKTsKKworICBi
bGVuZC5tdWx0aXBseSA9IGJsZW5kX2YoZWFjaChtdWx0aXBseSkpOworCisgIGJsZW5kLnNjcmVl
biA9IGJsZW5kX2YoZWFjaChzY3JlZW4pKTsKKworICBibGVuZC5vdmVybGF5ID0gYmxlbmRfZihl
YWNoKG92ZXJsYXkpKTsKKworICBibGVuZC5kYXJrZW4gPSBibGVuZF9mKGVhY2goZGFya2VuKSk7
CisKKyAgYmxlbmQubGlnaHRlbiA9IGJsZW5kX2YoZWFjaChsaWdodGVuKSk7CisKKyAgYmxlbmQu
ZG9kZ2UgPSBibGVuZF9mKGVhY2goZG9kZ2UpKTsKKworICBibGVuZC5idXJuID0gYmxlbmRfZihl
YWNoKGJ1cm4pKTsKKworICBjaHJvbWEuYmxlbmQgPSBibGVuZDsKKworCisgIC8qCisgICAgICBj
aHJvbWEuanMKKyAgCisgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMywgR3JlZ29yIEFpc2No
CisgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAKKyAgICAgIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgICAg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6CisgIAorICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAgICAg
ICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgIAor
ICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAgICAg
ICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgIAorICAgICAgKiBUaGUgbmFtZSBHcmVnb3IgQWlzY2ggbWF5IG5vdCBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICAgICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAgCisgICAg
ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKKyAgICAgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAgICAgIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICAgICAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR1JF
R09SIEFJU0NIIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgICAg
ICBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAgICAgIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgICAg
ICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgICAgICBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICAgICAgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLAorICAgICAgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAgCisgICAgICBAc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ2th
L2Nocm9tYS5qcworICAgKi8KKworICBjaHJvbWEuY3ViZWhlbGl4ID0gZnVuY3Rpb24oc3RhcnQs
IHJvdGF0aW9ucywgaHVlLCBnYW1tYSwgbGlnaHRuZXNzKSB7CisgICAgdmFyIGRoLCBkbDsKKyAg
ICBpZiAoc3RhcnQgPT0gbnVsbCkgeworICAgICAgc3RhcnQgPSAzMDA7CisgICAgfQorICAgIGlm
IChyb3RhdGlvbnMgPT0gbnVsbCkgeworICAgICAgcm90YXRpb25zID0gLTEuNTsKKyAgICB9Cisg
ICAgaWYgKGh1ZSA9PSBudWxsKSB7CisgICAgICBodWUgPSAxOworICAgIH0KKyAgICBpZiAoZ2Ft
bWEgPT0gbnVsbCkgeworICAgICAgZ2FtbWEgPSAxOworICAgIH0KKyAgICBpZiAobGlnaHRuZXNz
ID09IG51bGwpIHsKKyAgICAgIGxpZ2h0bmVzcyA9IFswLCAxXTsKKyAgICB9CisgICAgZGwgPSBs
aWdodG5lc3NbMV0gLSBsaWdodG5lc3NbMF07CisgICAgaWYgKHR5cGUoaHVlKSA9PT0gJ2FycmF5
JykgeworICAgICAgZGggPSBodWVbMV0gLSBodWVbMF07CisgICAgICBpZiAoZGggPT09IDApIHsK
KyAgICAgICAgaHVlID0gaHVlWzFdOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBkaCA9
IDA7CisgICAgfQorICAgIHJldHVybiBmdW5jdGlvbihmcmFjdCkgeworICAgICAgdmFyIGEsIGFt
cCwgYiwgY29zX2EsIGcsIGgsIGwsIHIsIHNpbl9hOworICAgICAgYSA9IFRXT1BJICogKChzdGFy
dCArIDEyMCkgLyAzNjAgKyByb3RhdGlvbnMgKiBmcmFjdCk7CisgICAgICBsID0gcG93KGxpZ2h0
bmVzc1swXSArIGRsICogZnJhY3QsIGdhbW1hKTsKKyAgICAgIGggPSBkaCAhPT0gMCA/IGh1ZVsw
XSArIGZyYWN0ICogZGggOiBodWU7CisgICAgICBhbXAgPSBoICogbCAqICgxIC0gbCkgLyAyOwor
ICAgICAgY29zX2EgPSBjb3MoYSk7CisgICAgICBzaW5fYSA9IHNpbihhKTsKKyAgICAgIHIgPSBs
ICsgYW1wICogKC0wLjE0ODYxICogY29zX2EgKyAxLjc4Mjc3ICogc2luX2EpOworICAgICAgZyA9
IGwgKyBhbXAgKiAoLTAuMjkyMjcgKiBjb3NfYSAtIDAuOTA2NDkgKiBzaW5fYSk7CisgICAgICBi
ID0gbCArIGFtcCAqICgrMS45NzI5NCAqIGNvc19hKTsKKyAgICAgIHJldHVybiBjaHJvbWEoY2xp
cF9yZ2IoW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdKSk7CisgICAgfTsKKyAgfTsKKworfSku
Y2FsbCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbAppbmRleCBhY2UzNzViLi42YTFiNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yMDYsNiArMjA2LDggQEAKICAgICA8c2NyaXB0
IHNyYz0iRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1hLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iRXh0ZXJuYWwvRVNMaW50L2VzbGludC5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0
IHNyYz0iRXh0ZXJuYWwvQ2hyb21hL2Nocm9tYS5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0
IHNyYz0iQmFzZS9XZWJJbnNwZWN0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQ
cm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9QbGF0Zm9ybS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yT3ZlcnJpZGVzLmNz
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JP
dmVycmlkZXMuY3NzCmluZGV4IDc0NjZhM2EuLjQ3OWMwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JPdmVycmlkZXMuY3Nz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJy
b3JPdmVycmlkZXMuY3NzCkBAIC04MywzICs4MywxMCBAQAogLkNvZGVNaXJyb3ItbGluZXdpZGdl
dCB7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDsKIH0KKworLmd1dHRlci1leGVjdXRp
b24tY291bnQgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBjb2xvcjogIzAwMCAh
aW1wb3J0YW50OworICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworICAg
IG1hcmdpbi1sZWZ0OiAxcHg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRv
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0
b3IuanMKaW5kZXggZWFiMDFiMy4uMTY5NGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCkBAIC00NDAsMTIg
KzQ0MCw0NCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3IgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9y
LmdldFJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKICAgICB9CiAKLSAgICBhZGRT
dHlsZVRvVGV4dFJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBzdHlsZUNsYXNzTmFt
ZSkKKyAgICBhZGRDbGFzc1RvVGV4dFJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBz
dHlsZUNsYXNzTmFtZSkKICAgICB7Ci0gICAgICAgIGVuZFBvc2l0aW9uLmNoICs9IDE7CisgICAg
ICAgIGVuZFBvc2l0aW9uLmNoKys7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdl
dERvYygpLm1hcmtUZXh0KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB7Y2xhc3NOYW1lOiBz
dHlsZUNsYXNzTmFtZSwgaW5jbHVzaXZlTGVmdDogdHJ1ZSwgaW5jbHVzaXZlUmlnaHQ6IHRydWV9
KTsKICAgICB9CiAKKyAgICBhZGRDc3NUb1RleHRSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbiwgY3NzU3RyaW5nKQorICAgIHsKKyAgICAgICAgZW5kUG9zaXRpb24uY2grKzsKKyAgICAg
ICAgdmFyIGRvYyA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0RG9jKCk7CisgICAgICAgIHJldHVybiBk
b2MubWFya1RleHQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHtjc3M6IGNzc1N0cmluZywg
aW5jbHVzaXZlTGVmdDogdHJ1ZSwgaW5jbHVzaXZlUmlnaHQ6IHRydWV9KTsKKyAgICB9CisKKyAg
ICBzZXRHdXR0ZXJUZXh0KGxpbmUsIHRleHQsIGNzc0NvbG9yPW51bGwpCisgICAgeworICAgICAg
ICBpZiAoIWNzc0NvbG9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBtLmNsYXNzTmFtZSA9ICJD
b2RlTWlycm9yLWxpbmVudW1iZXIgZ3V0dGVyLWV4ZWN1dGlvbi1jb3VudCI7CisgICAgICAgIHZh
ciBjc3NUZXh0ID0gWworICAgICAgICAgICAgImJhY2tncm91bmQtY29sb3I6IiArIGNzc0NvbG9y
LnRvU3RyaW5nKCksCisgICAgICAgICAgICAiYm9yZGVyLXJpZ2h0LWNvbG9yOiIgKyBjc3NDb2xv
ci5kYXJrZW4oMykuc2F0dXJhdGUoMikKKyAgICAgICAgXS5qb2luKCI7Iik7CisKKyAgICAgICAg
aWYgKHRleHQgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIG0udGV4dENvbnRlbnQgPSB0ZXh0
OworCisgICAgICAgIC8vaWYgKGNzc1RleHQpCisgICAgICAgICAgICBtLnNldEF0dHJpYnV0ZSgi
c3R5bGUiLCBjc3NUZXh0KTsKKworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEd1dHRlck1h
cmtlcihsaW5lLCAiQ29kZU1pcnJvci1saW5lbnVtYmVycyIsIG0pOworCisgICAgICAgIHZhciBs
aW5lQmFja2dyb3VuZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBs
aW5lQmFja2dyb3VuZC5zdHlsZS5iYWNrZ3JvdW5kID0gInllbGxvdyI7CisgICAgICAgIHRoaXMu
X2NvZGVNaXJyb3IuYWRkTGluZVdpZGdldChsaW5lLCBsaW5lQmFja2dyb3VuZCwge2Fib3ZlOiBm
YWxzZX0pCisgICAgfQorCiAgICAgcmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRleHRSYW5nZVRv
U2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkLCBub0hpZ2hsaWdodCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwgcG9zaXRpb24gaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uLCAicmV2ZWFsUG9zaXRpb24gY2FsbGVk
IHdpdGhvdXQgYSBTb3VyY2VDb2RlUG9zaXRpb24iKTsK
</data>
<flag name="review"
          id="289592"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="289593"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
      

    </bug>

</bugzilla>