<?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>200870</bug_id>
          
          <creation_ts>2019-08-18 14:19:14 -0700</creation_ts>
          <short_desc>[WHLSL] Generated MSL code should be indented properly to ease reading while debugging</short_desc>
          <delta_ts>2019-08-19 22:48:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1562610</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-18 14:19:14 -0700</bug_when>
    <thetext>[WHLSL] Make generated Metal code should be indented properly to ease reading while debugging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562611</commentid>
    <comment_count>1</comment_count>
      <attachid>376649</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-18 14:30:13 -0700</bug_when>
    <thetext>Created attachment 376649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562612</commentid>
    <comment_count>2</comment_count>
      <attachid>376650</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-18 14:30:44 -0700</bug_when>
    <thetext>Created attachment 376650
before.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562613</commentid>
    <comment_count>3</comment_count>
      <attachid>376651</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-18 14:31:41 -0700</bug_when>
    <thetext>Created attachment 376651
after.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562881</commentid>
    <comment_count>4</comment_count>
      <attachid>376649</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-19 18:14:48 -0700</bug_when>
    <thetext>Comment on attachment 376649
Patch

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

r=me

&gt; Source/WTF/wtf/text/StringConcatenate.h:262
&gt; +template&lt;unsigned N&gt;
&gt; +struct Indentation {
&gt; +    unsigned operator++() { return ++value; }
&gt; +    unsigned operator++(int) { return value++; }
&gt; +    unsigned operator--() { return --value; }
&gt; +    unsigned operator--(int) { return value--; }
&gt; +
&gt; +    unsigned value { 0 };
&gt; +};
&gt; +
&gt; +
&gt; +template&lt;unsigned N&gt;
&gt; +struct IndentationScope {
&gt; +    IndentationScope(Indentation&lt;N&gt;&amp; indentation)
&gt; +        : m_indentation(indentation)
&gt; +    {
&gt; +        ++m_indentation;
&gt; +    }
&gt; +    ~IndentationScope()
&gt; +    {
&gt; +        --m_indentation;
&gt; +    }
&gt; +
&gt; +    Indentation&lt;N&gt;&amp; m_indentation;
&gt; +};

Sort of a nit, so maybe it doesn&apos;t matter, but I kind of think it&apos;s nicer to localize ++/-- to increment and decrement by N, instead of making users of Indentation have to consider what N is.

For example, below, the StringTypeAdaptor for Indentation has to know what N is (in length and writeTo). If we had other users in the future, they&apos;d also have to concern themselves with what N is and what the &quot;value&quot; field is, instead of just being concerned with what &quot;value&quot; is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562952</commentid>
    <comment_count>5</comment_count>
      <attachid>376649</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-19 22:47:44 -0700</bug_when>
    <thetext>Comment on attachment 376649
Patch

Clearing flags on attachment: 376649

Committed r248892: &lt;https://trac.webkit.org/changeset/248892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562953</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-19 22:47:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562954</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-19 22:48:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/54499451&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376649</attachid>
            <date>2019-08-18 14:30:13 -0700</date>
            <delta_ts>2019-08-19 22:47:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200870-20190818143012.patch</filename>
            <type>text/plain</type>
            <size>99740</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg4MzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTE4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0hMU0xdIE1ha2UgZ2VuZXJhdGVkIE1ldGFsIGNvZGUg
c2hvdWxkIGJlIGluZGVudGVkIHByb3Blcmx5IHRvIGVhc2UgcmVhZGluZyB3aGlsZSBkZWJ1Z2dp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDg3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
c2ltcGxlIEluZGVudGF0aW9uIGNsYXNzIHRvIGFsbG93IHByb2dyYW1hdGljIGluZGVudGluZyBj
b21wYXRpYmxlIHdpdGggU3RyaW5nVHlwZUFkYXB0ZXIKKyAgICAgICAgYXdhcmUgZnVuY3Rpb25z
L2NsYXNzIChlLmcuIG1ha2VTdHJpbmcgYW5kIFN0cmluZ0J1aWxkZXIpLiBUZW1wbGF0aXplZCBv
biB0aGUgbnVtYmVyIG9mIHNwYWNlcworICAgICAgICB0byBpbmRlbnQuCisgICAgICAgIAorICAg
ICAgICBBbHNvIGFkZHMgSW5kZW50YXRpb25TY29wZSwgd2hpY2ggdXNlcyBSQUlJIHRvIGluY3Jl
bWVudC9kZWNyZW1lbnQgdGhlIGluZGVudGF0aW9uIHZhbHVlLgorCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaDoKKyAgICAgICAgKFdURjo6SW5kZW50YXRpb246Om9wZXJh
dG9yKyspOgorICAgICAgICAoV1RGOjpJbmRlbnRhdGlvbjo6b3BlcmF0b3ItLSk6CisgICAgICAg
IChXVEY6OkluZGVudGF0aW9uU2NvcGU6OkluZGVudGF0aW9uU2NvcGUpOgorICAgICAgICAoV1RG
OjpJbmRlbnRhdGlvblNjb3BlOjp+SW5kZW50YXRpb25TY29wZSk6CisKIDIwMTktMDgtMTggIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFVzZSB0
aGUgUElEIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgd2hlbiBpc3N1aW5nIGxvY2FsIGZpbGUg
cmVhZCBzYW5kYm94IGV4dGVuc2lvbnMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmgJKHJldmlzaW9uIDI0ODgzMykKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw1OCBAQCBwcml2
YXRlOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFVuZGVybHlpbmdFbGVtZW50VHlwZT4gbV91bmRl
cmx5aW5nQWRhcHRlcjsKIH07CiAKK3RlbXBsYXRlPHVuc2lnbmVkIE4+CitzdHJ1Y3QgSW5kZW50
YXRpb24geworICAgIHVuc2lnbmVkIG9wZXJhdG9yKysoKSB7IHJldHVybiArK3ZhbHVlOyB9Cisg
ICAgdW5zaWduZWQgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuIHZhbHVlKys7IH0KKyAgICB1bnNp
Z25lZCBvcGVyYXRvci0tKCkgeyByZXR1cm4gLS12YWx1ZTsgfQorICAgIHVuc2lnbmVkIG9wZXJh
dG9yLS0oaW50KSB7IHJldHVybiB2YWx1ZS0tOyB9CisKKyAgICB1bnNpZ25lZCB2YWx1ZSB7IDAg
fTsKK307CisKKwordGVtcGxhdGU8dW5zaWduZWQgTj4KK3N0cnVjdCBJbmRlbnRhdGlvblNjb3Bl
IHsKKyAgICBJbmRlbnRhdGlvblNjb3BlKEluZGVudGF0aW9uPE4+JiBpbmRlbnRhdGlvbikKKyAg
ICAgICAgOiBtX2luZGVudGF0aW9uKGluZGVudGF0aW9uKQorICAgIHsKKyAgICAgICAgKyttX2lu
ZGVudGF0aW9uOworICAgIH0KKyAgICB+SW5kZW50YXRpb25TY29wZSgpCisgICAgeworICAgICAg
ICAtLW1faW5kZW50YXRpb247CisgICAgfQorCisgICAgSW5kZW50YXRpb248Tj4mIG1faW5kZW50
YXRpb247Cit9OworCit0ZW1wbGF0ZTx1bnNpZ25lZCBOPiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRl
cjxJbmRlbnRhdGlvbjxOPiwgdm9pZD4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVy
KEluZGVudGF0aW9uPE4+IGluZGVudGF0aW9uKQorICAgICAgICA6IG1faW5kZW50YXRpb24geyBp
bmRlbnRhdGlvbiB9CisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9pbmRlbnRhdGlvbi52YWx1ZSAqIE47CisgICAgfQorCisgICAg
Ym9vbCBpczhCaXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5
cGUqIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgc3RkOjpmaWxsX24oZGVzdGluYXRpb24s
IG1faW5kZW50YXRpb24udmFsdWUgKiBOLCAnICcpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBJ
bmRlbnRhdGlvbjxOPiBtX2luZGVudGF0aW9uOworfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRlcj4KIGlubGluZSBib29sIGFyZThCaXQoQWRhcHRlciBhZGFwdGVyKQogewpAQCAtMzA4LDYg
KzM2MCw4IEBAIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6SW5kZW50YXRpb247Cit1c2luZyBXVEY6Oklu
ZGVudGF0aW9uU2NvcGU7CiB1c2luZyBXVEY6Om1ha2VTdHJpbmc7CiB1c2luZyBXVEY6OnBhZDsK
IHVzaW5nIFdURjo6dHJ5TWFrZVN0cmluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODgz
MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDM5IEBACisyMDE5LTA4LTE4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV0hMU0xdIE1ha2UgZ2VuZXJhdGVkIE1ldGFsIGNvZGUgc2hvdWxkIGJlIGluZGVudGVk
IHByb3Blcmx5IHRvIGVhc2UgcmVhZGluZyB3aGlsZSBkZWJ1Z2dpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDg3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgaW5kZW50YXRpb24gb2YgZ2Vu
ZXJhdGVkIE1ldGFsIGNvZGUgdXNpbmcgdGhlIG5ldyBXVEY6OkluZGVudGF0aW9uIGFuZCBXVEY6
OkluZGVudGF0aW9uU2NvcGUKKyAgICAgICAgY2xhc3Nlcy4gVGhpcyBtYWtlcyByZWFkaW5nIHRo
ZSBnZW5lcmF0ZWQgTWV0YWwgY29kZSBtdWNoIGVhc2llciB3aGlsZSBkZWJ1Z2dpbmcgaXQsIGFu
ZCBkb2VzIG5vdAorICAgICAgICBzZWVtIHRvIGludHJvZHVjZSBhbnkgcGVyZm9ybWFuY2UgcmVn
cmVzc2lvbiAoSSBtZWFzdXJlZCBubyBkaWZmZXJlbmNlIG9uIGNvbXB1dGVfYm9pZHMuaHRtbCB0
ZXN0KS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQ
b2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VIZWxwZXJUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1Jl
c291cmNlc0FuZE5hbWVkQnVpbHRJbnMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFs
OjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dFNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlZlcnRleEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
TWV0YWw6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2spOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dEhlbHBlclR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnJhZ21lbnRF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0UGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1
dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWdu
YXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRW50cnlQb2lu
dFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6aW5saW5lTmF0aXZlRnVuY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5p
dGlvbik6CisKIDIwMTktMDgtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFRpZHkgdXAgY2hlY2tzIHRvIHNlZSBpZiBhIGNoYXJhY3RlciBpcyBpbiB0aGUgTGF0
aW4tMSByYW5nZSBieSB1c2luZyBpc0xhdGluMSBjb25zaXN0ZW50bHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xk
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAJKHJldmlzaW9uIDI0ODgzMykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQ
b2ludFNjYWZmb2xkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDM5ICsxMzksNDIgQEAg
RW50cnlQb2ludFNjYWZmb2xkaW5nOjpFbnRyeVBvaW50U2NhZmZvbAogICAgICAgICBtX3BhcmFt
ZXRlclZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQobV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUo
KSk7CiB9CiAKLXZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UmVzb3VyY2VIZWxwZXJU
eXBlcyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQordm9pZCBFbnRyeVBvaW50U2NhZmZv
bGRpbmc6OmVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxk
ZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJz
dHJ1Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPj4gc3RydWN0SXRlbXM7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgpOyAr
K2opIHsKLSAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFwLmZpbmQoJm1f
bGF5b3V0W2ldLmJpbmRpbmdzW2pdKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jl
c291cmNlTWFwLmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
YXV0byYgdHlwZSA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVu
bmFtZWRUeXBlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpczxBU1Q6OlVubmFtZWRU
eXBlPih0eXBlKSAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1l
ZFR5cGU+KHR5cGUpKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIHJlZmVyZW5jZVR5cGUgPSBk
b3duY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHR5
cGUpKTsKLSAgICAgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZShyZWZlcmVuY2VUeXBlLmVsZW1lbnRUeXBlKCkpOwotICAgICAg
ICAgICAgICAgIGF1dG8gYWRkcmVzc1NwYWNlID0gdG9TdHJpbmcocmVmZXJlbmNlVHlwZS5hZGRy
ZXNzU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRC
aW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAg
ICAgYXV0byBpbmRleCA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uaW5k
ZXg7Ci0gICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlu
ZGV4LCBtYWtlU3RyaW5nKGFkZHJlc3NTcGFjZSwgIiAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIs
IGVsZW1lbnROYW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byBsZW5ndGhJbmZvcm1hdGlvbiA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVk
QmluZGluZ3Nbal0ubGVuZ3RoSW5mb3JtYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHN0cnVj
dEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihsZW5ndGhJbmZvcm1hdGlvbi0+aW5kZXgsIG1h
a2VTdHJpbmcoInVpbnQyICIsIGxlbmd0aEluZm9ybWF0aW9uLT5lbGVtZW50TmFtZSwgIiBbW2lk
KCIsIGxlbmd0aEluZm9ybWF0aW9uLT5pbmRleCwgIildXTsiKSkpOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih0eXBlKSkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHR5cGUpKTsKLSAgICAgICAgICAgICAgICBhdXRv
IG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5
cGUpOwotICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vw
c1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAgIGF1dG8g
aW5kZXggPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmluZGV4OwotICAg
ICAgICAgICAgICAgIHN0cnVjdEl0ZW1zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgbWFr
ZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1tpZCgiLCBpbmRl
eCwgIildXTsiKSkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJzdHJ1
Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKTsKKyAgICAgICAg
eworICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOworICAgICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPj4gc3RydWN0SXRlbXM7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUo
KTsgKytqKSB7CisgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAu
ZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0pOworICAgICAgICAgICAgICAgIGlmIChpdGVy
YXRvciA9PSBtX3Jlc291cmNlTWFwLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiB0eXBlID0gbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRz
W2l0ZXJhdG9yLT52YWx1ZV0udW5uYW1lZFR5cGUtPnVuaWZ5Tm9kZSgpOworICAgICAgICAgICAg
ICAgIGlmIChpczxBU1Q6OlVubmFtZWRUeXBlPih0eXBlKSAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5
cGU+KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHR5cGUpKSkgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvJiByZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlPihk
b3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih0eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJlZmVy
ZW5jZVR5cGUuZWxlbWVudFR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkcmVz
c1NwYWNlID0gdG9TdHJpbmcocmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1l
ZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOworICAgICAgICAgICAgICAgICAgICBhdXRvIGluZGV4
ID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5pbmRleDsKKyAgICAgICAg
ICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtl
U3RyaW5nKGFkZHJlc3NTcGFjZSwgIiAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIsIGVsZW1lbnRO
YW1lLCAiIFtbaWQoIiwgaW5kZXgsICIpXV07IikpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gbGVuZ3RoSW5mb3JtYXRpb24gPSBtX25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRp
bmdzW2pdLmxlbmd0aEluZm9ybWF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
SXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGxlbmd0aEluZm9ybWF0aW9uLT5pbmRleCwgbWFr
ZVN0cmluZygidWludDIgIiwgbGVuZ3RoSW5mb3JtYXRpb24tPmVsZW1lbnROYW1lLCAiIFtbaWQo
IiwgbGVuZ3RoSW5mb3JtYXRpb24tPmluZGV4LCAiKV1dOyIpKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih0eXBlKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih0eXBlKSk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKG5hbWVkVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBt
X25hbWVkQmluZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5k
aW5nc1tqXS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0SXRlbXMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKGluZGV4LCBtYWtlU3RyaW5nKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVt
ZW50TmFtZSwgIiBbW2lkKCIsIGluZGV4LCAiKV1dOyIpKSk7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RkOjpzb3J0KHN0cnVjdEl0ZW1zLmJlZ2luKCks
IHN0cnVjdEl0ZW1zLmVuZCgpLCBbXShjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQsIFN0cmluZz4m
IGxlZnQsIGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPiYgcmlnaHQpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbGVmdC5maXJzdCA8IHJpZ2h0LmZpcnN0OworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0ZW0gOiBzdHJ1Y3RJdGVt
cykKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIHN0cnVjdEl0
ZW0uc2Vjb25kLCAnXG4nKTsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnNvcnQoc3RydWN0SXRl
bXMuYmVnaW4oKSwgc3RydWN0SXRlbXMuZW5kKCksIFtdKGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgU3RyaW5nPiYgbGVmdCwgY29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+JiByaWdo
dCkgewotICAgICAgICAgICAgcmV0dXJuIGxlZnQuZmlyc3QgPCByaWdodC5maXJzdDsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RydWN0SXRlbSA6IHN0cnVjdEl0ZW1z
KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAiLCBzdHJ1Y3RJdGVtLnNl
Y29uZCwgJ1xuJyk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuXG4iKTsKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifTtcblxuIik7CiAgICAgfQogfQog
CkBAIC0zMDUsMTAgKzMwOCwxMCBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdE1h
bmdsZWRPCiAgICAgfQogfQogCi12b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFj
a1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikK
K3ZvaWQgRW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRC
dWlsdElucyhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRl
bnQpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1l
dGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFyYW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUo
KSksICcgJywgbV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byB2YXJp
YWJsZU5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7CkBAIC0zMjYsMTMg
KzMyOSwxNSBAQCB2b2lkIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFja1JlCiAgICAg
ICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVu
dFR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICAgICAgInNpemVfdCAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgdmFy
aWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLnk7XG4iLAotICAgICAgICAgICAg
ICAgICAgICBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwg
IiA8PCAzMjtcbiIsCi0gICAgICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIg
PSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIHwgIiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0
aEVsZW1lbnROYW1lLCAiLng7XG4iLAotICAgICAgICAgICAgICAgICAgICBsZW5ndGhUZW1wb3Jh
cnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiAvIHNpemVvZigiLCBtYW5nbGVk
VHlwZU5hbWUsICIpO1xuIiwKLSAgICAgICAgICAgICAgICAgICAgImlmICgiLCBsZW5ndGhUZW1w
b3JhcnlOYW1lLCAiID4gMHhGRkZGRkZGRikgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9IDB4
RkZGRkZGRkY7XG4iCisgICAgICAgICAgICAgICAgICAgIGluZGVudCwgInNpemVfdCAiLCBsZW5n
dGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnRO
YW1lLCAiLnk7XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIGxlbmd0aFRlbXBvcmFy
eU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIDw8IDMyO1xuIiwKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVt
cG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwg
Ii54O1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBsZW5ndGhUZW1wb3JhcnlOYW1l
LCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiAvIHNpemVvZigiLCBtYW5nbGVkVHlwZU5h
bWUsICIpO1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiaWYgKCIsIGxlbmd0aFRl
bXBvcmFyeU5hbWUsICIgPiAweEZGRkZGRkZGKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZW50LCAiICAgICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAweEZGRkZGRkZGO1xuIgogICAg
ICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKICAgICAgICAgICAgICAgICBlbWl0TWFuZ2xl
ZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKICAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgIiA9IHsgIiwgdmFyaWFibGVOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgbGVuZ3RoVGVt
cG9yYXJ5TmFtZSwgIikgfTtcbiIKQEAgLTM0MSw2ICszNDYsNyBAQCB2b2lkIEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6ZW1pdFVucGFja1JlCiAgICAgICAgICAgICAgICAgYXV0byYgcGF0aCA9IG1f
ZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnBhdGg7CiAgICAgICAgICAg
ICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGlu
Z3Nbal0uZWxlbWVudE5hbWU7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKICAgICAgICAgICAgICAgICBlbWl0TWFuZ2xlZElu
cHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKICAgICAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7
CiAgICAgICAgICAgICB9CkBAIC0zNTMsNiArMzU5LDcgQEAgdm9pZCBFbnRyeVBvaW50U2NhZmZv
bGRpbmc6OmVtaXRVbnBhY2tSZQogICAgICAgICBhdXRvJiB2YXJpYWJsZU5hbWUgPSBuYW1lZEJ1
aWx0SW4udmFyaWFibGVOYW1lOwogICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqaXRlbS51bm5hbWVkVHlwZSk7CiAKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50KTsKICAgICAgICAgZW1pdE1hbmdsZWRJbnB1dFBh
dGgoc3RyaW5nQnVpbGRlciwgcGF0aCk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIg
PSAiLCBtYW5nbGVkVHlwZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpOwogICAgIH0K
QEAgLTM5MCw2NiArMzk3LDcyIEBAIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6VmVydGV4
RW50cnkKICAgICB9CiB9CiAKLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0
SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKK3ZvaWQgVmVydGV4RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5n
QnVpbGRlciwgSW5kZW50YXRpb248ND4gaW5kZW50KQogewotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKTsKLSAgICBmb3IgKGF1
dG8mIG5hbWVkU3RhZ2VJbiA6IG1fbmFtZWRTdGFnZUlucykgewotICAgICAgICBhdXRvIG1hbmds
ZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBvaW50
SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51bm5hbWVk
VHlwZSk7Ci0gICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5h
bWU7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlSW5kZXggPSBuYW1lZFN0YWdlSW4uYXR0cmlidXRl
SW5kZXg7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVO
YW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAi
KV1dO1xuIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAic3RydWN0ICIsIG1f
c3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7CisgICAgeworICAgICAgICBJbmRlbnRhdGlvblNj
b3BlIHNjb3BlKGluZGVudCk7CisgICAgICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9u
YW1lZFN0YWdlSW5zKSB7CisgICAgICAgICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVk
U3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS51bm5hbWVkVHlwZSk7CisgICAgICAgICAg
ICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOworICAgICAgICAg
ICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAn
ICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xu
Iik7CisgICAgICAgIH0KICAgICB9CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAg
ICJ9O1xuXG4iCi0gICAgICAgICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIK
KyAgICAgICAgaW5kZW50LCAifTtcblxuIiwKKyAgICAgICAgaW5kZW50LCAic3RydWN0ICIsIG1f
cmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCiAgICAgKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07Ci0gICAgICAgIGF1
dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1l
OwotICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5h
bWU7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1
dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIGlu
dGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7
CisgICAgeworICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1z
Lm91dHB1dHNbaV07CisgICAgICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1l
ZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKKyAgICAgICAgICAgIGF1dG8gZWxlbWVudE5h
bWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKKyAgICAgICAgICAgIGF1dG8gYXR0
cmlidXRlID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBpbnRlcm5hbFR5cGVOYW1lLCAn
ICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpOworICAgICAgICB9CiAgICAg
fQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAifTtcblxuIgotICAgICk7Cisg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifTtcblxuIik7CiAgICAgCi0gICAgZW1p
dFJlc291cmNlSGVscGVyVHlwZXMoc3RyaW5nQnVpbGRlcik7CisgICAgZW1pdFJlc291cmNlSGVs
cGVyVHlwZXMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKIH0KIAotdm9pZCBWZXJ0ZXhFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRl
ciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUpCit2b2lkIFZlcnRleEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6ZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBNYW5nbGVkRnVuY3Rpb25OYW1lIGZ1bmN0aW9uTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50
KQogewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ2ZXJ0ZXggIiwgbV9yZXR1cm5TdHJ1Y3RO
YW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAnICcsIG1f
c3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7CisgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaW5kZW50LCAidmVydGV4ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5j
dGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwogICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJp
bmdCdWlsZGVyLCBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6Olllcyk7CiAgICAgZW1pdEJ1aWx0SW5z
U2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
XG4iKTsKIH0KIAotdm9pZCBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRVbnBhY2so
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKK3ZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZm
b2xkaW5nOjplbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0
aW9uPDQ+IGluZGVudCkKIHsKLSAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElu
cyhzdHJpbmdCdWlsZGVyKTsKKyAgICBlbWl0VW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElu
cyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQpOwogCiAgICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4g
OiBtX25hbWVkU3RhZ2VJbnMpIHsKICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0
ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKICAg
ICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7CisgICAg
ICAgIAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQpOwogICAgICAgICBlbWl0
TWFuZ2xlZElucHV0UGF0aChzdHJpbmdCdWlsZGVyLCBwYXRoKTsKICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5h
bWUsICI7XG4iKTsKICAgICB9CiB9CiAKLXZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkVmFyaWFibGVO
YW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lIG91dHB1dFZhcmlhYmxl
TmFtZSkKK3ZvaWQgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFibGVO
YW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lIG91dHB1dFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248
ND4gaW5kZW50KQogewotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1fcmV0dXJuU3RydWN0TmFt
ZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChpbmRlbnQsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUs
ICI7XG4iKTsKICAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCkgPT0gMSAm
JiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewogICAgICAgICBh
dXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1lOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5h
bWUsICIgPSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChpbmRlbnQsIG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwg
IiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNb
aV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVk
T3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRy
eVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5
cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaW5kZW50LCBvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAi
LCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lKTsKICAgICAgICAgZW1p
dE1hbmdsZWRPdXRwdXRQYXRoKHN0cmluZ0J1aWxkZXIsIHBhdGgpOwogICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgIH0KQEAgLTQ4OSw2NiArNTAyLDcyIEBAIEZyYWdt
ZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpGcmFnbWVudEUKICAgICB9CiB9CiAKLXZvaWQgRnJh
Z21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVy
JiBzdHJpbmdCdWlsZGVyKQordm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1p
dEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+
IGluZGVudCkKIHsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJ
blN0cnVjdE5hbWUsICIge1xuIik7Ci0gICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25h
bWVkU3RhZ2VJbnMpIHsKLSAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdl
SW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwotICAgICAgICBhdXRvIGVs
ZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwotICAgICAgICBhdXRvIGF0dHJp
YnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4OwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwg
IiBbW3VzZXIodXNlciIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIik7CisgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoaW5kZW50LCAic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xu
Iik7CisgICAgeworICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7CisgICAg
ICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CisgICAgICAg
ICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZSgqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2lu
dEl0ZW1zXS51bm5hbWVkVHlwZSk7CisgICAgICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFt
ZWRTdGFnZUluLmVsZW1lbnROYW1lOworICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9
IG5hbWVkU3RhZ2VJbi5hdHRyaWJ1dGVJbmRleDsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGluZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNl
cih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgIn07XG5cbiIKLSAgICAgICAgInN0cnVj
dCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIgorICAgICAgICBpbmRlbnQsICJ9O1xuXG4i
LAorICAgICAgICBpbmRlbnQsICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIK
ICAgICApOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0
cHV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0c1tpXTsKLSAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1f
bmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7Ci0gICAgICAgIGF1dG8gZWxlbWVudE5h
bWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKLSAgICAgICAgYXV0byBhdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVGb3JTZW1hbnRpYygqb3V0cHV0SXRlbS5zZW1hbnRpYyk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVt
ZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKTsKKyAgICB7CisgICAgICAgIEluZGVudGF0
aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBhdXRv
JiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKKyAgICAgICAgICAg
IGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVO
YW1lOworICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVs
ZW1lbnROYW1lOworICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVGb3JTZW1h
bnRpYygqb3V0cHV0SXRlbS5zZW1hbnRpYyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChpbmRlbnQsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0
cmlidXRlLCAiO1xuIik7CisgICAgICAgIH0KICAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCi0gICAgICAgICJ9O1xuXG4iCi0gICAgKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChp
bmRlbnQsICJ9O1xuXG4iKTsKIAotICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKHN0cmluZ0J1
aWxkZXIpOworICAgIGVtaXRSZXNvdXJjZUhlbHBlclR5cGVzKHN0cmluZ0J1aWxkZXIsIGluZGVu
dCk7CiB9CiAKLXZvaWQgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRTaWduYXR1
cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSBmdW5j
dGlvbk5hbWUpCit2b2lkIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0U2lnbmF0
dXJlKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIE1hbmdsZWRGdW5jdGlvbk5hbWUgZnVu
Y3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCiB7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoImZyYWdtZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUs
ICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAi
IFtbc3RhZ2VfaW5dXSIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgImZyYWdt
ZW50ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFn
ZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5d
XSIpOwogICAgIGVtaXRSZXNvdXJjZVNpZ25hdHVyZShzdHJpbmdCdWlsZGVyLCBJbmNsdWRlUHJl
Y2VkaW5nQ29tbWE6Olllcyk7CiAgICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxk
ZXIsIEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6WWVzKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnKScpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpXG4iKTsKIH0KIAotdm9pZCBGcmFn
bWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBzdHJp
bmdCdWlsZGVyKQordm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFVucGFj
ayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJbmRlbnRhdGlvbjw0PiBpbmRlbnQpCiB7
Ci0gICAgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlcik7
CisgICAgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoc3RyaW5nQnVpbGRlciwg
aW5kZW50KTsKIAogICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5z
KSB7CiAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRT
dGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnBhdGg7CiAgICAgICAgIGF1dG8mIGVsZW1l
bnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOworCisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKGluZGVudCk7CiAgICAgICAgIGVtaXRNYW5nbGVkSW5wdXRQYXRoKHN0cmluZ0J1
aWxkZXIsIHBhdGgpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgbV9zdGFn
ZUluUGFyYW1ldGVyTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwogICAgIH0KIH0KIAot
dm9pZCBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRl
ciYgc3RyaW5nQnVpbGRlciwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBpbnB1dFZhcmlhYmxlTmFtZSwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSBvdXRwdXRWYXJpYWJsZU5hbWUpCit2b2lkIEZyYWdtZW50RW50
cnlQb2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
LCBNYW5nbGVkVmFyaWFibGVOYW1lIGlucHV0VmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVO
YW1lIG91dHB1dFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4gaW5kZW50KQogewotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJs
ZU5hbWUsICI7XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG1fcmV0dXJu
U3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICBpZiAobV9l
bnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMu
b3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1f
bmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnB1dFZhcmlh
YmxlTmFtZSwgIjtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIG91
dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVO
YW1lLCAiO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAg
ICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5
cGVOYW1lOwogICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tp
XS5wYXRoOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUs
ICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFy
aWFibGVOYW1lKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBvdXRwdXRW
YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAn
KCcsIGlucHV0VmFyaWFibGVOYW1lKTsKICAgICAgICAgZW1pdE1hbmdsZWRPdXRwdXRQYXRoKHN0
cmluZ0J1aWxkZXIsIHBhdGgpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIp
OwogICAgIH0KQEAgLTU1OSwyNSArNTc4LDI1IEBAIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OkNvbXB1dGVFbnQKIHsKIH0KIAotdm9pZCBDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
OjplbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKK3ZvaWQgQ29t
cHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6ZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXIm
IHN0cmluZ0J1aWxkZXIsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKIHsKLSAgICBlbWl0UmVzb3Vy
Y2VIZWxwZXJUeXBlcyhzdHJpbmdCdWlsZGVyKTsKKyAgICBlbWl0UmVzb3VyY2VIZWxwZXJUeXBl
cyhzdHJpbmdCdWlsZGVyLCBpbmRlbnQpOwogfQogCi12b2lkIENvbXB1dGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFu
Z2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUpCit2b2lkIENvbXB1dGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OmVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgTWFu
Z2xlZEZ1bmN0aW9uTmFtZSBmdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+IGluZGVudCkKIHsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAn
KCcpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgImtlcm5lbCB2b2lkICIsIGZ1
bmN0aW9uTmFtZSwgJygnKTsKICAgICBib29sIGFkZGVkVG9TaWduYXR1cmUgPSBlbWl0UmVzb3Vy
Y2VTaWduYXR1cmUoc3RyaW5nQnVpbGRlciwgSW5jbHVkZVByZWNlZGluZ0NvbW1hOjpObyk7CiAg
ICAgZW1pdEJ1aWx0SW5zU2lnbmF0dXJlKHN0cmluZ0J1aWxkZXIsIGFkZGVkVG9TaWduYXR1cmUg
PyBJbmNsdWRlUHJlY2VkaW5nQ29tbWE6OlllcyA6IEluY2x1ZGVQcmVjZWRpbmdDb21tYTo6Tm8p
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIilcbiIpOwogfQogCi12b2lkIENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmVtaXRV
bnBhY2soU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKK3ZvaWQgQ29tcHV0ZUVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6ZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBJ
bmRlbnRhdGlvbjw0PiBpbmRlbnQpCiB7Ci0gICAgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVk
QnVpbHRJbnMoc3RyaW5nQnVpbGRlcik7CisgICAgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVk
QnVpbHRJbnMoc3RyaW5nQnVpbGRlciwgaW5kZW50KTsKIH0KIAotdm9pZCBDb21wdXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nOjplbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxl
TmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSkKK3ZvaWQgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9s
ZGluZzo6ZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIE1hbmds
ZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5o
CShyZXZpc2lvbiAyNDg4MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NCwxNyArNTQsMTcgQEAgY2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5FbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW1pdFVucGFjayhTdHJpbmdCdWlsZGVyJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxl
TmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9u
PDQ+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRlciYs
IE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1l
IGV4aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRhdGlvbjw0
PikgPSAwOwogCiAgICAgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBwYXJhbWV0ZXJWYXJp
YWJsZXMoKSB7IHJldHVybiBtX3BhcmFtZXRlclZhcmlhYmxlczsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiwgSW50cmlu
c2ljcyYsIFR5cGVOYW1lciYsIEVudHJ5UG9pbnRJdGVtcyYsIEhhc2hNYXA8QmluZGluZyosIHNp
emVfdD4mIHJlc291cmNlTWFwLCBMYXlvdXQmLCBzdGQ6OmZ1bmN0aW9uPE1hbmdsZWRWYXJpYWJs
ZU5hbWUoKT4mJiBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpOwogCi0gICAgdm9pZCBlbWl0UmVz
b3VyY2VIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJik7CisgICAgdm9pZCBlbWl0UmVzb3VyY2VI
ZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pOwogCiAgICAgZW51bSBj
bGFzcyBJbmNsdWRlUHJlY2VkaW5nQ29tbWEgewogICAgICAgICBZZXMsCkBAIC03NSw3ICs3NSw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZW1pdE1hbmdsZWRJbnB1dFBhdGgoU3RyaW5nQnVp
bGRlciYsIFZlY3RvcjxTdHJpbmc+JiBwYXRoKTsKICAgICB2b2lkIGVtaXRNYW5nbGVkT3V0cHV0
UGF0aChTdHJpbmdCdWlsZGVyJiwgVmVjdG9yPFN0cmluZz4mIHBhdGgpOwotICAgIHZvaWQgZW1p
dFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoU3RyaW5nQnVpbGRlciYpOworICAgIHZv
aWQgZW1pdFVucGFja1Jlc291cmNlc0FuZE5hbWVkQnVpbHRJbnMoU3RyaW5nQnVpbGRlciYsIElu
ZGVudGF0aW9uPDQ+KTsKIAogICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBtX2Z1bmN0aW9u
RGVmaW5pdGlvbjsKICAgICBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7CkBAIC0xMTgsMTAgKzEx
OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5n
KCkgPSBkZWZhdWx0OwogCiBwcml2YXRlOgotICAgIHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0cmlu
Z0J1aWxkZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRTaWduYXR1cmUoU3RyaW5nQnVpbGRl
ciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZW1pdFVucGFjayhT
dHJpbmdCdWlsZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0UGFjayhTdHJpbmdCdWlsZGVy
JiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1ZhcmlhYmxlTmFtZSwgTWFuZ2xlZFZhcmlh
YmxlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRl
ciYsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKKyAgICB2b2lkIGVtaXRTaWduYXR1cmUoU3Ry
aW5nQnVpbGRlciYsIE1hbmdsZWRGdW5jdGlvbk5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYsIEluZGVudGF0aW9uPDQ+KSBv
dmVycmlkZTsKKyAgICB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFi
bGVOYW1lIGV4aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lLCBJbmRlbnRh
dGlvbjw0Pikgb3ZlcnJpZGU7CiAKICAgICBIYXNoTWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVf
dD4mIG1fbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXM7CiAgICAgTWFuZ2xlZFR5cGVOYW1lIG1fc3Rh
Z2VJblN0cnVjdE5hbWU7CkBAIC0xNDgsMTAgKzE0OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBlbWl0SGVscGVyVHlwZXMoU3RyaW5nQnVpbGRlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1bmN0aW9uTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBlbWl0VW5wYWNrKFN0cmluZ0J1aWxkZXImKSBvdmVycmlkZTsK
LSAgICB2b2lkIGVtaXRQYWNrKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkVmFyaWFibGVOYW1lIGV4
aXN0aW5nVmFyaWFibGVOYW1lLCBNYW5nbGVkVmFyaWFibGVOYW1lKSBvdmVycmlkZTsKKyAgICB2
b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJy
aWRlOworICAgIHZvaWQgZW1pdFNpZ25hdHVyZShTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZEZ1bmN0
aW9uTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOworICAgIHZvaWQgZW1pdFVucGFjayhT
dHJpbmdCdWlsZGVyJiwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOworICAgIHZvaWQgZW1pdFBh
Y2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5hbWUgZXhpc3RpbmdWYXJpYWJsZU5h
bWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUsIEluZGVudGF0aW9uPDQ+KSBvdmVycmlkZTsKIAogICAg
IE1hbmdsZWRUeXBlTmFtZSBtX3N0YWdlSW5TdHJ1Y3ROYW1lOwogICAgIE1hbmdsZWRUeXBlTmFt
ZSBtX3JldHVyblN0cnVjdE5hbWU7CkBAIC0xNzcsMTAgKzE3NywxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIGVtaXRIZWxwZXJUeXBlcyhTdHJpbmdCdWlsZGVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVkRnVuY3Rpb25O
YW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIGVtaXRVbnBhY2soU3RyaW5nQnVpbGRlciYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZW1pdFBhY2soU3RyaW5nQnVpbGRlciYsIE1hbmdsZWRWYXJpYWJsZU5h
bWUgZXhpc3RpbmdWYXJpYWJsZU5hbWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZW1pdEhlbHBlclR5cGVzKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikg
b3ZlcnJpZGU7CisgICAgdm9pZCBlbWl0U2lnbmF0dXJlKFN0cmluZ0J1aWxkZXImLCBNYW5nbGVk
RnVuY3Rpb25OYW1lLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbWl0VW5w
YWNrKFN0cmluZ0J1aWxkZXImLCBJbmRlbnRhdGlvbjw0Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBl
bWl0UGFjayhTdHJpbmdCdWlsZGVyJiwgTWFuZ2xlZFZhcmlhYmxlTmFtZSBleGlzdGluZ1Zhcmlh
YmxlTmFtZSwgTWFuZ2xlZFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248ND4pIG92ZXJyaWRlOwog
fTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xGdW5jdGlvbldyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAJKHJldmlzaW9u
IDI0ODgzMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRnVuY3Rpb25Xcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDcgQEAg
cHJvdGVjdGVkOgogICAgIExheW91dCYgbV9sYXlvdXQ7CiAgICAgdW5zaWduZWQgbV92YXJpYWJs
ZUNvdW50IHsgMCB9OwogICAgIE9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtP
dXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZTsKKyAgICBJbmRlbnRhdGlvbjw0PiBtX2luZGVu
dCB7IDAgfTsKIH07CiAKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6
Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKQpAQCAtMjIxLDIzICsyMjIsMjggQEAgdm9pZCBG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBpZiAoIWVudHJ5UG9p
bnRTY2FmZm9sZGluZykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9lbnRyeVBvaW50
U2NhZmZvbGRpbmcgPSBXVEZNb3ZlKGVudHJ5UG9pbnRTY2FmZm9sZGluZyk7Ci0gICAgICAgIG1f
ZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0SGVscGVyVHlwZXMobV9zdHJpbmdCdWlsZGVyKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgbV9lbnRyeVBv
aW50U2NhZmZvbGRpbmctPmVtaXRTaWduYXR1cmUobV9zdHJpbmdCdWlsZGVyLCBpdGVyYXRvci0+
dmFsdWUpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIge1xuIik7Ci0gICAgICAg
IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0VW5wYWNrKG1fc3RyaW5nQnVpbGRlcik7Ci0g
ICAgCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3ZhcmlhYmxlTWFwcGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0s
IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5wYXJhbWV0ZXJWYXJpYWJsZXMoKVtpXSk7Ci0gICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwor
ICAgICAgICAKKyAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRIZWxwZXJUeXBl
cyhtX3N0cmluZ0J1aWxkZXIsIG1faW5kZW50KTsKKyAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZv
bGRpbmctPmVtaXRTaWduYXR1cmUobV9zdHJpbmdCdWlsZGVyLCBpdGVyYXRvci0+dmFsdWUsIG1f
aW5kZW50KTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIntcbiIp
OworICAgICAgICB7CisgICAgICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3BlKG1faW5kZW50
KTsKKworICAgICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmVtaXRVbnBhY2sobV9z
dHJpbmdCdWlsZGVyLCBtX2luZGVudCk7CisgICAgICAgIAorICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZhcmlhYmxlTWFwcGluZy5h
ZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0sIG1fZW50cnlQb2ludFNjYWZm
b2xkaW5nLT5wYXJhbWV0ZXJWYXJpYWJsZXMoKVtpXSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2so
KSk7CisgICAgICAgICAgICBBU1NFUlQobV9zdGFjay5pc0VtcHR5KCkpOwogICAgICAgICB9Ci0g
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Ci0g
ICAgICAgIEFTU0VSVChtX3N0YWNrLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIn1cbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG5cbiIp
OworCiAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICBBU1NFUlQobV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPT0gbnVsbHB0cik7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwg
JygnKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIGl0
ZXJhdG9yLT52YWx1ZSwgJygnKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBh
dXRvJiBwYXJhbWV0ZXIgPSBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldOwogICAg
ICAgICAgICAgaWYgKGkpCkBAIC0yNjYsMTAgKzI3MiwxMyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6dmlzaXQoQVNUCiAKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKIHsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ7
XG4iKTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVudCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgifVxuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIntc
biIpOworICAgIHsKKyAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShtX2luZGVudCk7Cisg
ICAgICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKQorICAgICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVudCk7CisgICAgfQorICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QnJlYWsmKQpAQCAtMjc3LDEzICsyODYsMTMgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIEFTU0VSVChtX2N1cnJl
bnRCcmVha0NvbnRleHQpOwogICAgIHN3aXRjaCAoKm1fY3VycmVudEJyZWFrQ29udGV4dCkgewog
ICAgIGNhc2UgQnJlYWtDb250ZXh0OjpTd2l0Y2g6Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoImJyZWFrO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRl
bnQsICJicmVhaztcbiIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJyZWFrQ29udGV4dDo6
TG9vcDoKICAgICAgICAgQVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJs
ZSk7CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAqbV9icmVh
a091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtcbiIKLSAgICAgICAgICAg
ICJicmVhaztcbiIKKyAgICAgICAgICAgIG1faW5kZW50LCAqbV9icmVha091dE9mQ3VycmVudExv
b3BFYXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtcbiIsCisgICAgICAgICAgICBtX2luZGVudCwgImJy
ZWFrO1xuIgogICAgICAgICApOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTIsNyArMzAx
LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6Q29udGludWUmKQogewogICAgIEFTU0VS
VChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoImJyZWFrO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2lu
ZGVudCwgImJyZWFrO1xuIik7CiB9CiAKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQpCkBAIC0zMDMsNyArMzEyLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVAogCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQo
QVNUOjpGYWxsdGhyb3VnaCYpCiB7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiW1tjbGFu
Zzo6ZmFsbHRocm91Z2hdXTtcbiIpOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTgwOCBNYWtlIHN1cmUgdGhpcyBpcyBva2F5LiBBbHRlcm5hdGl2
ZWx5LCB3ZSBjb3VsZCBkbyBub3RoaW5nIGFuZCBqdXN0IHJldHVybiBoZXJlIGluc3RlYWQuCisg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgIltbY2xhbmc6OmZhbGx0aHJvdWdo
XV07XG4iKTsgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTU4MDggTWFrZSBzdXJlIHRoaXMgaXMgb2theS4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQg
ZG8gbm90aGluZyBhbmQganVzdCByZXR1cm4gaGVyZSBpbnN0ZWFkLgogfQogCiB2b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uIGxvb3BD
b25kaXRpb25Mb2NhdGlvbiwgQVNUOjpFeHByZXNzaW9uKiBjb25kaXRpb25FeHByZXNzaW9uLCBB
U1Q6OkV4cHJlc3Npb24qIGluY3JlbWVudCwgQVNUOjpTdGF0ZW1lbnQmIGJvZHkpCkBAIC0zMTEs
MzYgKzMyMCw0OCBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoCiAg
ICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+IGxvb3BWYXJpYWJs
ZVNjb3BlKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCkpOwogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAg
ImJvb2wgIiwgKm1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNl
O1xuIiwKLSAgICAgICAgIndoaWxlICh0cnVlKSB7XG4iCisgICAgICAgIG1faW5kZW50LCAiYm9v
bCAiLCAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gZmFsc2U7XG4i
LAorICAgICAgICBtX2luZGVudCwgIndoaWxlICh0cnVlKSB7XG4iCiAgICAgKTsKKyAgICB7Cisg
ICAgICAgIEluZGVudGF0aW9uU2NvcGUgd2hpbGVTY29wZShtX2luZGVudCk7CiAKLSAgICBpZiAo
bG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6QmVmb3JlQm9k
eSAmJiBjb25kaXRpb25FeHByZXNzaW9uKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgq
Y29uZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImlm
ICghIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSBicmVhaztcbiIpOwotICAgIH0KKyAgICAgICAgaWYg
KGxvb3BDb25kaXRpb25Mb2NhdGlvbiA9PSBMb29wQ29uZGl0aW9uTG9jYXRpb246OkJlZm9yZUJv
ZHkgJiYgY29uZGl0aW9uRXhwcmVzc2lvbikgeworICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoCisgICAgICAgICAgICAgICAgbV9pbmRlbnQsICJpZiAoISIsIHRha2VMYXN0VmFsdWUo
KSwgIilcbiIsCisgICAgICAgICAgICAgICAgbV9pbmRlbnQsICIgICAgYnJlYWs7XG4iKTsKKyAg
ICAgICAgfQogCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiZG8ge1xuIik7Ci0gICAgU2V0
Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJy
ZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpMb29wKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQo
Ym9keSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgIn0gd2hpbGUoZmFs
c2UpOyBcbiIKLSAgICAgICAgImlmICgiLCAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZh
cmlhYmxlLCAiKSBicmVhaztcbiIKLSAgICApOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1faW5kZW50LCAiZG8ge1xuIik7CisgICAgICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPEJy
ZWFrQ29udGV4dD4+IGJyZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRleHQsIEJyZWFrQ29u
dGV4dDo6TG9vcCk7CiAKLSAgICBpZiAoaW5jcmVtZW50KSB7Ci0gICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCgqaW5jcmVtZW50KTsKLSAgICAgICAgLy8gRXhwcmVzc2lvbiByZXN1bHRzIGdldCBw
dXNoZWQgdG8gbV9zdGFjay4gV2UgZG9uJ3QgdXNlIHRoZSByZXN1bHQKLSAgICAgICAgLy8gb2Yg
aW5jcmVtZW50LCBzbyB3ZSBkaXNwZW5zZSBvZiB0aGF0IG5vdy4KLSAgICAgICAgdGFrZUxhc3RW
YWx1ZSgpOwotICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBk
b1Njb3BlKG1faW5kZW50KTsKKyAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChib2R5KTsK
KyAgICAgICAgfQorICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifSB3
aGlsZShmYWxzZSk7IFxuIik7CiAKLSAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExv
b3BDb25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJy
ZWFrO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICBt
X2luZGVudCwgImlmICgiLCAqbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAi
KVxuIiwKKyAgICAgICAgICAgIG1faW5kZW50LCAiICAgIGJyZWFrO1xuIik7CisKKyAgICAgICAg
aWYgKGluY3JlbWVudCkgeworICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppbmNyZW1l
bnQpOworICAgICAgICAgICAgLy8gRXhwcmVzc2lvbiByZXN1bHRzIGdldCBwdXNoZWQgdG8gbV9z
dGFjay4gV2UgZG9uJ3QgdXNlIHRoZSByZXN1bHQKKyAgICAgICAgICAgIC8vIG9mIGluY3JlbWVu
dCwgc28gd2UgZGlzcGVuc2Ugb2YgdGhhdCBub3cuCisgICAgICAgICAgICB0YWtlTGFzdFZhbHVl
KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExv
b3BDb25kaXRpb25Mb2NhdGlvbjo6QWZ0ZXJCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsK
KyAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Cisg
ICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgIG1faW5k
ZW50LCAiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpXG4iLAorICAgICAgICAgICAgICAgIG1f
aW5kZW50LCAiICAgIGJyZWFrO1xuIik7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJ9IFxuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2lu
ZGVudCwgIn0gXG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0
KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQpAQCAtMzU1LDU2ICszNzYsNjkgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogCiB2b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQogewotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIntcbiIpOwotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29w
LmluaXRpYWxpemF0aW9uKCkpOwotICAgIGVtaXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlvbjo6
QmVmb3JlQm9keSwgZm9yTG9vcC5jb25kaXRpb24oKSwgZm9yTG9vcC5pbmNyZW1lbnQoKSwgZm9y
TG9vcC5ib2R5KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ7XG4iKTsKKyAgICB7CisgICAgICAgIElu
ZGVudGF0aW9uU2NvcGUgc2NvcGUobV9pbmRlbnQpOworICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKKyAgICAgICAgZW1pdExvb3AoTG9vcENvbmRp
dGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5LCBmb3JMb29wLmNvbmRpdGlvbigpLCBmb3JMb29wLmlu
Y3JlbWVudCgpLCBmb3JMb29wLmJvZHkoKSk7CisgICAgfQorICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQogewogICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChpZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKTsKLSAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJpZiAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7XG4iKTsKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1faW5kZW50LCAiaWYgKCIsIHRha2VMYXN0VmFsdWUoKSwgIikge1xuIik7CisgICAgewor
ICAgICAgICBJbmRlbnRhdGlvblNjb3BlIGlmU2NvcGUobV9pbmRlbnQpOworICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKKyAgICB9CiAgICAgaWYgKGlmU3Rh
dGVtZW50LmVsc2VCb2R5KCkpIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSBl
bHNlIHtcbiIpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VC
b2R5KCkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAifSBlbHNl
IHtcbiIpOworICAgICAgICB7CisgICAgICAgICAgICBJbmRlbnRhdGlvblNjb3BlIGVsc2VTY29w
ZShtX2luZGVudCk7CisgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50
LmVsc2VCb2R5KCkpOworICAgICAgICB9CiAgICAgfQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIn1cbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsK
IH0KIAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6UmV0dXJuJiBy
ZXR1cm5TdGF0ZW1lbnQpCiB7CiAgICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKSB7CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqcmV0dXJuU3RhdGVtZW50LnZhbHVlKCkpOworCiAg
ICAgICAgIGlmIChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZykgewogICAgICAgICAgICAgYXV0byB2
YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgICAgIG1f
ZW50cnlQb2ludFNjYWZmb2xkaW5nLT5lbWl0UGFjayhtX3N0cmluZ0J1aWxkZXIsIHRha2VMYXN0
VmFsdWUoKSwgdmFyaWFibGVOYW1lKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoInJldHVybiAiLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKKyAgICAgICAgICAgIG1fZW50cnlQ
b2ludFNjYWZmb2xkaW5nLT5lbWl0UGFjayhtX3N0cmluZ0J1aWxkZXIsIHRha2VMYXN0VmFsdWUo
KSwgdmFyaWFibGVOYW1lLCBtX2luZGVudCk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1faW5kZW50LCAicmV0dXJuICIsIHZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInJldHVybiAiLCB0
YWtlTGFzdFZhbHVlKCksICI7XG4iKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobV9pbmRlbnQsICJyZXR1cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBl
bHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInJldHVybjtcbiIpOworICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAicmV0dXJuO1xuIik7CiB9CiAKIHZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYg
c3dpdGNoU3RhdGVtZW50KQogewogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1l
bnQudmFsdWUoKSk7CiAKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzd2l0Y2ggKCIsIHRh
a2VMYXN0VmFsdWUoKSwgIikgeyIpOwotICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRj
aFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dp
dGNoQ2FzZSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgInN3aXRjaCAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAi
KSB7Iik7CisgICAgeworICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHN3aXRjaFNjb3BlKG1faW5k
ZW50KTsKKyAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3
aXRjaENhc2VzKCkpCisgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZSk7
CisgICAgfQorICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJ9XG4iKTsKIH0K
IAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYg
c3dpdGNoQ2FzZSkKIHsKICAgICBpZiAoc3dpdGNoQ2FzZS52YWx1ZSgpKSB7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoImNhc2UgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobV9pbmRlbnQsICJjYXNlICIpOwogICAgICAgICBlbWl0Q29uc3RhbnRFeHByZXNzaW9u
U3RyaW5nKCpzd2l0Y2hDYXNlLnZhbHVlKCkpOwogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCI6XG4iKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ZGVmYXVsdDpcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCAi
ZGVmYXVsdDpcbiIpOwogICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPEJyZWFrQ29udGV4dD4+IGJy
ZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRleHQsIEJyZWFrQ29udGV4dDo6U3dpdGNoKTsK
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgxMiBGaWd1cmUg
b3V0IHdoZXRoZXIgd2UgbmVlZCB0byBicmVhayBvciBmYWxsdGhyb3VnaC4KQEAgLTQxOSw3ICs0
NTMsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB7CiAgICAg
YXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRv
IG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShpbnRlZ2Vy
TGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYW5n
bGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xl
ZFR5cGVOYW1lLCAiPigiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpOworICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJp
YWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVn
ZXJMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShpbnRlZ2Vy
TGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNDI3LDcgKzQ2MSw3IEBAIHZvaWQgRnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFt
ZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1l
ID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
cmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVO
YW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFt
ZSwgIj4oIiwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpOworICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJp
YWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVl
KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQzNSw3ICs0
NjksNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB7CiAgICAg
YXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRv
IG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmbG9hdExp
dGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRU
eXBlTmFtZSwgIj4oIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7CisgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxl
TmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgZmxvYXRMaXRl
cmFsLnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShmbG9hdExpdGVyYWws
IHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ0Niw3ICs0ODAsNyBAQCB2b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSA9
IGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7CiAKICAgICBhdXRvIHZh
cmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG51bGxMaXRlcmFsLnJl
c29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiKTsKKyAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobnVs
bExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOwogICAg
IGlmIChpc0FycmF5UmVmZXJlbmNlVHlwZSkKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgieyBudWxscHRyLCAwIH07XG4iKTsKICAgICBlbHNlCkBAIC00NTgsNyArNDkyLDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFi
bGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlw
ZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVz
b2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFuZ2xlZFR5cGVOYW1l
LCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwg
Ij4oIiwgYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIsICIpO1xuIik7
CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAn
ICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4o
IiwgYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIsICIpO1xuIik7CiAg
ICAgYXBwZW5kUmlnaHRWYWx1ZShib29sZWFuTGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0KIApA
QCAtNDY4LDcgKzUwMiw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5p
dGlvbigpKTsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVu
dW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1i
ZXIoKSksICI7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtYW5n
bGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAi
OjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSksICI7XG4iKTsKICAgICBhcHBl
bmRSaWdodFZhbHVlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0K
IApAQCAtNDkyLDggKzUyNiw4IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CiAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLmJhc2UoKSk7CiAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgInRocmVhZCAiLCBtYW5nbGVkVHlwZU5hbWUs
ICIqICIsIHBvaW50ZXJOYW1lLCAiID0gJiIsIHRha2VMYXN0VmFsdWUoKSwgIi0+IiwgbV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KGdsb2JhbFZhcmlhYmxlUmVmZXJl
bmNlLnN0cnVjdEZpZWxkKCkpLCAiO1xuIiwKLSAgICAgICAgbWFuZ2xlZFR5cGVOYW1lLCAnICcs
IHZhbHVlTmFtZSwgIiA9ICIsICIqIiwgcG9pbnRlck5hbWUsICI7XG4iCisgICAgICAgIG1faW5k
ZW50LCAidGhyZWFkICIsIG1hbmdsZWRUeXBlTmFtZSwgIiogIiwgcG9pbnRlck5hbWUsICIgPSAm
IiwgdGFrZUxhc3RWYWx1ZSgpLCAiLT4iLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVj
dHVyZUVsZW1lbnQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3RydWN0RmllbGQoKSksICI7XG4i
LAorICAgICAgICBtX2luZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhbHVlTmFtZSwgIiA9
ICIsICIqIiwgcG9pbnRlck5hbWUsICI7XG4iCiAgICAgKTsKICAgICBhcHBlbmRMZWZ0VmFsdWUo
Z2xvYmFsVmFyaWFibGVSZWZlcmVuY2UsIHZhbHVlTmFtZSwgcG9pbnRlck5hbWUsIE51bGxhYmls
aXR5OjpOb3ROdWxsKTsKIH0KQEAgLTUyMyw5ICs1NTcsOSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNjAgSW1wbGVtZW50IHF1YWxpZmllcnMuCiAgICAgaWYg
KHZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSkgewogICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJp
YWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxh
c3RWYWx1ZSgpLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRl
bnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50
eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIp
OwogICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIHZh
cmlhYmxlTmFtZSwgIiA9IHsgfTtcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFy
YXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7IH07XG4iKTsKIH0KIAogdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Np
b24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQpAQCAtNTM0LDEwICs1NjgsMTMgQEAgdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gW3BvaW50ZXJOYW1lLCBu
dWxsYWJpbGl0eV0gPSB0YWtlTGFzdExlZnRWYWx1ZSgpOwogICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChhc3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKICAgICBhdXRvIFtyaWdodE5hbWUsIHJp
Z2h0TnVsbGFiaWxpdHldID0gdGFrZUxhc3RWYWx1ZUFuZE51bGxhYmlsaXR5KCk7CisKICAgICBp
ZiAobnVsbGFiaWxpdHkgPT0gTnVsbGFiaWxpdHk6OkNhbkJlTnVsbCkKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiaWYgKCIsIHBvaW50ZXJOYW1lLCAiKSAqIiwgcG9pbnRlck5hbWUs
ICIgPSAiLCByaWdodE5hbWUsICI7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKKyAgICAgICAgICAgIG1faW5kZW50LCAiaWYgKCIsIHBvaW50ZXJOYW1lLCAiKVxuIiwKKyAg
ICAgICAgICAgIG1faW5kZW50LCAiICAgICoiLCBwb2ludGVyTmFtZSwgIiA9ICIsIHJpZ2h0TmFt
ZSwgIjtcbiIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKiIs
IHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICIqIiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5h
bWUsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlV2l0aE51bGxhYmlsaXR5KGFzc2lnbm1l
bnRFeHByZXNzaW9uLCByaWdodE5hbWUsIHJpZ2h0TnVsbGFiaWxpdHkpOwogfQogCkBAIC01NTMs
MTIgKzU5MCwyMCBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAg
ICAgTWFuZ2xlZFZhcmlhYmxlTmFtZSByZXR1cm5OYW1lOwogICAgIGlmICghaXNWb2lkKSB7CiAg
ICAgICAgIHJldHVybk5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2Fs
bEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHJldHVybk5hbWUsICI7XG4iKTsKKyAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCByZXR1cm5O
YW1lLCAiO1xuIik7CiAgICAgfQogCi0gICAgaWYgKGlzPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rpb24oKSkpCi0gICAgICAgIGlubGluZU5hdGl2
ZUZ1bmN0aW9uKG1fc3RyaW5nQnVpbGRlciwgZG93bmNhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSwgcmV0dXJuTmFtZSwgYXJndW1l
bnROYW1lcywgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lcik7Ci0gICAgZWxzZSB7CisgICAgaWYg
KGlzPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oY2FsbEV4cHJlc3Npb24uZnVuY3Rp
b24oKSkpIHsKKyAgICAgICAgYXV0byBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUgPSBbdGhpc10o
KSAtPiBNYW5nbGVkVmFyaWFibGVOYW1lIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5nZW5l
cmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKKyAgICAgICAgfTsKKworICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBpbmxpbmVOYXRpdmVGdW5jdGlvbihtX3N0cmlu
Z0J1aWxkZXIsIGRvd25jYXN0PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oY2FsbEV4
cHJlc3Npb24uZnVuY3Rpb24oKSksIHJldHVybk5hbWUsIGFyZ3VtZW50TmFtZXMsIG1faW50cmlu
c2ljcywgbV90eXBlTmFtZXIsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9p
bmRlbnQpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQpOworCiAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uTWFwcGluZy5maW5kKCZjYWxsRXhwcmVzc2lvbi5m
dW5jdGlvbigpKTsKICAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5n
LmVuZCgpKTsKICAgICAgICAgaWYgKCFpc1ZvaWQpCkBAIC01OTIsMTUgKzYzNywxOSBAQCB2b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBbaW5wdXRQb2lu
dGVyLCBudWxsYWJpbGl0eV0gPSB0YWtlTGFzdFZhbHVlQW5kTnVsbGFiaWxpdHkoKTsKICAgICBh
dXRvIHJlc3VsdFZhbHVlID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBy
ZXN1bHRQb2ludGVyID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CisKICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKAotICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
ZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIoKS5yZXNvbHZlZFR5cGUoKSksICcgJywgcmVz
dWx0UG9pbnRlciwgIiA9ICIsIGlucHV0UG9pbnRlciwgIjtcbiIsCi0gICAgICAgIG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShkZXJlZmVyZW5jZUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBl
KCkpLCAnICcsIHJlc3VsdFZhbHVlLCAiO1xuIik7CisgICAgICAgIG1faW5kZW50LCBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIoKS5y
ZXNvbHZlZFR5cGUoKSksICcgJywgcmVzdWx0UG9pbnRlciwgIiA9ICIsIGlucHV0UG9pbnRlciwg
IjtcbiIsCisgICAgICAgIG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
ZGVyZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCByZXN1bHRWYWx1ZSwg
IjtcbiIpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2FuQmVOdWxsKSB7
CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAiaWYgKCIsIHJl
c3VsdFBvaW50ZXIsICIpICIsIHJlc3VsdFZhbHVlLCAiID0gKiIsIGlucHV0UG9pbnRlciwgIjtc
biIsCi0gICAgICAgICAgICAiZWxzZSAiLCByZXN1bHRWYWx1ZSwgIiA9IHsgfTtcbiIpOworICAg
ICAgICAgICAgbV9pbmRlbnQsICJpZiAoIiwgcmVzdWx0UG9pbnRlciwgIilcbiIsCisgICAgICAg
ICAgICBtX2luZGVudCwgIiAgICAiLCByZXN1bHRWYWx1ZSwgIiA9ICoiLCBpbnB1dFBvaW50ZXIs
ICI7XG4iLAorICAgICAgICAgICAgbV9pbmRlbnQsICJlbHNlXG4iLAorICAgICAgICAgICAgbV9p
bmRlbnQsICIgICAgIiwgcmVzdWx0VmFsdWUsICIgPSB7IH07XG4iCisgICAgICAgICk7CiAgICAg
fSBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzdWx0VmFsdWUsICIgPSAq
IiwgaW5wdXRQb2ludGVyLCAiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bV9pbmRlbnQsIHJlc3VsdFZhbHVlLCAiID0gKiIsIGlucHV0UG9pbnRlciwgIjtcbiIpOwogICAg
IGFwcGVuZExlZnRWYWx1ZShkZXJlZmVyZW5jZUV4cHJlc3Npb24sIHJlc3VsdFZhbHVlLCByZXN1
bHRQb2ludGVyLCBudWxsYWJpbGl0eSk7CiB9CiAKQEAgLTYxMSw3ICs2NjAsOSBAQCB2b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOwogICAgIGF1dG8gcmlnaHQgPSB0YWtlTGFzdFZh
bHVlKCk7CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUo
KTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShsb2dpY2FsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1l
LCAiID0gIiwgbGVmdCk7CisKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICBt
X2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxFeHByZXNzaW9u
LnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBsZWZ0KTsKICAgICBz
d2l0Y2ggKGxvZ2ljYWxFeHByZXNzaW9uLnR5cGUoKSkgewogICAgIGNhc2UgQVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6VHlwZTo6QW5kOgogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIg
JiYgIik7CkBAIC02MzAsNyArNjgxLDkgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChsb2dpY2FsTm90RXhwcmVzc2lvbi5v
cGVyYW5kKCkpOwogICAgIGF1dG8gb3BlcmFuZCA9IHRha2VMYXN0VmFsdWUoKTsKICAgICBhdXRv
IHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxOb3RF
eHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAhIiwgb3Bl
cmFuZCwgIjtcbiIpOworCisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgbV9p
bmRlbnQsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2dpY2FsTm90RXhwcmVzc2lv
bi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gISIsIG9wZXJhbmQsICI7
XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGxvZ2ljYWxOb3RFeHByZXNzaW9uLCB2YXJpYWJs
ZU5hbWUpOwogfQogCkBAIC02NDUsMTcgKzY5OCwxOSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUCiAgICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KG1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2ZWRUeXBlKCkpKSB7CiAgICAg
ICAgIGF1dG8gcHRyVmFsdWUgPSB0YWtlTGFzdFZhbHVlKCk7CiAgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoCi0gICAgICAgICAgICBtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVO
YW1lLCAiO1xuIiwKLSAgICAgICAgICAgICJpZiAoIiwgcHRyVmFsdWUsICIpICIsIHZhcmlhYmxl
TmFtZSwgIiA9IHsgIiwgcHRyVmFsdWUsICIsIDF9O1xuIiwKLSAgICAgICAgICAgICJlbHNlICIs
IHZhcmlhYmxlTmFtZSwgIiA9IHsgbnVsbHB0ciwgMCB9O1xuIgorICAgICAgICAgICAgbV9pbmRl
bnQsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iLAorICAgICAgICAg
ICAgbV9pbmRlbnQsICJpZiAoIiwgcHRyVmFsdWUsICIpXG4iLAorICAgICAgICAgICAgbV9pbmRl
bnQsICIgICAgIiwgdmFyaWFibGVOYW1lLCAiID0geyAiLCBwdHJWYWx1ZSwgIiwgMX07XG4iLAor
ICAgICAgICAgICAgbV9pbmRlbnQsICJlbHNlXG4iLAorICAgICAgICAgICAgbV9pbmRlbnQsICIg
ICAgIiwgdmFyaWFibGVOYW1lLCAiID0geyBudWxscHRyLCAwIH07XG4iCiAgICAgICAgICk7CiAg
ICAgfSBlbHNlIGlmIChpczxBU1Q6OkFycmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAgICAgICAgYXV0byBsVmFsdWUg
PSB0YWtlTGFzdExlZnRWYWx1ZSgpLnZhbHVlOwogICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBk
b3duY2FzdDxBU1Q6OkFycmF5VHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5sZWZ0
VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLT5k
YXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKTsKKyAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlh
YmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLT5kYXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVt
ZW50cygpLCAiIH07XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIGxWYWx1ZSA9IHRh
a2VMYXN0TGVmdFZhbHVlKCkudmFsdWU7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLCAx
IH07XG4iKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLCAxIH07XG4i
KTsKICAgICB9CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLCB2YXJpYWJsZU5hbWUpOwogfQpAQCAtNjY1LDcgKzcyMCw3IEBAIHZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZVBv
aW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKICAgICBhdXRvIFtwb2ludGVyLCBudWxsYWJp
bGl0eV0gPSB0YWtlTGFzdExlZnRWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJlc29sdmVk
VHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7CisgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2luZGVudCwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKG1ha2VQb2ludGVyRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFi
bGVOYW1lLCAiID0gIiwgcG9pbnRlciwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWVXaXRo
TnVsbGFiaWxpdHkobWFrZVBvaW50ZXJFeHByZXNzaW9uLCB2YXJpYWJsZU5hbWUsIG51bGxhYmls
aXR5KTsKIH0KIApAQCAtNjg1LDcgKzc0MCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1QKICAgICBhdXRvIGVsc2VCb2R5ID0gdGFrZUxhc3RWYWx1ZSgpOwogCiAg
ICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh0ZXJu
YXJ5RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwg
Y2hlY2ssICIgPyAiLCBib2R5LCAiIDogIiwgZWxzZUJvZHksICI7XG4iKTsKKyAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1faW5kZW50LCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
dGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9
ICIsIGNoZWNrLCAiID8gIiwgYm9keSwgIiA6ICIsIGVsc2VCb2R5LCAiO1xuIik7CiAgICAgYXBw
ZW5kUmlnaHRWYWx1ZSh0ZXJuYXJ5RXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAt
Njk0LDggKzc0OSw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICBBU1NFUlQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7CiAgICAgYXV0byBpdGVy
YXRvciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUo
KSk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdmFyaWFibGVNYXBwaW5nLmVuZCgpKTsKKwog
ICAgIGF1dG8gcG9pbnRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0aHJlYWQgIiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSwgIiogIiwgcG9pbnRlck5h
bWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtX2luZGVudCwgInRocmVhZCAiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUodmFyaWFibGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLCAiKiAiLCBwb2ludGVyTmFtZSwg
IiA9ICYiLCBpdGVyYXRvci0+dmFsdWUsICI7XG4iKTsKICAgICBhcHBlbmRMZWZ0VmFsdWUodmFy
aWFibGVSZWZlcmVuY2UsIGl0ZXJhdG9yLT52YWx1ZSwgcG9pbnRlck5hbWUsIE51bGxhYmlsaXR5
OjpOb3ROdWxsKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlv
bldyaXRlci5jcHAJKHJldmlzaW9uIDI0ODgzMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZlY3RvclN1ZmZp
eChpbnQgdmVjdAogICAgIH0KIH0KIAotdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24sIE1hbmdsZWRWYXJpYWJsZU5hbWUgcmV0dXJuTmFtZSwg
Y29uc3QgVmVjdG9yPE1hbmdsZWRWYXJpYWJsZU5hbWU+JiBhcmdzLCBJbnRyaW5zaWNzJiBpbnRy
aW5zaWNzLCBUeXBlTmFtZXImIHR5cGVOYW1lcikKK3ZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24o
U3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLCBNYW5nbGVkVmFyaWFibGVOYW1lIHJldHVy
bk5hbWUsIGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgYXJncywgSW50cmluc2lj
cyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIHN0ZDo6ZnVuY3Rpb248TWFuZ2xl
ZFZhcmlhYmxlTmFtZSgpPiYmIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSwgSW5kZW50YXRpb248
ND4gaW5kZW50KQogewogICAgIGF1dG8gYXNNYXRyaXhUeXBlID0gWyZdIChBU1Q6OlVubmFtZWRU
eXBlJiB1bm5hbWVkVHlwZSkgLT4gQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIHsKICAgICAg
ICAgYXV0byYgcmVhbFR5cGUgPSB1bm5hbWVkVHlwZS51bmlmeU5vZGUoKTsKQEAgLTEzOSwzNyAr
MTM5LDQzIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAg
ICAgYXV0byBtZXRhbFJldHVyblR5cGVOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShyZXR1cm5UeXBlKTsKIAogICAgICAgICBpZiAoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpLnNpemUoKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
cmV0dXJuTmFtZSwgIiA9IHsgfTtcbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCByZXR1cm5OYW1lLCAiID0geyB9O1xuIik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotCiAgICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlw
ZSA9ICpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwog
ICAgICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlclR5cGVOYW1lID0gdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZShwYXJhbWV0ZXJUeXBlKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJ7XG4iLCBtZXRhbFBhcmFtZXRlclR5cGVOYW1lLCAiIHggPSAiLCBhcmdzWzBdLCAi
O1xuIik7CisgICAgICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpOwogCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXV0byBpc0VudW1l
cmF0aW9uRGVmaW5pdGlvbiA9IFtdIChhdXRvJiB0eXBlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBpczxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkgJiYgaXM8QVNUOjpFbnVtZXJhdGlvbkRl
ZmluaXRpb24+KGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih0eXBlKSk7Ci0gICAgICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgICAgICBhdXRvJiB1bmlmaWVkUmV0dXJuVHlwZSA9IHJldHVyblR5
cGUudW5pZnlOb2RlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzRW51bWVyYXRpb25EZWZpbml0
aW9uKHVuaWZpZWRSZXR1cm5UeXBlKSAmJiAhaXNFbnVtZXJhdGlvbkRlZmluaXRpb24ocGFyYW1l
dGVyVHlwZS51bmlmeU5vZGUoKSkpIHsgCi0gICAgICAgICAgICAgICAgICAgIGF1dG8mIGVudW1l
cmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihk
b3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZmllZFJldHVyblR5cGUpKTsKLSAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBzd2l0Y2ggKHgpIHtcbiIpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCBtZXRhbFBhcmFtZXRlclR5cGVO
YW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICI7XG4iKTsKKworICAgICAg
ICAgICAgYXV0byBpc0VudW1lcmF0aW9uRGVmaW5pdGlvbiA9IFtdIChhdXRvJiB0eXBlKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGlzPEFTVDo6TmFtZWRUeXBlPih0eXBlKSAmJiBpczxBU1Q6
OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHR5cGUpKTsK
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRvJiB1bmlmaWVkUmV0dXJuVHlwZSA9IHJl
dHVyblR5cGUudW5pZnlOb2RlKCk7CisgICAgICAgICAgICBpZiAoaXNFbnVtZXJhdGlvbkRlZmlu
aXRpb24odW5pZmllZFJldHVyblR5cGUpICYmICFpc0VudW1lcmF0aW9uRGVmaW5pdGlvbihwYXJh
bWV0ZXJUeXBlLnVuaWZ5Tm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihkb3du
Y2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZmllZFJldHVyblR5cGUpKTsKKyAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJzd2l0Y2ggKCIsIHZhcmlhYmxlTmFtZSwg
Iikge1xuIik7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbmRlbnRh
dGlvblNjb3BlIHN3aXRjaFNjb3BlKGluZGVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBtZW1i
ZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGhhc1plcm9DYXNlIHw9ICFtZW1iZXIuZ2V0KCkudmFsdWUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgIGNh
c2UgIiwgbWVtYmVyLmdldCgpLnZhbHVlKCksICI6IGJyZWFrO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRlbnQsICJjYXNlICIsIG1lbWJlci5nZXQoKS52YWx1ZSgpLCAiOlxuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAgYnJlYWs7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGhhc1plcm9D
YXNlLCBoYXNaZXJvQ2FzZSk7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgICAgICAgIGRlZmF1bHQ6IHggPSAwOyBicmVhazsgfVxuIik7CisgICAgICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZW50LCAiZGVmYXVsdDpcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAg
IiwgdmFyaWFibGVOYW1lLCAiID0gMDtcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
bnQsICIgICAgYnJlYWs7XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAifVxu
Iik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gc3RhdGlj
X2Nhc3Q8IiwgbWV0YWxSZXR1cm5UeXBlTmFtZSwgIj4oeCk7XG59XG4iKTsKLQorICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCByZXR1cm5OYW1lLCAiID0gc3RhdGljX2Nh
c3Q8IiwgbWV0YWxSZXR1cm5UeXBlTmFtZSwgIj4oIiwgdmFyaWFibGVOYW1lLCAiKTtcbiIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE3OCwzMiArMTg0LDMzIEBAIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgIHVuc2ln
bmVkIG51bUNvbHVtbnMgPSBtYXRyaXhUeXBlLT5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSBudW1Sb3dzIHx8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpLnNpemUoKSA9PSBudW1Sb3dzICogbnVtQ29sdW1ucyk7CiAKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ7XG4iLCBtZXRhbFJldHVyblR5cGVOYW1lLCAiIHg7XG4i
KTsKKyAgICAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7CisKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgbWV0YWxS
ZXR1cm5UeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iKTsKIAogICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBhYmlkZSBieSB0aGUgbWVtb3J5IGxheW91dCB3ZSB1c2UgZm9yIG1hdHJp
Y2VzIGhlcmUuCiAgICAgICAgICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJh
bWV0ZXJzKCkuc2l6ZSgpID09IG51bVJvd3MpIHsKICAgICAgICAgICAgICAgICAvLyBvcGVyYXRv
ciBtYXRyaXhNeE4gKHZlY3Rvck4sIC4uLiwgdmVjdG9yTikKICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1Db2x1bW5zOyArK2opCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgieFsiLCBqICogbnVtUm93cyArIGksICJd
ID0gIiwgYXJnc1tpXSwgIlsiLCBqLCAiXTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCB2YXJpYWJsZU5hbWUsICJbIiwgaiAqIG51bVJv
d3MgKyBpLCAiXSA9ICIsIGFyZ3NbaV0sICJbIiwgaiwgIl07XG4iKTsKICAgICAgICAgICAgICAg
ICB9Ci0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gb3BlcmF0b3Ig
bWF0cml4TXhOIChzY2FsYXIsIC4uLiwgc2NhbGFyKQogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
Um93czsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCBudW1Db2x1bW5zOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ4WyIsIGogKiBudW1Sb3dzICsgaSwgIl0gPSAiLCBhcmdzW2luZGV4XSwgIjtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50
LCB2YXJpYWJsZU5hbWUsICdbJywgaiAqIG51bVJvd3MgKyBpLCAiXSA9ICIsIGFyZ3NbaW5kZXhd
LCAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOworICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCByZXR1cm5OYW1lLCAiID0gIiwgdmFy
aWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5U
eXBlTmFtZSwgIigiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCByZXR1
cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5UeXBlTmFtZSwgIigiKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaSA+IDApCiAgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CkBAIC0yMjIsMTMgKzIyOSwxMyBAQCB2b2lkIGlu
bGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGlmIChpczxBU1Q6OkFy
cmF5VHlwZT4odW5uYW1lZFBhcmFtZXRlclR5cGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBhcnJh
eVBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFBhcmFtZXRl
clR5cGUpOwogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgcmV0dXJuTmFtZSwgIiA9ICIsIGFycmF5UGFyYW1ldGVyVHlwZS5udW1FbGVtZW50cygpLCAi
O1xuIik7CisgICAgICAgICAgICAgICAgaW5kZW50LCByZXR1cm5OYW1lLCAiID0gIiwgYXJyYXlQ
YXJhbWV0ZXJUeXBlLm51bUVsZW1lbnRzKCksICI7XG4iKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4o
dW5uYW1lZFBhcmFtZXRlclR5cGUpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0g
ICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgIi5sZW5ndGg7XG4iKTsKKyAg
ICAgICAgICAgIGluZGVudCwgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIubGVuZ3RoO1xu
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI1Myw4ICsyNjAsOCBAQCB2b2lkIGlu
bGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgICAgICBmaWVsZE5hbWUg
PSBmaWVsZE5hbWUuc3Vic3RyaW5nKDAsIGZpZWxkTmFtZS5sZW5ndGgoKSAtIDEpOwogCiAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICByZXR1cm5OYW1l
LCAiID0gIiwgYXJnc1swXSwgIjtcbiIsCi0gICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgJy4n
KTsKKyAgICAgICAgICAgICAgICBpbmRlbnQsIHJldHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAi
O1xuIiwKKyAgICAgICAgICAgICAgICBpbmRlbnQsIHJldHVybk5hbWUsICcuJyk7CiAgICAgICAg
ICAgICBhcHBlbmRNYW5nbGVkRmllbGROYW1lKGZpZWxkTmFtZSk7CiAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogCkBAIC0yNjQsNyArMjcx
LDcgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBB
U1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEp
OwogICAgICAgICBhdXRvIGZpZWxkTmFtZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpLnN1YnN0cmluZygib3BlcmF0b3IuIl9zdHIubGVuZ3RoKCkpOwogICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAn
LicpOworICAgICAgICAgICAgaW5kZW50LCByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgJy4n
KTsKICAgICAgICAgYXBwZW5kTWFuZ2xlZEZpZWxkTmFtZShmaWVsZE5hbWUpOwogICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI3NSw3ICsy
ODIsNyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAg
IGF1dG8gZmllbGROYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3Ry
aW5nKCJvcGVyYXRvciYuIl9zdHIubGVuZ3RoKCkpOwogCiAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKAotICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9ICYoIiwgYXJnc1swXSwgIi0+Iik7
CisgICAgICAgICAgICBpbmRlbnQsIHJldHVybk5hbWUsICIgPSAmKCIsIGFyZ3NbMF0sICItPiIp
OwogCiAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpWzBdLT50eXBlKCk7CiAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IGRv
d25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpLnVuaWZ5
Tm9kZSgpOwpAQCAtMjk4LDcgKzMwNSw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3Ry
aW5nQnVpbGRlciYKICAgICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPigq
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpOwogCiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9
ICgiLCBhcmdzWzFdLCAiIDwgIiwgYXJnc1swXSwgIi5sZW5ndGgpID8gIiwgIiAmKCIsIGFyZ3Nb
MF0sICIucG9pbnRlclsiLCBhcmdzWzFdLCAiXSkgOiBudWxscHRyO1xuIik7CisgICAgICAgICAg
ICBpbmRlbnQsIHJldHVybk5hbWUsICIgPSAoIiwgYXJnc1sxXSwgIiA8ICIsIGFyZ3NbMF0sICIu
bGVuZ3RoKSA/ICIsICIgJigiLCBhcmdzWzBdLCAiLnBvaW50ZXJbIiwgYXJnc1sxXSwgIl0pIDog
bnVsbHB0cjtcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
MjcsMzUgKzMzNCw0NyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXIm
CiAKICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUm93cyA9IGdldE1hdHJpeFR5cGUoKS5u
dW1iZXJPZk1hdHJpeFJvd3MoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ29sdW1u
cyA9IGdldE1hdHJpeFR5cGUoKS5udW1iZXJPZk1hdHJpeENvbHVtbnMoKTsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVybk5hbWUsICIgcmVzdWx0
O1xuIik7Ci0KLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAg
ICAgICIgICAgaWYgKCIsIGFyZ3NbMV0sICIgPj0gIiwgbnVtYmVyT2ZSb3dzLCAiKSB7IiwgcmV0
dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTsgYnJlYWs7fVxuIiwKLSAgICAg
ICAgICAgICAgICAiICAgIHJlc3VsdFswXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJnc1sxXSwgIl07
XG4iLAotICAgICAgICAgICAgICAgICIgICAgcmVzdWx0WzFdID0gIiwgYXJnc1swXSwgJ1snLCBh
cmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzLCAiXTtcbiIpOwotCi0gICAgICAgICAgICBpZiAo
bnVtYmVyT2ZDb2x1bW5zID49IDMpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiAgICByZXN1bHRbMl0gPSAiLCBhcmdzWzBdLCAnWycsIGFyZ3NbMV0sICIgKyAiLCBudW1i
ZXJPZlJvd3MgKiAyLCAiXTtcbiIpOwotICAgICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+
PSA0KQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmVzdWx0WzNd
ID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl07
XG4iKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5k
ZW50LCAiZG8ge1xuIik7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5kZW50YXRp
b25TY29wZSBzY29wZShpbmRlbnQpOwogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKLSAgICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSByZXN1bHQ7XG4iLAot
ICAgICAgICAgICAgICAgICJ9IHdoaWxlICgwKTtcbiIpOworICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIG1ldGFsUmV0dXJu
TmFtZSwgIiByZXN1bHQ7XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwg
YXJnc1sxXSwgIiA+PSAiLCBudW1iZXJPZlJvd3MsICIpIHtcbiIsCisgICAgICAgICAgICAgICAg
ICAgIGluZGVudCwgIiAgICAiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAi
KDApO1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiICAgIGJyZWFrO1xuIiwKKyAg
ICAgICAgICAgICAgICAgICAgaW5kZW50LCAifVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZW50LCAicmVzdWx0WzBdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAiXTtcbiIsCisgICAg
ICAgICAgICAgICAgICAgIGluZGVudCwgInJlc3VsdFsxXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJn
c1sxXSwgIiArICIsIG51bWJlck9mUm93cywgIl07XG4iKTsKKworICAgICAgICAgICAgICAgIGlm
IChudW1iZXJPZkNvbHVtbnMgPj0gMykKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaW5kZW50LCAicmVzdWx0WzJdID0gIiwgYXJnc1swXSwgJ1snLCBhcmdzWzFdLCAi
ICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl07XG4iKTsKKyAgICAgICAgICAgICAgICBpZiAobnVt
YmVyT2ZDb2x1bW5zID49IDQpCisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGluZGVudCwgInJlc3VsdFszXSA9ICIsIGFyZ3NbMF0sICdbJywgYXJnc1sxXSwgIiArICIs
IG51bWJlck9mUm93cyAqIDMsICJdO1xuIik7CisgICAgCisgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoaW5kZW50LCByZXR1cm5OYW1lLCAiID0gcmVzdWx0O1xuIik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifSB3aGlsZSAoMCk7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bVR5
cGVBcmd1bWVudHMgPT0gMik7CiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IHZl
Y3RvclNpemUoKTsKIAogICAgICAgICAgICAgYXV0byBtZXRhbFJldHVybk5hbWUgPSB0eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsK
IAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJu
TmFtZSwgIiByZXN1bHQ7XG4iKTsKLQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ci0gICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1sxXSwgIiA+PSAiLCBudW1FbGVtZW50
cywgIikgeyIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7IGJyZWFr
O31cbiIsCi0gICAgICAgICAgICAgICAgIiAgICByZXN1bHQgPSAiLCBhcmdzWzBdLCAiWyIsIGFy
Z3NbMV0sICJdO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSByZXN1bHQ7XG4iLAotICAgICAgICAg
ICAgICAgICJ9IHdoaWxlICgwKTtcbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCAiZG8ge1xuIik7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5k
ZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIG1ldGFsUmV0dXJuTmFtZSwg
IiByZXN1bHQ7XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgYXJnc1sx
XSwgIiA+PSAiLCBudW1FbGVtZW50cywgIikge1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZW50LCAiICAgICIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4i
LAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAgYnJlYWs7XG4iLAorICAgICAgICAg
ICAgICAgICAgICBpbmRlbnQsICJ9XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJy
ZXN1bHQgPSAiLCBhcmdzWzBdLCAiWyIsIGFyZ3NbMV0sICJdO1xuIiwKKyAgICAgICAgICAgICAg
ICAgICAgaW5kZW50LCByZXR1cm5OYW1lLCAiID0gcmVzdWx0O1xuIik7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9IHdoaWxlICgwKTtc
biIpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMzcyLDIwICszOTEsMjcgQEAg
dm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgdW5z
aWduZWQgbnVtYmVyT2ZSb3dzID0gZ2V0TWF0cml4VHlwZSgpLm51bWJlck9mTWF0cml4Um93cygp
OwogICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gZ2V0TWF0cml4VHlwZSgp
Lm51bWJlck9mTWF0cml4Q29sdW1ucygpOwogCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiZG8ge1xuIiwgbWV0YWxSZXR1cm5OYW1lLCAiIG0gPSAiLCBhcmdzWzBdLCAiO1xuIiwK
LSAgICAgICAgICAgICAgICBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGkgPSAiLCBhcmdzWzFdLCAi
O1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJkbyB7XG4i
KTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3Bl
KGluZGVudCk7CiAKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICIgICAgaWYgKGkgPj0gIiwgbnVtYmVyT2ZSb3dzLCAiKSB7IiwgcmV0dXJuTmFtZSwg
IiA9IG07XG5icmVhazt9XG4iLAotICAgICAgICAgICAgICAgICIgICAgbVtpXSA9ICIsIGFyZ3Nb
Ml0sICJbMF07XG4iLAotICAgICAgICAgICAgICAgICIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dz
LCAiXSA9ICIsIGFyZ3NbMl0sICJbMV07XG4iKTsKLSAgICAgICAgICAgIGlmIChudW1iZXJPZkNv
bHVtbnMgPj0gMykKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIG1b
aSArICIsIG51bWJlck9mUm93cyAqIDIsICJdID0gIiwgYXJnc1syXSwgIlsyXTtcbiIpOwotICAg
ICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSA0KQotICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl0gPSAiLCBh
cmdzWzJdLCAiWzNdO1xuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAg
ICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUsICIgPSBtO1xuIiwKLSAgICAgICAgICAg
ICAgICAifSB3aGlsZSgwKTtcbiIpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIG1ldGFsUmV0dXJuTmFtZSwgIiBtID0g
IiwgYXJnc1swXSwgIjtcbiIsCisgICAgICAgICAgICAgICAgICAgIGluZGVudCwgbWV0YWxQYXJh
bWV0ZXIyTmFtZSwgIiBpID0gIiwgYXJnc1sxXSwgIjtcbiIsCisgICAgICAgICAgICAgICAgICAg
IGluZGVudCwgImlmIChpID49ICIsIG51bWJlck9mUm93cywgIikge1xuIiwKKyAgICAgICAgICAg
ICAgICAgICAgaW5kZW50LCAiICAgICIsIHJldHVybk5hbWUsICIgPSBtO1xuIiwKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZW50LCAiICAgIGJyZWFrO1xuIiwKKyAgICAgICAgICAgICAgICAgICAg
aW5kZW50LCAifVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAibVtpXSA9ICIsIGFy
Z3NbMl0sICJbMF07XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJtW2kgKyAiLCBu
dW1iZXJPZlJvd3MsICJdID0gIiwgYXJnc1syXSwgIlsxXTtcbiIpOworICAgICAgICAgICAgICAg
IGlmIChudW1iZXJPZkNvbHVtbnMgPj0gMykKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoaW5kZW50LCAibVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl0gPSAiLCBh
cmdzWzJdLCAiWzJdO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+
PSA0KQorICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJt
W2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAiXSA9ICIsIGFyZ3NbMl0sICJbM107XG4iKTsKKyAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIHJldHVybk5hbWUsICIg
PSBtO1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIn0gd2hpbGUoMCk7XG4iKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bVR5cGVBcmd1bWVudHMgPT0gMik7CiAK
QEAgLTM5NSwxNSArNDIxLDIxIEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYKIAogICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSB2ZWN0b3JTaXplKCk7
CiAKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJldHVy
bk5hbWUsICIgdiA9ICIsIGFyZ3NbMF0sICI7XG4iLAotICAgICAgICAgICAgICAgIG1ldGFsUGFy
YW1ldGVyMk5hbWUsICIgaSA9ICIsIGFyZ3NbMV0sICI7XG4iKTsKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGluZGVudCwgImRvIHtcbiIpOworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKIAotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAiLCBu
dW1FbGVtZW50cywgIikgeyIsIHJldHVybk5hbWUsICIgPSB2O1xuYnJlYWs7fVxuIiwKLSAgICAg
ICAgICAgICAgICAiICAgIHZbaV0gPSAiLCBhcmdzWzJdLCAiO1xuIik7Ci0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiICAgICIsIHJldHVybk5hbWUs
ICIgPSB2O1xuIiwKLSAgICAgICAgICAgICAgICAifSB3aGlsZSgwKTtcbiIpOworICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQs
IG1ldGFsUmV0dXJuTmFtZSwgIiB2ID0gIiwgYXJnc1swXSwgIjtcbiIsCisgICAgICAgICAgICAg
ICAgICAgIGluZGVudCwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpID0gIiwgYXJnc1sxXSwgIjtc
biIsCisgICAgICAgICAgICAgICAgICAgIGluZGVudCwgImlmIChpID49ICIsIG51bUVsZW1lbnRz
LCAiKSB7XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAgIiwgcmV0dXJuTmFt
ZSwgIiA9IHY7XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAgYnJlYWs7XG4i
LAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJ9XG4iLAorICAgICAgICAgICAgICAgICAg
ICBpbmRlbnQsICJ2W2ldID0gIiwgYXJnc1syXSwgIjtcbiIsCisgICAgICAgICAgICAgICAgICAg
IGluZGVudCwgcmV0dXJuTmFtZSwgIiA9IHY7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIn0gd2hpbGUoMCk7XG4iKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybjsKQEAgLTQxNCwxNCArNDQ2LDI1IEBAIHZvaWQgaW5saW5l
TmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgYXV0byBtZXRhbFJldHVyblR5
cGUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24udHlwZSgpKTsKICAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAxKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogbWF0cml4VHlwZSA9
IGFzTWF0cml4VHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsKLSAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgIntc
biIsIG1ldGFsUmV0dXJuVHlwZSwgIiB4ID0gIiwgYXJnc1swXSwgIjtcbiIsCi0gICAgICAgICAg
ICAgICAgICAgICJmb3IgKHNpemVfdCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHhbaV0gPSAi
LCBvcGVyYXRvck5hbWUsICJ4W2ldO1xuIiwKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuTmFt
ZSwgIiA9IHg7XG59XG4iKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChp
bmRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIElu
ZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIG1ldGFsUmV0
dXJuVHlwZSwgIiB4ID0gIiwgYXJnc1swXSwgIjtcbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRlbnQsICJmb3IgKHNpemVfdCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpXG4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiICAgIHhbaV0gPSAiLCBvcGVyYXRvck5hbWUs
ICJ4W2ldO1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgcmV0dXJuTmFtZSwg
IiA9IHg7XG4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoaW5kZW50LCAifVxuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAie1xu
IiwgbWV0YWxSZXR1cm5UeXBlLCAiIHggPSAiLCBhcmdzWzBdLCAiO1xuIiwgCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybk5hbWUsICIgPSAiLCBvcGVyYXRvck5hbWUsICJ4O1xufVxuIik7Cisg
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAie1xuIik7CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbmRlbnRhdGlvblNjb3BlIHNjb3Bl
KGluZGVudCk7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBtZXRhbFJldHVyblR5cGUsICIgeCA9ICIsIGFy
Z3NbMF0sICI7XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCByZXR1cm5OYW1l
LCAiID0gIiwgb3BlcmF0b3JOYW1lLCAieDtcbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsICJ9XG4iKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDMwLDMxICs0NzMsNDkg
QEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBpZiAo
YXV0byogbGVmdE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiByaWdo
dE1hdHJpeCA9IGFzTWF0cml4VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKClbMV0tPnR5cGUoKSkpIHsKICAgICAgICAgICAgICAgICAvLyBtYXRyaXggPG9wPiBtYXRy
aXgKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAg
ICAgICAgIntcbiIsIG1ldGFsUmV0dXJuVHlwZSwgIiB4O1xuIiwKLSAgICAgICAgICAgICAgICAg
ICAgImZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9ICIsIGFyZ3Nb
MF0sICJbaV0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICJbaV07XG4iLAotICAgICAg
ICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOworICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIntcbiIpOworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOworICAg
ICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGVudCwgbWV0YWxSZXR1cm5UeXBlLCAiIHg7XG4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZW50LCAiZm9yIChzaXplX3QgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKVxu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiAgICB4W2ldID0gIiwgYXJnc1sw
XSwgIltpXSAiLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgIltpXTtcbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRlbnQsIHJldHVybk5hbWUsICIgPSB4O1xuIik7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwg
In1cbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBtYXRyaXgg
PG9wPiBzY2FsYXIKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICAgICAgIntcbiIsIG1ldGFsUmV0dXJuVHlwZSwgIiB4O1xuIiwKLSAgICAgICAg
ICAgICAgICAgICAgImZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeFtpXSA9
ICIsIGFyZ3NbMF0sICJbaV0gIiwgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICI7XG4iLAot
ICAgICAgICAgICAgICAgICAgICByZXR1cm5OYW1lLCAiID0geDtcbn1cbiIpOworICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIntcbiIpOworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQp
OworICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGVudCwgbWV0YWxSZXR1cm5UeXBlLCAiIHg7XG4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZW50LCAiZm9yIChzaXplX3QgaSA9IDA7IGkgPCB4LnNpemUoKTsg
KytpKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiAgICB4W2ldID0gIiwg
YXJnc1swXSwgIltpXSAiLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgIjtcbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIHJldHVybk5hbWUsICIgPSB4O1xuIik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVu
dCwgIn1cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIHJpZ2h0
TWF0cml4ID0gYXNNYXRyaXhUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKVsxXS0+dHlwZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKCFhc01hdHJpeFR5cGUoKm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKICAgICAg
ICAgICAgIC8vIHNjYWxhciA8b3A+IG1hdHJpeAotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoCi0gICAgICAgICAgICAgICAgIntcbiIsIG1ldGFsUmV0dXJuVHlwZSwgIiB4O1xuIiwK
LSAgICAgICAgICAgICAgICAiZm9yIChzaXplX3QgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB4
W2ldID0gIiwgYXJnc1swXSwgJyAnLCBvcGVyYXRvck5hbWUsICcgJywgYXJnc1sxXSwgIltpXTtc
biIsCi0gICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9IHg7XG59XG4iKTsKKyAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIntcbiIpOworICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKKyAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50
LCBtZXRhbFJldHVyblR5cGUsICIgeDtcbiIsCisgICAgICAgICAgICAgICAgICAgIGluZGVudCwg
ImZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSlcbiIsCisgICAgICAgICAgICAg
ICAgICAgIGluZGVudCwgIiAgICB4W2ldID0gIiwgYXJnc1swXSwgJyAnLCBvcGVyYXRvck5hbWUs
ICcgJywgYXJnc1sxXSwgIltpXTtcbiIsCisgICAgICAgICAgICAgICAgICAgIGluZGVudCwgcmV0
dXJuTmFtZSwgIiA9IHg7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKGluZGVudCwgIn1cbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gc2NhbGFyIDxvcD4gc2NhbGFyCiAgICAgICAgICAgICAvLyB2ZWN0b3IgPG9wPiB2ZWN0
b3IKICAgICAgICAgICAgIC8vIHZlY3RvciA8b3A+IHNjYWxhcgogICAgICAgICAgICAgLy8gc2Nh
bGFyIDxvcD4gdmVjdG9yCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgJyAnLCBvcGVyYXRvck5hbWUs
ICcgJywgYXJnc1sxXSwgIjtcbiIpOworICAgICAgICAgICAgICAgIGluZGVudCwgcmV0dXJuTmFt
ZSwgIiA9ICIsIGFyZ3NbMF0sICcgJywgb3BlcmF0b3JOYW1lLCAnICcsIGFyZ3NbMV0sICI7XG4i
KTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybjsKQEAgLTQ4NywxNCArNTQ4LDE0IEBAIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgfHwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gImxlbmd0aCIpIHsKICAgICAgICAgQVNTRVJU
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICByZXR1cm5OYW1lLCAiID0g
IiwgbWFwRnVuY3Rpb25OYW1lKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSwgJygn
LCBhcmdzWzBdLCAiKTtcbiIpOworICAgICAgICAgICAgaW5kZW50LCByZXR1cm5OYW1lLCAiID0g
IiwgbWFwRnVuY3Rpb25OYW1lKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpKSwgJygn
LCBhcmdzWzBdLCAiKTtcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJwb3ciIHx8IG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ubmFtZSgpID09ICJhdGFuMiIpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gIiwgbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCksICIoIiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwg
Iik7XG4iKTsKKyAgICAgICAgICAgIGluZGVudCwgcmV0dXJuTmFtZSwgIiA9ICIsIG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCAiKCIsIGFyZ3NbMF0sICIsICIsIGFyZ3NbMV0sICIp
O1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUwMiwxMyArNTYzLDIwIEBAIHZv
aWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgQVNTRVJUKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzKTsKICAgICAg
ICAgaWYgKGFzTWF0cml4VHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSkpIHsK
ICAgICAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5UeXBlID0gdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAie1xuIiwgbWV0YWxSZXR1cm5U
eXBlLCAiIHg7XG4iLAotICAgICAgICAgICAgICAgICJmb3IgKHNpemVfdCBpID0gMDsgaSA8IHgu
c2l6ZSgpOyArK2kpIHhbaV0gPSBjbGFtcCgiLCBhcmdzWzBdLCAiW2ldLCAiLCBhcmdzWzFdLCAi
W2ldLCAiLCBhcmdzWzJdLCAiW2ldKTsiLAotICAgICAgICAgICAgICAgIHJldHVybk5hbWUsICIg
PSB4O1xufVxuIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGluZGVudCwgIntcbiIpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluZGVu
dGF0aW9uU2NvcGUgc2NvcGUoaW5kZW50KTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBtZXRhbFJldHVyblR5cGUsICIg
eDtcbiIsCisgICAgICAgICAgICAgICAgICAgIGluZGVudCwgImZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgeC5zaXplKCk7ICsraSkgXG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAg
eFtpXSA9IGNsYW1wKCIsIGFyZ3NbMF0sICJbaV0sICIsIGFyZ3NbMV0sICJbaV0sICIsIGFyZ3Nb
Ml0sICJbaV0pOyIsCisgICAgICAgICAgICAgICAgICAgIGluZGVudCwgcmV0dXJuTmFtZSwgIiA9
IHg7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KGluZGVudCwgIn1cbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoCi0gICAgICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9IGNsYW1wKCIsIGFy
Z3NbMF0sICIsICIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICIpO1xuIik7CisgICAgICAgICAg
ICAgICAgaW5kZW50LCByZXR1cm5OYW1lLCAiID0gY2xhbXAoIiwgYXJnc1swXSwgIiwgIiwgYXJn
c1sxXSwgIiwgIiwgYXJnc1syXSwgIik7XG4iKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNTE2LDIzICs1ODQsMjMgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihT
dHJpbmdCdWlsZGVyJgogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9
PSAiQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMiKSB7CiAgICAgICAgIEFTU0VSVCghbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAidGhyZWFkZ3JvdXBfYmFycmllcihtZW1f
ZmxhZ3M6Om1lbV9kZXZpY2UpO1xuIgotICAgICAgICAgICAgInRocmVhZGdyb3VwX2JhcnJpZXIo
bWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApO1xuIgotICAgICAgICAgICAgInRocmVhZGdyb3Vw
X2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGV4dHVyZSk7XG4iKTsKKyAgICAgICAgICAgIGluZGVu
dCwgInRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2aWNlKTtcbiIsCisgICAg
ICAgICAgICBpbmRlbnQsICJ0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVh
ZGdyb3VwKTtcbiIsCisgICAgICAgICAgICBpbmRlbnQsICJ0aHJlYWRncm91cF9iYXJyaWVyKG1l
bV9mbGFnczo6bWVtX3RleHR1cmUpO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRldmljZU1lbW9yeUJh
cnJpZXJXaXRoR3JvdXBTeW5jIikgewogICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICAgICAgInRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2
aWNlKTtcbiIpOworICAgICAgICAgICAgaW5kZW50LCAidGhyZWFkZ3JvdXBfYmFycmllcihtZW1f
ZmxhZ3M6Om1lbV9kZXZpY2UpO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkdyb3VwTWVtb3J5QmFycmll
cldpdGhHcm91cFN5bmMiKSB7CiAgICAgICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Ci0gICAgICAgICAgICAidGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRn
cm91cCk7XG4iKTsKKyAgICAgICAgICAgIGluZGVudCwgInRocmVhZGdyb3VwX2JhcnJpZXIobWVt
X2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTU0MCwxNSArNjA4LDE1IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYKICAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJJ
bnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSIpIHsKICAgICAgICAgICAgIEFTU0VSVChuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gNCk7CiAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAiYXRvbWljX2NvbXBhcmVf
ZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAmIiwgYXJnc1sxXSwgIiwgIiwg
YXJnc1syXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQsIG1lbW9yeV9vcmRlcl9yZWxheGVkKTtc
biIsCi0gICAgICAgICAgICAgICAgJyonLCBhcmdzWzNdLCAiID0gIiwgYXJnc1sxXSwgIjtcbiIp
OworICAgICAgICAgICAgICAgIGluZGVudCwgImF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtf
ZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgJiIsIGFyZ3NbMV0sICIsICIsIGFyZ3NbMl0sICIsIG1l
bW9yeV9vcmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iLAorICAgICAgICAg
ICAgICAgIGluZGVudCwgJyonLCBhcmdzWzNdLCAiID0gIiwgYXJnc1sxXSwgIjtcbiIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzKTsKICAgICAgICAgYXV0byBu
YW1lID0gYXRvbWljTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJp
bmcoIkludGVybG9ja2VkIl9zdHIubGVuZ3RoKCkpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoCi0gICAgICAgICAgICAnKicsIGFyZ3NbMl0sICIgPSBhdG9taWNfIiwgbmFtZSwgIl9l
eHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7XG4iKTsKKyAgICAgICAgICAgIGluZGVudCwgJyonLCBhcmdzWzJdLCAiID0gYXRvbWljXyIs
IG5hbWUsICJfZXhwbGljaXQoIiwgYXJnc1swXSwgIiwgIiwgYXJnc1sxXSwgIiwgbWVtb3J5X29y
ZGVyX3JlbGF4ZWQpO1xuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU2Miw3ICs2
MzAsNyBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAg
IGF1dG8gcmV0dXJuVmVjdG9yTGVuZ3RoID0gdmVjdG9yTGVuZ3RoKHJldHVyblR5cGUpOwogCiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgcmV0dXJuTmFtZSwgIiA9
ICIsIGFyZ3NbMF0sICIuc2FtcGxlKCIsIGFyZ3NbMV0sICIsICIpOworICAgICAgICAgICAgaW5k
ZW50LCByZXR1cm5OYW1lLCAiID0gIiwgYXJnc1swXSwgIi5zYW1wbGUoIiwgYXJnc1sxXSwgIiwg
Iik7CiAKICAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwpAQCAtNTg5LDQxICs2NTcs
NjYgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBh
dXRvIHJldHVyblZlY3Rvckxlbmd0aCA9IHZlY3Rvckxlbmd0aChyZXR1cm5UeXBlKTsKIAogICAg
ICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
cmV0dXJuVHlwZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJkbyB7XG4iKTsKIAot
ICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBTdHJpbmcgZGlt
ZW5zaW9uc1tdID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0ciB9Owot
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDE7
ICsraSkgewotICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJp
bmcoaSwgMSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAo
IiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pigi
LCBhcmdzWzFdLCAnLicsIHN1ZmZpeCwgIikgPj0gIiwgYXJnc1swXSwgIi5nZXRfIiwgZGltZW5z
aW9uc1tpXSwgIigpKSB7IiwgcmV0dXJuTmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigw
KTsgYnJlYWs7fVxuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIHN1ZmZpeCA9
ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSk7Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAnLicsIHN1
ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICcuJywgc3Vm
Zml4LCAiKSA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCkpIHsiLCByZXR1cm5OYW1l
LCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKCIsIGFyZ3NbMV0sICIgPCAw
IHx8IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAiKSA+PSAiLCBhcmdzWzBdLCAi
LmdldF93aWR0aCgpKSB7ICIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVybk5hbWUsICIo
MCk7IGJyZWFrO31cbiIpOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKGluZGVudCwgImRvIHtcbiIpOworICAgICAgICB7CisgICAgICAgICAgICBJbmRl
bnRhdGlvblNjb3BlIHNjb3BlKGluZGVudCk7CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlVHlw
ZS5pc1RleHR1cmVBcnJheSgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVj
dG9yTGVuZ3RoID4gMSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGRpbWVuc2lvbnNbXSA9IHsg
IndpZHRoIl9zdHIsICJoZWlnaHQiX3N0ciwgImRlcHRoIl9zdHIgfTsKKyAgICAgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJpbmcoaSwg
MSk7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZW50LCAiaWYgKCIsIGFyZ3NbMV0sICcuJywgc3VmZml4LCAiIDwg
MCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgJy4nLCBzdWZmaXgsICIpID49
ICIsIGFyZ3NbMF0sICIuZ2V0XyIsIGRpbWVuc2lvbnNbaV0sICIoKSkge1xuIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGVudCwgIiAgICAiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxS
ZXR1cm5OYW1lLCAiKDApO1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiAg
ICBicmVhaztcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJ9XG4iKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6dyJfc3Ry
LnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwogICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAiICAgIGlmICgiLCBh
cmdzWzFdLCAiLnggPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAiLngp
ID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0
YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iCi0gICAgICAgICAgICAgICAgICAgICIgICAg
aWYgKCIsIGFyZ3NbMV0sICIueSA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3Nb
MV0sICIueSkgPj0gIiwgYXJnc1swXSwgIi5nZXRfaGVpZ2h0KCkpIHsiLCByZXR1cm5OYW1lLCAi
ID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVhazt9XG4iKTsKLQotICAgICAgICAgICAg
ICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzFdLCAiLnogPCAwIHx8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAiLnopID49ICIsIGFyZ3NbMF0sICIuZ2V0X2Rl
cHRoKCkpIHsiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApOyBicmVh
azt9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiaWYgKCIsIGFyZ3NbMV0sICcu
Jywgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgJy4n
LCBzdWZmaXgsICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0X2FycmF5X3NpemUoKSkge1xuIiwKKyAg
ICAgICAgICAgICAgICAgICAgaW5kZW50LCAiICAgICIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRh
bFJldHVybk5hbWUsICIoMCk7XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAg
YnJlYWs7XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJ9XG4iKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID09
IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgYXJnc1sxXSwgIiA8IDAgfHwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KCIsIGFyZ3NbMV0sICIpID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRo
KCkpIHtcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIgICAgIiwgcmV0dXJu
TmFtZSwgIiA9ICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRlbnQsICIgICAgYnJlYWs7XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZW50LCAifVxuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
bnQsICJpZiAoIiwgYXJnc1sxXSwgIi54IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwg
YXJnc1sxXSwgIi54KSA+PSAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgpKSB7XG4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZW50LCAiICAgICIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRh
bFJldHVybk5hbWUsICIoMCk7XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAi
ICAgIGJyZWFrO1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgIn1cbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgYXJnc1sxXSwgIi55IDwgMCB8
fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgYXJnc1sxXSwgIi55KSA+PSAiLCBhcmdzWzBdLCAi
LmdldF9oZWlnaHQoKSkge1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiAg
ICAiLCByZXR1cm5OYW1lLCAiID0gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiAgICBicmVhaztcbiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRlbnQsICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0
aW9uVmVjdG9yTGVuZ3RoID49IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgImlmICgi
LCBhcmdzWzFdLCAiLnogPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBhcmdzWzFdLCAi
LnopID49ICIsIGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCkpIHtcbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZW50LCAiICAgICIsIHJldHVybk5hbWUsICIgPSAiLCBtZXRhbFJldHVy
bk5hbWUsICIoMCk7XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiAg
ICBicmVhaztcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAifVxuIik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpbmRlbnQsIHJldHVybk5hbWUsICIg
PSAiLCBhcmdzWzBdLCAiLnJlYWQoIik7CisgICAgICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNU
ZXh0dXJlQXJyYXkoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxl
bmd0aCA+IDEpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50Iiwg
dmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICcoJywgYXJnc1sxXSwgJy4n
LCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwg
dWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9y
TGVuZ3RoIC0gMSwgMSksICcpJyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rv
ckxlbmd0aCksICcoJywgYXJnc1sxXSwgJyknKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCcpJyk7CisgICAgICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJl
KCkpCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nLCAieHl6dyJfc3Ry
LnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCI7XG4iKTsKICAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICAgICIsIHJldHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLnJlYWQoIik7Ci0gICAg
ICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7Ci0gICAgICAgICAgICBBU1NF
UlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICco
JywgYXJnc1sxXSwgJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxl
bmd0aCAtIDEpLCAiKSwgdWludCgiLCBhcmdzWzFdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSksICcpJyk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGgpLCAnKCcsIGFyZ3NbMV0sICcpJyk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNEZXB0aFRleHR1cmUo
KSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJywgInh5enciX3N0ci5zdWJz
dHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAotICAgICAgICAgICAgIjtcbiIKLSAgICAgICAgICAgICJ9IHdoaWxlKDApO1xuIik7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGluZGVudCwgIn0gd2hpbGUoMCk7XG4iKTsKIAog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjMxLDE0ICs3MjQsMTQgQEAgdm9pZCBpbmxpbmVO
YXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLm5hbWUoKSA9PSAibG9hZCIpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoCi0gICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gYXRvbWljX2xvYWRfZXhw
bGljaXQoIiwgYXJnc1swXSwgIiwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7CisgICAgICAg
ICAgICBpbmRlbnQsIHJldHVybk5hbWUsICIgPSBhdG9taWNfbG9hZF9leHBsaWNpdCgiLCBhcmdz
WzBdLCAiLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAic3RvcmUi
KSB7CiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KS5zaXplKCkgPT0gMik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgImF0b21pY19zdG9yZV9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsKKyAgICAgICAgICAgIGluZGVudCwgImF0b21pY19z
dG9yZV9leHBsaWNpdCgiLCBhcmdzWzBdLCAiLCAiLCBhcmdzWzFdLCAiLCBtZW1vcnlfb3JkZXJf
cmVsYXhlZCk7XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjc0LDM3ICs3Njcs
MzcgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBB
U1NFUlQoaW5kZXggPT0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6
ZSgpKTsKIAogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICJpZiAo
Iiwgd2lkdGhOYW1lLCAiKVxuIgotICAgICAgICAgICAgIiAgICAqIiwgd2lkdGhOYW1lLCAiID0g
IiwgYXJnc1swXSwgIi5nZXRfd2lkdGgoIik7Ci0KKyAgICAgICAgICAgIGluZGVudCwgImlmICgi
LCB3aWR0aE5hbWUsICIpXG4iLAorICAgICAgICAgICAgaW5kZW50LCAiICAgICoiLCB3aWR0aE5h
bWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF93aWR0aCgiKTsKICAgICAgICAgaWYgKGhhc01pcExl
dmVsKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CisKICAgICAgICAgaWYgKGhlaWdodE5hbWUp
IHsKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIg
ICAgaWYgKCIsICpoZWlnaHROYW1lLCAiKVxuIgotICAgICAgICAgICAgICAgICIgICAgICAgICoi
LCAqaGVpZ2h0TmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0X2hlaWdodCgiKTsKKyAgICAgICAg
ICAgICAgICBpbmRlbnQsICJpZiAoIiwgKmhlaWdodE5hbWUsICIpXG4iLAorICAgICAgICAgICAg
ICAgIGluZGVudCwgIiAgICAqIiwgKmhlaWdodE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9o
ZWlnaHQoIik7CiAgICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCiAgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoYXJnc1sxXSk7CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXB0aE5hbWUpIHsKICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIgICAgaWYg
KCIsICpkZXB0aE5hbWUsICIpXG4iCi0gICAgICAgICAgICAgICAgIiAgICAgICAgKiIsICpkZXB0
aE5hbWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgiKTsKKyAgICAgICAgICAgICAgICBp
bmRlbnQsICJpZiAoIiwgKmRlcHRoTmFtZSwgIilcbiIsCisgICAgICAgICAgICAgICAgaW5kZW50
LCAiICAgICoiLCAqZGVwdGhOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfZGVwdGgoIik7CiAg
ICAgICAgICAgICBpZiAoaGFzTWlwTGV2ZWwpCiAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoYXJnc1sxXSk7CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtc
biIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChlbGVtZW50c05hbWUpIHsKICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICIgICAgaWYgKCIsICplbGVt
ZW50c05hbWUsICIpXG4iCi0gICAgICAgICAgICAgICAgIiAgICAgICAgKiIsICplbGVtZW50c05h
bWUsICIgPSAiLCBhcmdzWzBdLCAiLmdldF9hcnJheV9zaXplKCk7XG4iKTsKKyAgICAgICAgICAg
ICAgICBpbmRlbnQsICJpZiAoIiwgKmVsZW1lbnRzTmFtZSwgIilcbiIsCisgICAgICAgICAgICAg
ICAgaW5kZW50LCAiICAgICoiLCAqZWxlbWVudHNOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRf
YXJyYXlfc2l6ZSgpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG51bWJlck9mTGV2ZWxz
TmFtZSkgewogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgIiAgICBpZiAoIiwgKm51bWJlck9mTGV2ZWxzTmFtZSwgIilcbiIKLSAgICAgICAgICAgICAg
ICAiICAgICAgICAqIiwgKm51bWJlck9mTGV2ZWxzTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIuZ2V0
X251bV9taXBfbGV2ZWxzKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwg
Km51bWJlck9mTGV2ZWxzTmFtZSwgIilcbiIsCisgICAgICAgICAgICAgICAgaW5kZW50LCAiICAg
ICoiLCAqbnVtYmVyT2ZMZXZlbHNOYW1lLCAiID0gIiwgYXJnc1swXSwgIi5nZXRfbnVtX21pcF9s
ZXZlbHMoKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NTcs
MzggKzg1MCw1MiBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAg
ICAgICAgIGF1dG8gbWV0YWxJbm5lclR5cGVOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShpdGVtVmVjdG9ySW5uZXJUeXBlKTsKIAogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiZG8ge1xuIik7Ci0gICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7
Ci0gICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAg
ICAgIFN0cmluZyBkaW1lbnNpb25zW10gPSB7ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJk
ZXB0aCJfc3RyIH07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVj
dG9yTGVuZ3RoIC0gMTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6
dyJfc3RyLnN1YnN0cmluZyhpLCAxKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiLiIsIHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAi
LmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIGJyZWFrO1xuIik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVj
dG9yTGVuZ3RoIC0gMSwgMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAg
IGlmICgiLCBhcmdzWzJdLCAnLicsIHN1ZmZpeCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF9hcnJh
eV9zaXplKCkpIGJyZWFrO1xuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
bG9jYXRpb25WZWN0b3JMZW5ndGggPT0gMSkKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiICAgIGlmICgiLCBhcmdzWzJdLCAiID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRo
KCkpIGJyZWFrO1xuIik7Ci0gICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgeworICAgICAgICAg
ICAgSW5kZW50YXRpb25TY29wZSBzY29wZShpbmRlbnQpOworCisgICAgICAgICAgICBpZiAodGV4
dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChsb2Nh
dGlvblZlY3Rvckxlbmd0aCA+IDEpOworICAgICAgICAgICAgICAgIFN0cmluZyBkaW1lbnNpb25z
W10gPSB7ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0aCJfc3RyIH07CisgICAgICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDE7ICsr
aSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3Ry
aW5nKGksIDEpOworICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgImlmICgiLCBhcmdzWzJdLCAiLiIsIHN1ZmZp
eCwgIiA+PSAiLCBhcmdzWzBdLCAiLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpXG4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiICAgIGJyZWFrO1xuIik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJp
bmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKTsKICAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoIiwgYXJnc1syXSwg
Ii54ID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpIGJyZWFrO1xuIgotICAgICAgICAgICAg
ICAgICAgICAiICAgIGlmICgiLCBhcmdzWzJdLCAiLnkgPj0gIiwgYXJnc1swXSwgIi5nZXRfaGVp
Z2h0KCkpIGJyZWFrO1xuIik7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVu
Z3RoID49IDMpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAg
aWYgKCIsIGFyZ3NbMl0sICIueiA+PSAiLCBhcmdzWzBdLCAiLmdldF9kZXB0aCgpKSBicmVhaztc
biIpOworICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgYXJnc1syXSwgJy4nLCBz
dWZmaXgsICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfYXJyYXlfc2l6ZSgpKVxuIiwKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZW50LCAiICAgIGJyZWFrO1xuIik7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKSB7CisgICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZW50LCAiaWYgKCIsIGFyZ3NbMl0sICIgPj0gIiwgYXJnc1swXSwgIi5nZXRfd2lk
dGgoKSkgXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiICAgIGJyZWFrO1xu
Iik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwg
YXJnc1syXSwgIi54ID49ICIsIGFyZ3NbMF0sICIuZ2V0X3dpZHRoKCkpXG4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZW50LCAiICAgIGJyZWFrO1xuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGVudCwgImlmICgiLCBhcmdzWzJdLCAiLnkgPj0gIiwgYXJnc1swXSwgIi5nZXRf
aGVpZ2h0KCkpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiICAgIGJyZWFr
O1xuIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAz
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICJpZiAoIiwgYXJnc1syXSwgIi56ID49ICIs
IGFyZ3NbMF0sICIuZ2V0X2RlcHRoKCkpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGVudCwgIiAgICBicmVhaztcbiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaW5kZW50LCBhcmdzWzBdLCAiLndyaXRlKHZlYzwiLCBtZXRhbElubmVyVHlwZU5hbWUsICIs
IDQ+KCIsIGFyZ3NbMV0pOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0IC0gaXRl
bVZlY3Rvckxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIsIDAiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAiKTsKKyAgICAg
ICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7CisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5n
dGggLSAxKSwgJygnLCBhcmdzWzJdLCAnLicsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0
aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIpLCB1aW50KCIsIGFyZ3NbMl0sICIuIiwgInh5enciX3N0
ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSwgJyknKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50Iiwg
dmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzJdLCAnKScpOwor
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsKICAgICAgICAgfQotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICIsIGFyZ3NbMF0sICIud3JpdGUodmVjPCIs
IG1ldGFsSW5uZXJUeXBlTmFtZSwgIiwgND4oIiwgYXJnc1sxXSk7Ci0gICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgNCAtIGl0ZW1WZWN0b3JMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIsIDAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiks
ICIpOwotICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewotICAgICAg
ICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0
aCAtIDEpLCAnKCcsIGFyZ3NbMl0sICcuJywgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRp
b25WZWN0b3JMZW5ndGggLSAxKSwgIiksIHVpbnQoIiwgYXJnc1syXSwgIi4iLCAieHl6dyJfc3Ry
LnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1aW50IiwgdmVjdG9yU3Vm
Zml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgJygnLCBhcmdzWzJdLCAnKScpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKLSAgICAgICAgICAgICIpO1xuIgotICAgICAgICAgICAgIn0g
d2hpbGUoMCk7XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaW5kZW50LCAifSB3
aGlsZSgwKTtcbiIpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5oCShyZXZpc2lvbiAyNDg4MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9u
V3JpdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIE1ldGFs
IHsKIAogY2xhc3MgVHlwZU5hbWVyOwogCi12b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmlu
Z0J1aWxkZXImLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mLCBNYW5nbGVkVmFyaWFi
bGVOYW1lIHJldHVybk5hbWUsIGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgYXJn
dW1lbnROYW1lcywgSW50cmluc2ljcyYsIFR5cGVOYW1lciYpOwordm9pZCBpbmxpbmVOYXRpdmVG
dW5jdGlvbihTdHJpbmdCdWlsZGVyJiwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiwg
TWFuZ2xlZFZhcmlhYmxlTmFtZSByZXR1cm5OYW1lLCBjb25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlh
YmxlTmFtZT4mIGFyZ3VtZW50TmFtZXMsIEludHJpbnNpY3MmLCBUeXBlTmFtZXImLCBzdGQ6OmZ1
bmN0aW9uPE1hbmdsZWRWYXJpYWJsZU5hbWUoKT4mJiwgSW5kZW50YXRpb248ND4pOwogCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlw
ZU5hbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJKHJldmlzaW9uIDI0ODgzMykKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5u
YW1lZFR5cGVEZWZpbml0aW8KICAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93
bmNhc3Q8QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpOwogICAg
ICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7CiAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAotICAgICAgICAgICAgInN0cnVjdCAiLCBhcnJheVJlZmVyZW5jZVR5cGUu
bWFuZ2xlZE5hbWUoKSwgInsgXG4iCisgICAgICAgICAgICAic3RydWN0ICIsIGFycmF5UmVmZXJl
bmNlVHlwZS5tYW5nbGVkTmFtZSgpLCAiIHtcbiIKICAgICAgICAgICAgICIgICAgIiwgdG9TdHJp
bmcoYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBhcnJheVJlZmVyZW5j
ZVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqIHBvaW50ZXI7XG4iCiAgICAgICAgICAg
ICAiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIKICAgICAgICAgICAgICJ9O1xuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>376650</attachid>
            <date>2019-08-18 14:30:44 -0700</date>
            <delta_ts>2019-08-18 14:30:44 -0700</delta_ts>
            <desc>before.txt</desc>
            <filename>before.txt</filename>
            <type>text/plain</type>
            <size>31689</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">R2VuZXJhdGVkIE1ldGFsIGNvZGU6IAojaW5jbHVkZSA8bWV0YWxfc3RkbGliPgojaW5jbHVkZSA8
bWV0YWxfYXRvbWljPgojaW5jbHVkZSA8bWV0YWxfbWF0aD4KI2luY2x1ZGUgPG1ldGFsX3JlbGF0
aW9uYWw+CiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPgojaW5jbHVkZSA8bWV0YWxfdGV4dHVyZT4K
CnVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKCnN0cnVjdCB0eXBlNjA7CnN0cnVjdCB0eXBlNjE7CnN0
cnVjdCB0eXBlNjM7Cgp0eXBlZGVmIGludDQgdHlwZTE3Owp0eXBlZGVmIHR5cGUxNyB0eXBlMTY7
CnR5cGVkZWYgYXJyYXk8ZmxvYXQsIDY+IHR5cGUzMTsKdHlwZWRlZiB0eXBlMzEgdHlwZTMwOwp0
eXBlZGVmIGZsb2F0IHR5cGU2MjsKc3RydWN0IHR5cGU2MSB7CiAgICB0eXBlNjIgc3RydWN0dXJl
RWxlbWVudDI7CiAgICB0eXBlNjIgc3RydWN0dXJlRWxlbWVudDM7CiAgICB0eXBlNjIgc3RydWN0
dXJlRWxlbWVudDQ7CiAgICB0eXBlNjIgc3RydWN0dXJlRWxlbWVudDU7CiAgICB0eXBlNjIgc3Ry
dWN0dXJlRWxlbWVudDY7CiAgICB0eXBlNjIgc3RydWN0dXJlRWxlbWVudDc7CiAgICB0eXBlNjIg
c3RydWN0dXJlRWxlbWVudDg7Cn07CnR5cGVkZWYgYXJyYXk8Ym9vbCwgMTY+IHR5cGU1OTsKdHlw
ZWRlZiB0eXBlNTkgdHlwZTU4Owp0eXBlZGVmIGZsb2F0MyB0eXBlMjE7CnR5cGVkZWYgdHlwZTIx
IHR5cGUyMDsKdHlwZWRlZiBpbnQyIHR5cGUxMzsKdHlwZWRlZiB0eXBlMTMgdHlwZTEyOwp0eXBl
ZGVmIGFycmF5PGJvb2wsIDEyPiB0eXBlNTM7CnR5cGVkZWYgdHlwZTUzIHR5cGU1MjsKdHlwZWRl
ZiBhcnJheTxib29sLCA2PiB0eXBlNDU7CnR5cGVkZWYgdHlwZTQ1IHR5cGU0NDsKdHlwZWRlZiB1
aW50MyB0eXBlOTsKdHlwZWRlZiB0eXBlOSB0eXBlODsKdHlwZWRlZiB1aW50NCB0eXBlMTE7CnR5
cGVkZWYgdHlwZTExIHR5cGUxMDsKdHlwZWRlZiBhcnJheTxib29sLCA0PiB0eXBlNDM7CnR5cGVk
ZWYgdHlwZTQzIHR5cGU0MjsKc3RydWN0IHR5cGU2MyB7Cn07CnR5cGVkZWYgYm9vbDMgdHlwZTM7
CnR5cGVkZWYgdHlwZTMgdHlwZTI7CnR5cGVkZWYgYXJyYXk8Ym9vbCwgOT4gdHlwZTUxOwp0eXBl
ZGVmIHR5cGU1MSB0eXBlNTA7CnR5cGVkZWYgYXJyYXk8ZmxvYXQsIDE2PiB0eXBlNDE7CnR5cGVk
ZWYgdHlwZTQxIHR5cGU0MDsKdHlwZWRlZiBhcnJheTxib29sLCAxMj4gdHlwZTU3Owp0eXBlZGVm
IHR5cGU1NyB0eXBlNTY7CnR5cGVkZWYgYXJyYXk8Ym9vbCwgNj4gdHlwZTQ5Owp0eXBlZGVmIHR5
cGU0OSB0eXBlNDg7CnR5cGVkZWYgYXJyYXk8ZmxvYXQsIDk+IHR5cGUzMzsKdHlwZWRlZiB0eXBl
MzMgdHlwZTMyOwp0eXBlZGVmIGFycmF5PGJvb2wsIDg+IHR5cGU1NTsKdHlwZWRlZiB0eXBlNTUg
dHlwZTU0Owp0eXBlZGVmIGFycmF5PGZsb2F0LCAxMj4gdHlwZTM1Owp0eXBlZGVmIHR5cGUzNSB0
eXBlMzQ7CnR5cGVkZWYgdWludDIgdHlwZTc7CnR5cGVkZWYgdHlwZTcgdHlwZTY7CnR5cGVkZWYg
YXJyYXk8ZmxvYXQsIDg+IHR5cGUzNzsKdHlwZWRlZiB0eXBlMzcgdHlwZTM2Owp0eXBlZGVmIGZs
b2F0MiB0eXBlMTk7CnN0cnVjdCB0eXBlNjAgewogICAgdHlwZTE5IHN0cnVjdHVyZUVsZW1lbnQw
OwogICAgdHlwZTE5IHN0cnVjdHVyZUVsZW1lbnQxOwp9Owp0eXBlZGVmIGFycmF5PGZsb2F0LCAx
Mj4gdHlwZTM5Owp0eXBlZGVmIHR5cGUzOSB0eXBlMzg7CnR5cGVkZWYgYXJyYXk8ZmxvYXQsIDQ+
IHR5cGUyNTsKdHlwZWRlZiB0eXBlMjUgdHlwZTI0Owp0eXBlZGVmIHR5cGUxOSB0eXBlMTg7CnR5
cGVkZWYgYXJyYXk8Ym9vbCwgOD4gdHlwZTQ3Owp0eXBlZGVmIHR5cGU0NyB0eXBlNDY7CnR5cGVk
ZWYgaW50MyB0eXBlMTU7CnR5cGVkZWYgdHlwZTE1IHR5cGUxNDsKdHlwZWRlZiBib29sMiB0eXBl
MTsKdHlwZWRlZiB0eXBlMSB0eXBlMDsKdHlwZWRlZiBhcnJheTxmbG9hdCwgOD4gdHlwZTI5Owp0
eXBlZGVmIHR5cGUyOSB0eXBlMjg7CnR5cGVkZWYgYm9vbDQgdHlwZTU7CnR5cGVkZWYgdHlwZTUg
dHlwZTQ7CnR5cGVkZWYgZmxvYXQ0IHR5cGUyMzsKdHlwZWRlZiB0eXBlMjMgdHlwZTIyOwp0eXBl
ZGVmIGFycmF5PGZsb2F0LCA2PiB0eXBlMjc7CnR5cGVkZWYgdHlwZTI3IHR5cGUyNjsKdHlwZWRl
ZiBjb25zdGFudCB0eXBlMTkqIHR5cGU4MTsKdHlwZWRlZiB0ZXh0dXJlMmQ8aW50LCBhY2Nlc3M6
OnNhbXBsZT4gdHlwZTEyMTsKdHlwZWRlZiB0ZXh0dXJlMmQ8aW50LCBhY2Nlc3M6OnNhbXBsZT4g
dHlwZTEyMDsKdHlwZWRlZiB0ZXh0dXJlMWRfYXJyYXk8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlw
ZTExMTsKdHlwZWRlZiB0ZXh0dXJlMmRfYXJyYXk8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBl
MTM2Owp0eXBlZGVmIHRleHR1cmUxZF9hcnJheTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEw
NDsKdHlwZWRlZiB0ZXh0dXJlMmRfYXJyYXk8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTM5
Owp0eXBlZGVmIGRlcHRoMmRfYXJyYXk8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTY1Owp0
eXBlZGVmIHRleHR1cmUyZDx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTExNzsKdHlwZWRlZiB0
eXBlNjAgdHlwZTY3Owp0eXBlZGVmIHRocmVhZGdyb3VwIHR5cGU2NyogdHlwZTg0Owp0eXBlZGVm
IHRleHR1cmVjdWJlPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNTc7CnR5cGVkZWYgdGV4dHVy
ZTFkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEwMzsKdHlwZWRlZiB0ZXh0dXJlMWQ8aW50
LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTk2Owp0eXBlZGVmIHR5cGU2MSB0eXBlNjU7CnR5cGVkZWYg
dGV4dHVyZTFkPHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlOTM7CnR5cGVkZWYgdm9pZCB0eXBl
NjQ7CnR5cGVkZWYgdGV4dHVyZWN1YmU8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE1ODsKdHlw
ZWRlZiB0ZXh0dXJlMWQ8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTk5Owp0eXBlZGVmIHRleHR1
cmUzZDx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE0MjsKdHlwZWRlZiB0aHJlYWRncm91cCB0
eXBlMTkqIHR5cGU4MzsKdHlwZWRlZiB0aHJlYWRncm91cCB0eXBlNjUqIHR5cGU5MDsKdHlwZWRl
ZiBjb25zdGFudCB0eXBlNjUqIHR5cGU4NzsKdHlwZWRlZiB0ZXh0dXJlMWRfYXJyYXk8dWludCwg
YWNjZXNzOjpzYW1wbGU+IHR5cGUxMDU7CnR5cGVkZWYgdGhyZWFkIHR5cGU2NSogdHlwZTgwOwp0
eXBlZGVmIHRleHR1cmUxZDxpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlOTg7CnR5cGVkZWYgZGV2
aWNlIHR5cGU2NSogdHlwZTc1Owp0eXBlZGVmIHRleHR1cmUyZF9hcnJheTxpbnQsIGFjY2Vzczo6
c2FtcGxlPiB0eXBlMTMyOwpzdHJ1Y3QgdHlwZTY2eyAKICAgIGRldmljZSB0eXBlNjUqIHBvaW50
ZXI7CiAgICB1aW50MzJfdCBsZW5ndGg7Cn07CnR5cGVkZWYgdGV4dHVyZTJkPGZsb2F0LCBhY2Nl
c3M6OnNhbXBsZT4gdHlwZTEyNzsKdHlwZWRlZiBkZXB0aGN1YmU8ZmxvYXQsIGFjY2Vzczo6c2Ft
cGxlPiB0eXBlMTY2Owp0eXBlZGVmIHRleHR1cmUyZDxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5
cGUxMjY7CnR5cGVkZWYgdGV4dHVyZTFkX2FycmF5PGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlw
ZTExNTsKdHlwZWRlZiB0ZXh0dXJlMmRfYXJyYXk8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUx
MzE7CnR5cGVkZWYgdGV4dHVyZTNkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE0ODsKdHlw
ZWRlZiB0ZXh0dXJlY3ViZTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE1MzsKdHlwZWRlZiB0
ZXh0dXJlMWRfYXJyYXk8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTEzOwp0eXBlZGVmIHRl
eHR1cmUxZF9hcnJheTxpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTA4Owp0eXBlZGVmIHRocmVh
ZCB0eXBlNjIqIHR5cGU3NDsKdHlwZWRlZiB0ZXh0dXJlMmRfYXJyYXk8aW50LCBhY2Nlc3M6OnNh
bXBsZT4gdHlwZTEzMzsKdHlwZWRlZiB0ZXh0dXJlMmQ8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlw
ZTEyMjsKdHlwZWRlZiB0ZXh0dXJlM2Q8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNDM7CnR5
cGVkZWYgdGV4dHVyZTFkX2FycmF5PHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTA3Owp0eXBl
ZGVmIHRleHR1cmVjdWJlPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNTk7CnR5cGVkZWYgdHlw
ZTYzIHR5cGU2OTsKdHlwZWRlZiBkZXZpY2UgdHlwZTYyKiB0eXBlODg7CnR5cGVkZWYgdGV4dHVy
ZTNkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE1MTsKdHlwZWRlZiB0ZXh0dXJlM2Q8Zmxv
YXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTQ5Owp0eXBlZGVmIHRleHR1cmVjdWJlPGludCwgYWNj
ZXNzOjpzYW1wbGU+IHR5cGUxNTY7CnR5cGVkZWYgdGV4dHVyZTJkX2FycmF5PHVpbnQsIGFjY2Vz
czo6c2FtcGxlPiB0eXBlMTI5Owp0eXBlZGVmIHRocmVhZGdyb3VwIHR5cGU2MiogdHlwZTg5Owp0
eXBlZGVmIHRleHR1cmUxZDxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMDI7CnN0cnVjdCB0
eXBlNjh7IAogICAgZGV2aWNlIHR5cGU2NyogcG9pbnRlcjsKICAgIHVpbnQzMl90IGxlbmd0aDsK
fTsKdHlwZWRlZiB0ZXh0dXJlMmQ8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMTg7CnR5cGVk
ZWYgdGV4dHVyZTJkPHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTE5Owp0eXBlZGVmIHRleHR1
cmVjdWJlPHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTUyOwp0eXBlZGVmIHRocmVhZCB0eXBl
NjkqIHR5cGU3MDsKdHlwZWRlZiB0ZXh0dXJlM2Q8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE0
NzsKdHlwZWRlZiB0ZXh0dXJlMWQ8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTk3Owp0eXBlZGVm
IHNhbXBsZXIgdHlwZTkxOwp0eXBlZGVmIHRleHR1cmUyZF9hcnJheTxmbG9hdCwgYWNjZXNzOjpz
YW1wbGU+IHR5cGUxMzc7CnR5cGVkZWYgdGV4dHVyZWN1YmU8dWludCwgYWNjZXNzOjpzYW1wbGU+
IHR5cGUxNTQ7CnR5cGVkZWYgdGV4dHVyZWN1YmU8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBl
MTYzOwp0eXBlZGVmIHRleHR1cmUzZDx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE0MDsKdHlw
ZWRlZiB0ZXh0dXJlY3ViZTxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNjE7CnR5cGVkZWYg
dGV4dHVyZTFkPHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlOTU7CnR5cGVkZWYgdGhyZWFkIHR5
cGUxOSogdHlwZTczOwp0eXBlZGVmIGludDMyX3QgdHlwZTc2Owp0eXBlZGVmIHRleHR1cmUzZDxp
bnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTQ1Owp0eXBlZGVmIHRleHR1cmUxZF9hcnJheTxmbG9h
dCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMTQ7CnR5cGVkZWYgZGVwdGgyZDxmbG9hdCwgYWNjZXNz
OjpzYW1wbGU+IHR5cGUxNjQ7CnR5cGVkZWYgZGV2aWNlIHR5cGU2NyogdHlwZTc5Owp0eXBlZGVm
IHRleHR1cmUyZF9hcnJheTxpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTM1Owp0eXBlZGVmIHRl
eHR1cmUyZF9hcnJheTxpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTM0Owp0eXBlZGVmIHRleHR1
cmUyZF9hcnJheTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEyODsKdHlwZWRlZiB0ZXh0dXJl
MmQ8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMTY7CnR5cGVkZWYgdGV4dHVyZWN1YmU8dWlu
dCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNTU7CnR5cGVkZWYgdGV4dHVyZTFkPGZsb2F0LCBhY2Nl
c3M6OnNhbXBsZT4gdHlwZTEwMTsKdHlwZWRlZiB0ZXh0dXJlMmRfYXJyYXk8dWludCwgYWNjZXNz
OjpzYW1wbGU+IHR5cGUxMzA7CnR5cGVkZWYgY29uc3RhbnQgdHlwZTY3KiB0eXBlODI7CnR5cGVk
ZWYgdGV4dHVyZTJkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEyNTsKdHlwZWRlZiBkZXZp
Y2UgdHlwZTE5KiB0eXBlNzg7CnR5cGVkZWYgdGV4dHVyZWN1YmU8ZmxvYXQsIGFjY2Vzczo6c2Ft
cGxlPiB0eXBlMTYyOwp0eXBlZGVmIHRleHR1cmUxZF9hcnJheTxpbnQsIGFjY2Vzczo6c2FtcGxl
PiB0eXBlMTA5Owp0eXBlZGVmIHRleHR1cmUyZF9hcnJheTxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+
IHR5cGUxMzg7CnR5cGVkZWYgYm9vbCB0eXBlNzc7CnR5cGVkZWYgdGV4dHVyZTFkPHVpbnQsIGFj
Y2Vzczo6c2FtcGxlPiB0eXBlOTQ7CnR5cGVkZWYgdGV4dHVyZTJkPGZsb2F0LCBhY2Nlc3M6OnNh
bXBsZT4gdHlwZTEyNDsKdHlwZWRlZiB0ZXh0dXJlM2Q8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlw
ZTE0NjsKdHlwZWRlZiBjb25zdGFudCB0eXBlNjIqIHR5cGU4NjsKdHlwZWRlZiB1aW50MzJfdCB0
eXBlNzE7CnR5cGVkZWYgdGV4dHVyZTFkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEwMDsK
dHlwZWRlZiB0ZXh0dXJlMWRfYXJyYXk8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMDY7CnR5
cGVkZWYgdGV4dHVyZTNkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE1MDsKdHlwZWRlZiB0
ZXh0dXJlMmQ8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEyMzsKdHlwZWRlZiB0ZXh0dXJlMWQ8
dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGU5MjsKdHlwZWRlZiB0ZXh0dXJlM2Q8dWludCwgYWNj
ZXNzOjpzYW1wbGU+IHR5cGUxNDE7CnR5cGVkZWYgdGV4dHVyZTFkX2FycmF5PGZsb2F0LCBhY2Nl
c3M6OnNhbXBsZT4gdHlwZTExMjsKdHlwZWRlZiB0ZXh0dXJlY3ViZTxmbG9hdCwgYWNjZXNzOjpz
YW1wbGU+IHR5cGUxNjA7CnR5cGVkZWYgdGV4dHVyZTFkX2FycmF5PGludCwgYWNjZXNzOjpzYW1w
bGU+IHR5cGUxMTA7CnR5cGVkZWYgdGhyZWFkIHR5cGU2NyogdHlwZTg1Owp0eXBlZGVmIHRleHR1
cmUzZDxpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTQ0Owp0eXBlZGVmIHRocmVhZCB0eXBlNzEq
IHR5cGU3MjsKdHlwZTcxIGZ1bmN0aW9uMSh0eXBlNzEpOwp0eXBlNjIgZnVuY3Rpb24yKHR5cGU2
Mik7CnR5cGU2MiBmdW5jdGlvbjModHlwZTE5LCB0eXBlMTkpOwp0eXBlMTkgZnVuY3Rpb240KHR5
cGUxOSk7CgpzdHJ1Y3QgdHlwZTE2NyB7CiAgICBkZXZpY2UgdHlwZTY1KiBzdHJ1Y3R1cmVFbGVt
ZW50OSBbW2lkKDApXV07CiAgICBkZXZpY2UgdHlwZTY3KiBzdHJ1Y3R1cmVFbGVtZW50MTMgW1tp
ZCgxKV1dOwogICAgZGV2aWNlIHR5cGU2Nyogc3RydWN0dXJlRWxlbWVudDExIFtbaWQoMildXTsK
ICAgIHVpbnQyIHN0cnVjdHVyZUVsZW1lbnQxMCBbW2lkKDMpXV07CiAgICB1aW50MiBzdHJ1Y3R1
cmVFbGVtZW50MTQgW1tpZCg0KV1dOwogICAgdWludDIgc3RydWN0dXJlRWxlbWVudDEyIFtbaWQo
NSldXTsKfTsKCgprZXJuZWwgdm9pZCBmdW5jdGlvbjAoZGV2aWNlIHR5cGUxNjcmIHZhcmlhYmxl
MCBbW2J1ZmZlcigwKV1dLCB1aW50MyB2YXJpYWJsZTQgW1t0aHJlYWRfcG9zaXRpb25faW5fZ3Jp
ZF1dKSB7CnR5cGU2NiB2YXJpYWJsZTU7CnR5cGU2OCB2YXJpYWJsZTY7CnR5cGU2OCB2YXJpYWJs
ZTc7CnR5cGUyMSB2YXJpYWJsZTg7CnNpemVfdCB2YXJpYWJsZTEgPSB2YXJpYWJsZTAuc3RydWN0
dXJlRWxlbWVudDEwLnk7CnZhcmlhYmxlMSA9IHZhcmlhYmxlMSA8PCAzMjsKdmFyaWFibGUxID0g
dmFyaWFibGUxIHwgdmFyaWFibGUwLnN0cnVjdHVyZUVsZW1lbnQxMC54Owp2YXJpYWJsZTEgPSB2
YXJpYWJsZTEgLyBzaXplb2YodHlwZTY1KTsKaWYgKHZhcmlhYmxlMSA+IDB4RkZGRkZGRkYpIHZh
cmlhYmxlMSA9IDB4RkZGRkZGRkY7CnZhcmlhYmxlNSA9IHsgdmFyaWFibGUwLnN0cnVjdHVyZUVs
ZW1lbnQ5LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFyaWFibGUxKSB9OwpzaXplX3QgdmFyaWFi
bGUyID0gdmFyaWFibGUwLnN0cnVjdHVyZUVsZW1lbnQxMi55Owp2YXJpYWJsZTIgPSB2YXJpYWJs
ZTIgPDwgMzI7CnZhcmlhYmxlMiA9IHZhcmlhYmxlMiB8IHZhcmlhYmxlMC5zdHJ1Y3R1cmVFbGVt
ZW50MTIueDsKdmFyaWFibGUyID0gdmFyaWFibGUyIC8gc2l6ZW9mKHR5cGU2Nyk7CmlmICh2YXJp
YWJsZTIgPiAweEZGRkZGRkZGKSB2YXJpYWJsZTIgPSAweEZGRkZGRkZGOwp2YXJpYWJsZTcgPSB7
IHZhcmlhYmxlMC5zdHJ1Y3R1cmVFbGVtZW50MTEsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YXJp
YWJsZTIpIH07CnNpemVfdCB2YXJpYWJsZTMgPSB2YXJpYWJsZTAuc3RydWN0dXJlRWxlbWVudDE0
Lnk7CnZhcmlhYmxlMyA9IHZhcmlhYmxlMyA8PCAzMjsKdmFyaWFibGUzID0gdmFyaWFibGUzIHwg
dmFyaWFibGUwLnN0cnVjdHVyZUVsZW1lbnQxNC54Owp2YXJpYWJsZTMgPSB2YXJpYWJsZTMgLyBz
aXplb2YodHlwZTY3KTsKaWYgKHZhcmlhYmxlMyA+IDB4RkZGRkZGRkYpIHZhcmlhYmxlMyA9IDB4
RkZGRkZGRkY7CnZhcmlhYmxlNiA9IHsgdmFyaWFibGUwLnN0cnVjdHVyZUVsZW1lbnQxMywgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHZhcmlhYmxlMykgfTsKdmFyaWFibGU4ID0gdHlwZTIxKHZhcmlh
YmxlNCk7CnsKdHlwZTY5IHZhcmlhYmxlOSA9IHsgfTsKdGhyZWFkIHR5cGU2OSogdmFyaWFibGUx
MSA9ICZ2YXJpYWJsZTk7CnR5cGU3MCB2YXJpYWJsZTEyID0gdmFyaWFibGUxMTsKdHlwZTcwIHZh
cmlhYmxlMTAgPSB2YXJpYWJsZTEyOwp0eXBlNzIgdmFyaWFibGUxMyA9IHsgfTsKdHlwZTcxIHZh
cmlhYmxlMTQgPSB7IH07CnR5cGU3MSB2YXJpYWJsZTE1ID0geyB9Owp0eXBlNzMgdmFyaWFibGUx
NiA9IHsgfTsKdHlwZTE5IHZhcmlhYmxlMTcgPSB7IH07CnR5cGUxOSB2YXJpYWJsZTE4ID0geyB9
Owp0eXBlNzQgdmFyaWFibGUxOSA9IHsgfTsKdHlwZTYyIHZhcmlhYmxlMjAgPSB7IH07CnR5cGU2
MiB2YXJpYWJsZTIxID0geyB9Owp0eXBlNzMgdmFyaWFibGUyMiA9IHsgfTsKdHlwZTE5IHZhcmlh
YmxlMjMgPSB7IH07CnR5cGUxOSB2YXJpYWJsZTI0ID0geyB9Owp0eXBlNzMgdmFyaWFibGUyNSA9
IHsgfTsKdHlwZTE5IHZhcmlhYmxlMjYgPSB7IH07CnR5cGUxOSB2YXJpYWJsZTI3ID0geyB9Owp0
eXBlNzQgdmFyaWFibGUyOCA9IHsgfTsKdHlwZTYyIHZhcmlhYmxlMjkgPSB7IH07CnR5cGU2MiB2
YXJpYWJsZTMwID0geyB9Owp0eXBlNzMgdmFyaWFibGUzMSA9IHsgfTsKdHlwZTE5IHZhcmlhYmxl
MzIgPSB7IH07CnR5cGUxOSB2YXJpYWJsZTMzID0geyB9Owp0eXBlNzMgdmFyaWFibGUzNCA9IHsg
fTsKdHlwZTE5IHZhcmlhYmxlMzUgPSB7IH07CnR5cGUxOSB2YXJpYWJsZTM2ID0geyB9Owp0eXBl
NzMgdmFyaWFibGUzNyA9IHsgfTsKdHlwZTczIHZhcmlhYmxlMzggPSB7IH07CnR5cGU3MyB2YXJp
YWJsZTM5ID0geyB9Owp0eXBlNzMgdmFyaWFibGU0MCA9IHsgfTsKdGhyZWFkIHR5cGUyMSogdmFy
aWFibGU0MiA9ICZ2YXJpYWJsZTg7CnR5cGU2MiB2YXJpYWJsZTQzOwp2YXJpYWJsZTQzID0gdmFy
aWFibGU4Lng7CnR5cGU3MSB2YXJpYWJsZTQ0Owp7CnR5cGU2MiB4ID0gdmFyaWFibGU0MzsKdmFy
aWFibGU0NCA9IHN0YXRpY19jYXN0PHR5cGU3MT4oeCk7Cn0KdHlwZTcxIHZhcmlhYmxlNDEgPSB2
YXJpYWJsZTQ0Owp0aHJlYWQgdHlwZTY2KiB2YXJpYWJsZTQ2ID0gJnZhcmlhYmxlNTsKdHlwZTc2
IHZhcmlhYmxlNDcgPSBzdGF0aWNfY2FzdDx0eXBlNzY+KDApOwp0eXBlNzUgdmFyaWFibGU0ODsK
dmFyaWFibGU0OCA9ICh2YXJpYWJsZTQ3IDwgdmFyaWFibGU1Lmxlbmd0aCkgPyAgJih2YXJpYWJs
ZTUucG9pbnRlclt2YXJpYWJsZTQ3XSkgOiBudWxscHRyOwp0eXBlNzUgdmFyaWFibGU1MCA9IHZh
cmlhYmxlNDg7CnR5cGU2NSB2YXJpYWJsZTQ5OwppZiAodmFyaWFibGU1MCkgdmFyaWFibGU0OSA9
ICp2YXJpYWJsZTQ4OwplbHNlIHZhcmlhYmxlNDkgPSB7IH07CnR5cGU2NSB2YXJpYWJsZTQ1ID0g
dmFyaWFibGU0OTsKdGhyZWFkIHR5cGU3MSogdmFyaWFibGU1MSA9ICZ2YXJpYWJsZTQxOwp0eXBl
NzEgdmFyaWFibGU1MiA9IHN0YXRpY19jYXN0PHR5cGU3MT4oMik7CnR5cGU3NyB2YXJpYWJsZTUz
Owp2YXJpYWJsZTUzID0gdmFyaWFibGU0MSA+PSB2YXJpYWJsZTUyOwp0eXBlNzcgdmFyaWFibGU1
NDsKewp0eXBlNzcgeCA9IHZhcmlhYmxlNTM7CnZhcmlhYmxlNTQgPSBzdGF0aWNfY2FzdDx0eXBl
Nzc+KHgpOwp9CmlmICh2YXJpYWJsZTU0KSB7CnsKcmV0dXJuOwp9Cn0KdGhyZWFkIHR5cGU2OCog
dmFyaWFibGU1NiA9ICZ2YXJpYWJsZTY7CnRocmVhZCB0eXBlNzEqIHZhcmlhYmxlNTcgPSAmdmFy
aWFibGU0MTsKdHlwZTc5IHZhcmlhYmxlNTg7CnZhcmlhYmxlNTggPSAodmFyaWFibGU0MSA8IHZh
cmlhYmxlNi5sZW5ndGgpID8gICYodmFyaWFibGU2LnBvaW50ZXJbdmFyaWFibGU0MV0pIDogbnVs
bHB0cjsKdHlwZTc5IHZhcmlhYmxlNjAgPSB2YXJpYWJsZTU4Owp0eXBlNjcgdmFyaWFibGU1OTsK
aWYgKHZhcmlhYmxlNjApIHZhcmlhYmxlNTkgPSAqdmFyaWFibGU1ODsKZWxzZSB2YXJpYWJsZTU5
ID0geyB9Owp0eXBlNzkgdmFyaWFibGU2MSA9IHZhcmlhYmxlNjA7CnR5cGU3OCB2YXJpYWJsZTYy
Owp2YXJpYWJsZTYyID0gJih2YXJpYWJsZTYxLT5zdHJ1Y3R1cmVFbGVtZW50MCk7CnR5cGU3OCB2
YXJpYWJsZTY0ID0gdmFyaWFibGU2MjsKdHlwZTE5IHZhcmlhYmxlNjM7CmlmICh2YXJpYWJsZTY0
KSB2YXJpYWJsZTYzID0gKnZhcmlhYmxlNjI7CmVsc2UgdmFyaWFibGU2MyA9IHsgfTsKdHlwZTE5
IHZhcmlhYmxlNTUgPSB2YXJpYWJsZTYzOwp0aHJlYWQgdHlwZTY4KiB2YXJpYWJsZTY2ID0gJnZh
cmlhYmxlNjsKdGhyZWFkIHR5cGU3MSogdmFyaWFibGU2NyA9ICZ2YXJpYWJsZTQxOwp0eXBlNzkg
dmFyaWFibGU2ODsKdmFyaWFibGU2OCA9ICh2YXJpYWJsZTQxIDwgdmFyaWFibGU2Lmxlbmd0aCkg
PyAgJih2YXJpYWJsZTYucG9pbnRlclt2YXJpYWJsZTQxXSkgOiBudWxscHRyOwp0eXBlNzkgdmFy
aWFibGU3MCA9IHZhcmlhYmxlNjg7CnR5cGU2NyB2YXJpYWJsZTY5OwppZiAodmFyaWFibGU3MCkg
dmFyaWFibGU2OSA9ICp2YXJpYWJsZTY4OwplbHNlIHZhcmlhYmxlNjkgPSB7IH07CnR5cGU3OSB2
YXJpYWJsZTcxID0gdmFyaWFibGU3MDsKdHlwZTc4IHZhcmlhYmxlNzI7CnZhcmlhYmxlNzIgPSAm
KHZhcmlhYmxlNzEtPnN0cnVjdHVyZUVsZW1lbnQxKTsKdHlwZTc4IHZhcmlhYmxlNzQgPSB2YXJp
YWJsZTcyOwp0eXBlMTkgdmFyaWFibGU3MzsKaWYgKHZhcmlhYmxlNzQpIHZhcmlhYmxlNzMgPSAq
dmFyaWFibGU3MjsKZWxzZSB2YXJpYWJsZTczID0geyB9Owp0eXBlMTkgdmFyaWFibGU2NSA9IHZh
cmlhYmxlNzM7CnR5cGU2MiB2YXJpYWJsZTc2ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigwKTsKdHlw
ZTYyIHZhcmlhYmxlNzcgPSBzdGF0aWNfY2FzdDx0eXBlNjI+KDApOwp0eXBlMTkgdmFyaWFibGU3
ODsKdmFyaWFibGU3OCA9IHR5cGUxOSh2YXJpYWJsZTc2LCB2YXJpYWJsZTc3KTsKdHlwZTE5IHZh
cmlhYmxlNzUgPSB2YXJpYWJsZTc4Owp0eXBlNjIgdmFyaWFibGU4MCA9IHN0YXRpY19jYXN0PHR5
cGU2Mj4oMCk7CnR5cGU2MiB2YXJpYWJsZTgxID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigwKTsKdHlw
ZTE5IHZhcmlhYmxlODI7CnZhcmlhYmxlODIgPSB0eXBlMTkodmFyaWFibGU4MCwgdmFyaWFibGU4
MSk7CnR5cGUxOSB2YXJpYWJsZTc5ID0gdmFyaWFibGU4MjsKdHlwZTYyIHZhcmlhYmxlODQgPSBz
dGF0aWNfY2FzdDx0eXBlNjI+KDApOwp0eXBlNjIgdmFyaWFibGU4NSA9IHN0YXRpY19jYXN0PHR5
cGU2Mj4oMCk7CnR5cGUxOSB2YXJpYWJsZTg2Owp2YXJpYWJsZTg2ID0gdHlwZTE5KHZhcmlhYmxl
ODQsIHZhcmlhYmxlODUpOwp0eXBlMTkgdmFyaWFibGU4MyA9IHZhcmlhYmxlODY7CnR5cGU2MiB2
YXJpYWJsZTg4ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigwKTsKdHlwZTYyIHZhcmlhYmxlODcgPSB2
YXJpYWJsZTg4Owp0eXBlNjIgdmFyaWFibGU5MCA9IHN0YXRpY19jYXN0PHR5cGU2Mj4oMCk7CnR5
cGU2MiB2YXJpYWJsZTg5ID0gdmFyaWFibGU5MDsKdHlwZTE5IHZhcmlhYmxlOTEgPSB7IH07CnR5
cGUxOSB2YXJpYWJsZTkyID0geyB9Owp7CnR5cGU3MSB2YXJpYWJsZTk0ID0gc3RhdGljX2Nhc3Q8
dHlwZTcxPigwKTsKdHlwZTcxIHZhcmlhYmxlOTMgPSB2YXJpYWJsZTk0Owpib29sIHZhcmlhYmxl
OTUgPSBmYWxzZTsKd2hpbGUgKHRydWUpIHsKdGhyZWFkIHR5cGU3MSogdmFyaWFibGU5NiA9ICZ2
YXJpYWJsZTkzOwp0eXBlNzEgdmFyaWFibGU5NyA9IHN0YXRpY19jYXN0PHR5cGU3MT4oMik7CnR5
cGU3NyB2YXJpYWJsZTk4Owp2YXJpYWJsZTk4ID0gdmFyaWFibGU5MyA8IHZhcmlhYmxlOTc7Cmlm
ICghdmFyaWFibGU5OCkgYnJlYWs7CmRvIHsKewp0aHJlYWQgdHlwZTcxKiB2YXJpYWJsZTk5ID0g
JnZhcmlhYmxlOTM7CnRocmVhZCB0eXBlNzEqIHZhcmlhYmxlMTAwID0gJnZhcmlhYmxlNDE7CnR5
cGU3NyB2YXJpYWJsZTEwMTsKdmFyaWFibGUxMDEgPSB2YXJpYWJsZTkzID09IHZhcmlhYmxlNDE7
CnR5cGU3NyB2YXJpYWJsZTEwMjsKewp0eXBlNzcgeCA9IHZhcmlhYmxlMTAxOwp2YXJpYWJsZTEw
MiA9IHN0YXRpY19jYXN0PHR5cGU3Nz4oeCk7Cn0KaWYgKHZhcmlhYmxlMTAyKSB7CnsKYnJlYWs7
Cn0KfQp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTEwMyA9ICZ2YXJpYWJsZTkxOwp0aHJlYWQgdHlw
ZTY4KiB2YXJpYWJsZTEwNCA9ICZ2YXJpYWJsZTY7CnRocmVhZCB0eXBlNzEqIHZhcmlhYmxlMTA1
ID0gJnZhcmlhYmxlOTM7CnR5cGU3OSB2YXJpYWJsZTEwNjsKdmFyaWFibGUxMDYgPSAodmFyaWFi
bGU5MyA8IHZhcmlhYmxlNi5sZW5ndGgpID8gICYodmFyaWFibGU2LnBvaW50ZXJbdmFyaWFibGU5
M10pIDogbnVsbHB0cjsKdHlwZTc5IHZhcmlhYmxlMTA4ID0gdmFyaWFibGUxMDY7CnR5cGU2NyB2
YXJpYWJsZTEwNzsKaWYgKHZhcmlhYmxlMTA4KSB2YXJpYWJsZTEwNyA9ICp2YXJpYWJsZTEwNjsK
ZWxzZSB2YXJpYWJsZTEwNyA9IHsgfTsKdHlwZTc5IHZhcmlhYmxlMTA5ID0gdmFyaWFibGUxMDg7
CnR5cGU3OCB2YXJpYWJsZTExMDsKdmFyaWFibGUxMTAgPSAmKHZhcmlhYmxlMTA5LT5zdHJ1Y3R1
cmVFbGVtZW50MCk7CnR5cGU3OCB2YXJpYWJsZTExMiA9IHZhcmlhYmxlMTEwOwp0eXBlMTkgdmFy
aWFibGUxMTE7CmlmICh2YXJpYWJsZTExMikgdmFyaWFibGUxMTEgPSAqdmFyaWFibGUxMTA7CmVs
c2UgdmFyaWFibGUxMTEgPSB7IH07CnR5cGUxOSB2YXJpYWJsZTExMzsKdmFyaWFibGUxMTMgPSB2
YXJpYWJsZTExMS54eTsKKnZhcmlhYmxlMTAzID0gdmFyaWFibGUxMTM7CnRocmVhZCB0eXBlMTkq
IHZhcmlhYmxlMTE0ID0gJnZhcmlhYmxlOTI7CnRocmVhZCB0eXBlNjgqIHZhcmlhYmxlMTE1ID0g
JnZhcmlhYmxlNjsKdGhyZWFkIHR5cGU3MSogdmFyaWFibGUxMTYgPSAmdmFyaWFibGU5MzsKdHlw
ZTc5IHZhcmlhYmxlMTE3Owp2YXJpYWJsZTExNyA9ICh2YXJpYWJsZTkzIDwgdmFyaWFibGU2Lmxl
bmd0aCkgPyAgJih2YXJpYWJsZTYucG9pbnRlclt2YXJpYWJsZTkzXSkgOiBudWxscHRyOwp0eXBl
NzkgdmFyaWFibGUxMTkgPSB2YXJpYWJsZTExNzsKdHlwZTY3IHZhcmlhYmxlMTE4OwppZiAodmFy
aWFibGUxMTkpIHZhcmlhYmxlMTE4ID0gKnZhcmlhYmxlMTE3OwplbHNlIHZhcmlhYmxlMTE4ID0g
eyB9Owp0eXBlNzkgdmFyaWFibGUxMjAgPSB2YXJpYWJsZTExOTsKdHlwZTc4IHZhcmlhYmxlMTIx
Owp2YXJpYWJsZTEyMSA9ICYodmFyaWFibGUxMjAtPnN0cnVjdHVyZUVsZW1lbnQxKTsKdHlwZTc4
IHZhcmlhYmxlMTIzID0gdmFyaWFibGUxMjE7CnR5cGUxOSB2YXJpYWJsZTEyMjsKaWYgKHZhcmlh
YmxlMTIzKSB2YXJpYWJsZTEyMiA9ICp2YXJpYWJsZTEyMTsKZWxzZSB2YXJpYWJsZTEyMiA9IHsg
fTsKdHlwZTE5IHZhcmlhYmxlMTI0Owp2YXJpYWJsZTEyNCA9IHZhcmlhYmxlMTIyLnh5OwoqdmFy
aWFibGUxMTQgPSB2YXJpYWJsZTEyNDsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxMjUgPSAmdmFy
aWFibGU5MTsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxMjYgPSAmdmFyaWFibGU1NTsKdHlwZTYy
IHZhcmlhYmxlMTI3Owp2YXJpYWJsZTEyNyA9IGZ1bmN0aW9uMyh2YXJpYWJsZTkxLCB2YXJpYWJs
ZTU1KTsKdGhyZWFkIHR5cGU2NSogdmFyaWFibGUxMjggPSAmdmFyaWFibGU0NTsKdHlwZTgwIHZh
cmlhYmxlMTI5ID0gdmFyaWFibGUxMjg7CnR5cGU3NCB2YXJpYWJsZTEzMDsKdmFyaWFibGUxMzAg
PSAmKHZhcmlhYmxlMTI5LT5zdHJ1Y3R1cmVFbGVtZW50Myk7CnR5cGU3NCB2YXJpYWJsZTEzMiA9
IHZhcmlhYmxlMTMwOwp0eXBlNjIgdmFyaWFibGUxMzE7CmlmICh2YXJpYWJsZTEzMikgdmFyaWFi
bGUxMzEgPSAqdmFyaWFibGUxMzA7CmVsc2UgdmFyaWFibGUxMzEgPSB7IH07CnR5cGU3NyB2YXJp
YWJsZTEzMzsKdmFyaWFibGUxMzMgPSB2YXJpYWJsZTEyNyA8IHZhcmlhYmxlMTMxOwp0eXBlNzcg
dmFyaWFibGUxMzQ7CnsKdHlwZTc3IHggPSB2YXJpYWJsZTEzMzsKdmFyaWFibGUxMzQgPSBzdGF0
aWNfY2FzdDx0eXBlNzc+KHgpOwp9CmlmICh2YXJpYWJsZTEzNCkgewp7CnRocmVhZCB0eXBlNzMq
IHZhcmlhYmxlMTM1ID0gJnZhcmlhYmxlMTY7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMTM2ID0g
JnZhcmlhYmxlNzU7CnR5cGU3MyB2YXJpYWJsZTEzNyA9IHZhcmlhYmxlMTM2OwoqdmFyaWFibGUx
MzUgPSB2YXJpYWJsZTEzNzsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxMzggPSAmdmFyaWFibGUx
NzsKdGhyZWFkIHR5cGU3MyogdmFyaWFibGUxMzkgPSAmdmFyaWFibGUxNjsKdHlwZTczIHZhcmlh
YmxlMTQxID0gdmFyaWFibGUxNjsKdHlwZTE5IHZhcmlhYmxlMTQwOwppZiAodmFyaWFibGUxNDEp
IHZhcmlhYmxlMTQwID0gKnZhcmlhYmxlMTY7CmVsc2UgdmFyaWFibGUxNDAgPSB7IH07Cip2YXJp
YWJsZTEzOCA9IHZhcmlhYmxlMTQwOwp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE0MiA9ICZ2YXJp
YWJsZTE4Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE0MyA9ICZ2YXJpYWJsZTE3Owp0aHJlYWQg
dHlwZTE5KiB2YXJpYWJsZTE0NCA9ICZ2YXJpYWJsZTkxOwp0eXBlMTkgdmFyaWFibGUxNDU7CnZh
cmlhYmxlMTQ1ID0gdmFyaWFibGUxNyArIHZhcmlhYmxlOTE7Cip2YXJpYWJsZTE0MiA9IHZhcmlh
YmxlMTQ1Owp0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTE0NiA9ICZ2YXJpYWJsZTE2Owp0eXBlNzMg
dmFyaWFibGUxNDggPSB2YXJpYWJsZTE2Owp0eXBlMTkgdmFyaWFibGUxNDc7CmlmICh2YXJpYWJs
ZTE0OCkgdmFyaWFibGUxNDcgPSAqdmFyaWFibGUxNjsKZWxzZSB2YXJpYWJsZTE0NyA9IHsgfTsK
dGhyZWFkIHR5cGUxOSogdmFyaWFibGUxNDkgPSAmdmFyaWFibGUxODsKaWYgKHZhcmlhYmxlMTQ4
KSAqdmFyaWFibGUxNDggPSB2YXJpYWJsZTE4Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE1MCA9
ICZ2YXJpYWJsZTE4Owp0aHJlYWQgdHlwZTc0KiB2YXJpYWJsZTE1MSA9ICZ2YXJpYWJsZTE5Owp0
aHJlYWQgdHlwZTYyKiB2YXJpYWJsZTE1MiA9ICZ2YXJpYWJsZTg3Owp0eXBlNzQgdmFyaWFibGUx
NTMgPSB2YXJpYWJsZTE1MjsKKnZhcmlhYmxlMTUxID0gdmFyaWFibGUxNTM7CnRocmVhZCB0eXBl
NjIqIHZhcmlhYmxlMTU0ID0gJnZhcmlhYmxlMjA7CnRocmVhZCB0eXBlNzQqIHZhcmlhYmxlMTU1
ID0gJnZhcmlhYmxlMTk7CnR5cGU3NCB2YXJpYWJsZTE1NyA9IHZhcmlhYmxlMTk7CnR5cGU2MiB2
YXJpYWJsZTE1NjsKaWYgKHZhcmlhYmxlMTU3KSB2YXJpYWJsZTE1NiA9ICp2YXJpYWJsZTE5Owpl
bHNlIHZhcmlhYmxlMTU2ID0geyB9OwoqdmFyaWFibGUxNTQgPSB2YXJpYWJsZTE1NjsKdGhyZWFk
IHR5cGU2MiogdmFyaWFibGUxNTggPSAmdmFyaWFibGUyMTsKdGhyZWFkIHR5cGU2MiogdmFyaWFi
bGUxNTkgPSAmdmFyaWFibGUyMDsKdHlwZTYyIHZhcmlhYmxlMTYwOwp2YXJpYWJsZTE2MCA9IGZ1
bmN0aW9uMih2YXJpYWJsZTIwKTsKKnZhcmlhYmxlMTU4ID0gdmFyaWFibGUxNjA7CnRocmVhZCB0
eXBlNzQqIHZhcmlhYmxlMTYxID0gJnZhcmlhYmxlMTk7CnR5cGU3NCB2YXJpYWJsZTE2MyA9IHZh
cmlhYmxlMTk7CnR5cGU2MiB2YXJpYWJsZTE2MjsKaWYgKHZhcmlhYmxlMTYzKSB2YXJpYWJsZTE2
MiA9ICp2YXJpYWJsZTE5OwplbHNlIHZhcmlhYmxlMTYyID0geyB9Owp0aHJlYWQgdHlwZTYyKiB2
YXJpYWJsZTE2NCA9ICZ2YXJpYWJsZTIxOwppZiAodmFyaWFibGUxNjMpICp2YXJpYWJsZTE2MyA9
IHZhcmlhYmxlMjE7CnRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMTY1ID0gJnZhcmlhYmxlMjA7Cn0K
fQp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE2NiA9ICZ2YXJpYWJsZTkxOwp0aHJlYWQgdHlwZTE5
KiB2YXJpYWJsZTE2NyA9ICZ2YXJpYWJsZTU1Owp0eXBlNjIgdmFyaWFibGUxNjg7CnZhcmlhYmxl
MTY4ID0gZnVuY3Rpb24zKHZhcmlhYmxlOTEsIHZhcmlhYmxlNTUpOwp0aHJlYWQgdHlwZTY1KiB2
YXJpYWJsZTE2OSA9ICZ2YXJpYWJsZTQ1Owp0eXBlODAgdmFyaWFibGUxNzAgPSB2YXJpYWJsZTE2
OTsKdHlwZTc0IHZhcmlhYmxlMTcxOwp2YXJpYWJsZTE3MSA9ICYodmFyaWFibGUxNzAtPnN0cnVj
dHVyZUVsZW1lbnQ0KTsKdHlwZTc0IHZhcmlhYmxlMTczID0gdmFyaWFibGUxNzE7CnR5cGU2MiB2
YXJpYWJsZTE3MjsKaWYgKHZhcmlhYmxlMTczKSB2YXJpYWJsZTE3MiA9ICp2YXJpYWJsZTE3MTsK
ZWxzZSB2YXJpYWJsZTE3MiA9IHsgfTsKdHlwZTc3IHZhcmlhYmxlMTc0Owp2YXJpYWJsZTE3NCA9
IHZhcmlhYmxlMTY4IDwgdmFyaWFibGUxNzI7CnR5cGU3NyB2YXJpYWJsZTE3NTsKewp0eXBlNzcg
eCA9IHZhcmlhYmxlMTc0Owp2YXJpYWJsZTE3NSA9IHN0YXRpY19jYXN0PHR5cGU3Nz4oeCk7Cn0K
aWYgKHZhcmlhYmxlMTc1KSB7CnsKdGhyZWFkIHR5cGU3MyogdmFyaWFibGUxNzYgPSAmdmFyaWFi
bGUyMjsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxNzcgPSAmdmFyaWFibGU4MzsKdHlwZTczIHZh
cmlhYmxlMTc4ID0gdmFyaWFibGUxNzc7Cip2YXJpYWJsZTE3NiA9IHZhcmlhYmxlMTc4Owp0aHJl
YWQgdHlwZTE5KiB2YXJpYWJsZTE3OSA9ICZ2YXJpYWJsZTIzOwp0aHJlYWQgdHlwZTczKiB2YXJp
YWJsZTE4MCA9ICZ2YXJpYWJsZTIyOwp0eXBlNzMgdmFyaWFibGUxODIgPSB2YXJpYWJsZTIyOwp0
eXBlMTkgdmFyaWFibGUxODE7CmlmICh2YXJpYWJsZTE4MikgdmFyaWFibGUxODEgPSAqdmFyaWFi
bGUyMjsKZWxzZSB2YXJpYWJsZTE4MSA9IHsgfTsKKnZhcmlhYmxlMTc5ID0gdmFyaWFibGUxODE7
CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMTgzID0gJnZhcmlhYmxlMjQ7CnRocmVhZCB0eXBlMTkq
IHZhcmlhYmxlMTg0ID0gJnZhcmlhYmxlMjM7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMTg1ID0g
JnZhcmlhYmxlOTE7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMTg2ID0gJnZhcmlhYmxlNTU7CnR5
cGUxOSB2YXJpYWJsZTE4NzsKdmFyaWFibGUxODcgPSB2YXJpYWJsZTkxIC0gdmFyaWFibGU1NTsK
dHlwZTE5IHZhcmlhYmxlMTg4Owp2YXJpYWJsZTE4OCA9IHZhcmlhYmxlMjMgLSB2YXJpYWJsZTE4
NzsKKnZhcmlhYmxlMTgzID0gdmFyaWFibGUxODg7CnRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMTg5
ID0gJnZhcmlhYmxlMjI7CnR5cGU3MyB2YXJpYWJsZTE5MSA9IHZhcmlhYmxlMjI7CnR5cGUxOSB2
YXJpYWJsZTE5MDsKaWYgKHZhcmlhYmxlMTkxKSB2YXJpYWJsZTE5MCA9ICp2YXJpYWJsZTIyOwpl
bHNlIHZhcmlhYmxlMTkwID0geyB9Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE5MiA9ICZ2YXJp
YWJsZTI0OwppZiAodmFyaWFibGUxOTEpICp2YXJpYWJsZTE5MSA9IHZhcmlhYmxlMjQ7CnRocmVh
ZCB0eXBlMTkqIHZhcmlhYmxlMTkzID0gJnZhcmlhYmxlMjQ7Cn0KfQp0aHJlYWQgdHlwZTE5KiB2
YXJpYWJsZTE5NCA9ICZ2YXJpYWJsZTkxOwp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE5NSA9ICZ2
YXJpYWJsZTU1Owp0eXBlNjIgdmFyaWFibGUxOTY7CnZhcmlhYmxlMTk2ID0gZnVuY3Rpb24zKHZh
cmlhYmxlOTEsIHZhcmlhYmxlNTUpOwp0aHJlYWQgdHlwZTY1KiB2YXJpYWJsZTE5NyA9ICZ2YXJp
YWJsZTQ1Owp0eXBlODAgdmFyaWFibGUxOTggPSB2YXJpYWJsZTE5NzsKdHlwZTc0IHZhcmlhYmxl
MTk5Owp2YXJpYWJsZTE5OSA9ICYodmFyaWFibGUxOTgtPnN0cnVjdHVyZUVsZW1lbnQ1KTsKdHlw
ZTc0IHZhcmlhYmxlMjAxID0gdmFyaWFibGUxOTk7CnR5cGU2MiB2YXJpYWJsZTIwMDsKaWYgKHZh
cmlhYmxlMjAxKSB2YXJpYWJsZTIwMCA9ICp2YXJpYWJsZTE5OTsKZWxzZSB2YXJpYWJsZTIwMCA9
IHsgfTsKdHlwZTc3IHZhcmlhYmxlMjAyOwp2YXJpYWJsZTIwMiA9IHZhcmlhYmxlMTk2IDwgdmFy
aWFibGUyMDA7CnR5cGU3NyB2YXJpYWJsZTIwMzsKewp0eXBlNzcgeCA9IHZhcmlhYmxlMjAyOwp2
YXJpYWJsZTIwMyA9IHN0YXRpY19jYXN0PHR5cGU3Nz4oeCk7Cn0KaWYgKHZhcmlhYmxlMjAzKSB7
CnsKdGhyZWFkIHR5cGU3MyogdmFyaWFibGUyMDQgPSAmdmFyaWFibGUyNTsKdGhyZWFkIHR5cGUx
OSogdmFyaWFibGUyMDUgPSAmdmFyaWFibGU3OTsKdHlwZTczIHZhcmlhYmxlMjA2ID0gdmFyaWFi
bGUyMDU7Cip2YXJpYWJsZTIwNCA9IHZhcmlhYmxlMjA2Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJs
ZTIwNyA9ICZ2YXJpYWJsZTI2Owp0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTIwOCA9ICZ2YXJpYWJs
ZTI1Owp0eXBlNzMgdmFyaWFibGUyMTAgPSB2YXJpYWJsZTI1Owp0eXBlMTkgdmFyaWFibGUyMDk7
CmlmICh2YXJpYWJsZTIxMCkgdmFyaWFibGUyMDkgPSAqdmFyaWFibGUyNTsKZWxzZSB2YXJpYWJs
ZTIwOSA9IHsgfTsKKnZhcmlhYmxlMjA3ID0gdmFyaWFibGUyMDk7CnRocmVhZCB0eXBlMTkqIHZh
cmlhYmxlMjExID0gJnZhcmlhYmxlMjc7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMjEyID0gJnZh
cmlhYmxlMjY7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMjEzID0gJnZhcmlhYmxlOTI7CnR5cGUx
OSB2YXJpYWJsZTIxNDsKdmFyaWFibGUyMTQgPSB2YXJpYWJsZTI2ICsgdmFyaWFibGU5MjsKKnZh
cmlhYmxlMjExID0gdmFyaWFibGUyMTQ7CnRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMjE1ID0gJnZh
cmlhYmxlMjU7CnR5cGU3MyB2YXJpYWJsZTIxNyA9IHZhcmlhYmxlMjU7CnR5cGUxOSB2YXJpYWJs
ZTIxNjsKaWYgKHZhcmlhYmxlMjE3KSB2YXJpYWJsZTIxNiA9ICp2YXJpYWJsZTI1OwplbHNlIHZh
cmlhYmxlMjE2ID0geyB9Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTIxOCA9ICZ2YXJpYWJsZTI3
OwppZiAodmFyaWFibGUyMTcpICp2YXJpYWJsZTIxNyA9IHZhcmlhYmxlMjc7CnRocmVhZCB0eXBl
MTkqIHZhcmlhYmxlMjE5ID0gJnZhcmlhYmxlMjc7CnRocmVhZCB0eXBlNzQqIHZhcmlhYmxlMjIw
ID0gJnZhcmlhYmxlMjg7CnRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMjIxID0gJnZhcmlhYmxlODk7
CnR5cGU3NCB2YXJpYWJsZTIyMiA9IHZhcmlhYmxlMjIxOwoqdmFyaWFibGUyMjAgPSB2YXJpYWJs
ZTIyMjsKdGhyZWFkIHR5cGU2MiogdmFyaWFibGUyMjMgPSAmdmFyaWFibGUyOTsKdGhyZWFkIHR5
cGU3NCogdmFyaWFibGUyMjQgPSAmdmFyaWFibGUyODsKdHlwZTc0IHZhcmlhYmxlMjI2ID0gdmFy
aWFibGUyODsKdHlwZTYyIHZhcmlhYmxlMjI1OwppZiAodmFyaWFibGUyMjYpIHZhcmlhYmxlMjI1
ID0gKnZhcmlhYmxlMjg7CmVsc2UgdmFyaWFibGUyMjUgPSB7IH07Cip2YXJpYWJsZTIyMyA9IHZh
cmlhYmxlMjI1Owp0aHJlYWQgdHlwZTYyKiB2YXJpYWJsZTIyNyA9ICZ2YXJpYWJsZTMwOwp0aHJl
YWQgdHlwZTYyKiB2YXJpYWJsZTIyOCA9ICZ2YXJpYWJsZTI5Owp0eXBlNjIgdmFyaWFibGUyMjk7
CnZhcmlhYmxlMjI5ID0gZnVuY3Rpb24yKHZhcmlhYmxlMjkpOwoqdmFyaWFibGUyMjcgPSB2YXJp
YWJsZTIyOTsKdGhyZWFkIHR5cGU3NCogdmFyaWFibGUyMzAgPSAmdmFyaWFibGUyODsKdHlwZTc0
IHZhcmlhYmxlMjMyID0gdmFyaWFibGUyODsKdHlwZTYyIHZhcmlhYmxlMjMxOwppZiAodmFyaWFi
bGUyMzIpIHZhcmlhYmxlMjMxID0gKnZhcmlhYmxlMjg7CmVsc2UgdmFyaWFibGUyMzEgPSB7IH07
CnRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMjMzID0gJnZhcmlhYmxlMzA7CmlmICh2YXJpYWJsZTIz
MikgKnZhcmlhYmxlMjMyID0gdmFyaWFibGUzMDsKdGhyZWFkIHR5cGU2MiogdmFyaWFibGUyMzQg
PSAmdmFyaWFibGUyOTsKfQp9Cn0KfSB3aGlsZShmYWxzZSk7IAppZiAodmFyaWFibGU5NSkgYnJl
YWs7CnRocmVhZCB0eXBlNzIqIHZhcmlhYmxlMjM1ID0gJnZhcmlhYmxlMTM7CnRocmVhZCB0eXBl
NzEqIHZhcmlhYmxlMjM2ID0gJnZhcmlhYmxlOTM7CnR5cGU3MiB2YXJpYWJsZTIzNyA9IHZhcmlh
YmxlMjM2OwoqdmFyaWFibGUyMzUgPSB2YXJpYWJsZTIzNzsKdGhyZWFkIHR5cGU3MSogdmFyaWFi
bGUyMzggPSAmdmFyaWFibGUxNDsKdGhyZWFkIHR5cGU3MiogdmFyaWFibGUyMzkgPSAmdmFyaWFi
bGUxMzsKdHlwZTcyIHZhcmlhYmxlMjQxID0gdmFyaWFibGUxMzsKdHlwZTcxIHZhcmlhYmxlMjQw
OwppZiAodmFyaWFibGUyNDEpIHZhcmlhYmxlMjQwID0gKnZhcmlhYmxlMTM7CmVsc2UgdmFyaWFi
bGUyNDAgPSB7IH07Cip2YXJpYWJsZTIzOCA9IHZhcmlhYmxlMjQwOwp0aHJlYWQgdHlwZTcxKiB2
YXJpYWJsZTI0MiA9ICZ2YXJpYWJsZTE1Owp0aHJlYWQgdHlwZTcxKiB2YXJpYWJsZTI0MyA9ICZ2
YXJpYWJsZTE0Owp0eXBlNzEgdmFyaWFibGUyNDQ7CnZhcmlhYmxlMjQ0ID0gZnVuY3Rpb24xKHZh
cmlhYmxlMTQpOwoqdmFyaWFibGUyNDIgPSB2YXJpYWJsZTI0NDsKdGhyZWFkIHR5cGU3MiogdmFy
aWFibGUyNDUgPSAmdmFyaWFibGUxMzsKdHlwZTcyIHZhcmlhYmxlMjQ3ID0gdmFyaWFibGUxMzsK
dHlwZTcxIHZhcmlhYmxlMjQ2OwppZiAodmFyaWFibGUyNDcpIHZhcmlhYmxlMjQ2ID0gKnZhcmlh
YmxlMTM7CmVsc2UgdmFyaWFibGUyNDYgPSB7IH07CnRocmVhZCB0eXBlNzEqIHZhcmlhYmxlMjQ4
ID0gJnZhcmlhYmxlMTU7CmlmICh2YXJpYWJsZTI0NykgKnZhcmlhYmxlMjQ3ID0gdmFyaWFibGUx
NTsKdGhyZWFkIHR5cGU3MSogdmFyaWFibGUyNDkgPSAmdmFyaWFibGUxNTsKfSAKfQp0aHJlYWQg
dHlwZTYyKiB2YXJpYWJsZTI1MCA9ICZ2YXJpYWJsZTg3Owp0eXBlNjIgdmFyaWFibGUyNTEgPSBz
dGF0aWNfY2FzdDx0eXBlNjI+KDApOwp0eXBlNzcgdmFyaWFibGUyNTI7CnZhcmlhYmxlMjUyID0g
dmFyaWFibGU4NyA+IHZhcmlhYmxlMjUxOwp0eXBlNzcgdmFyaWFibGUyNTM7CnsKdHlwZTc3IHgg
PSB2YXJpYWJsZTI1MjsKdmFyaWFibGUyNTMgPSBzdGF0aWNfY2FzdDx0eXBlNzc+KHgpOwp9Cmlm
ICh2YXJpYWJsZTI1Mykgewp7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMjU0ID0gJnZhcmlhYmxl
NzU7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMjU1ID0gJnZhcmlhYmxlNzU7CnRocmVhZCB0eXBl
NjIqIHZhcmlhYmxlMjU2ID0gJnZhcmlhYmxlODc7CnR5cGUxOSB2YXJpYWJsZTI1NzsKdmFyaWFi
bGUyNTcgPSB2YXJpYWJsZTc1IC8gdmFyaWFibGU4NzsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUy
NTggPSAmdmFyaWFibGU1NTsKdHlwZTE5IHZhcmlhYmxlMjU5Owp2YXJpYWJsZTI1OSA9IHZhcmlh
YmxlMjU3IC0gdmFyaWFibGU1NTsKKnZhcmlhYmxlMjU0ID0gdmFyaWFibGUyNTk7Cn0KfQp0aHJl
YWQgdHlwZTYyKiB2YXJpYWJsZTI2MCA9ICZ2YXJpYWJsZTg5Owp0eXBlNjIgdmFyaWFibGUyNjEg
PSBzdGF0aWNfY2FzdDx0eXBlNjI+KDApOwp0eXBlNzcgdmFyaWFibGUyNjI7CnZhcmlhYmxlMjYy
ID0gdmFyaWFibGU4OSA+IHZhcmlhYmxlMjYxOwp0eXBlNzcgdmFyaWFibGUyNjM7CnsKdHlwZTc3
IHggPSB2YXJpYWJsZTI2MjsKdmFyaWFibGUyNjMgPSBzdGF0aWNfY2FzdDx0eXBlNzc+KHgpOwp9
CmlmICh2YXJpYWJsZTI2Mykgewp7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMjY0ID0gJnZhcmlh
YmxlNzk7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMjY1ID0gJnZhcmlhYmxlNzk7CnRocmVhZCB0
eXBlNjIqIHZhcmlhYmxlMjY2ID0gJnZhcmlhYmxlODk7CnR5cGUxOSB2YXJpYWJsZTI2NzsKdmFy
aWFibGUyNjcgPSB2YXJpYWJsZTc5IC8gdmFyaWFibGU4OTsKKnZhcmlhYmxlMjY0ID0gdmFyaWFi
bGUyNjc7Cn0KfQp0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTI2OCA9ICZ2YXJpYWJsZTMxOwp0aHJl
YWQgdHlwZTE5KiB2YXJpYWJsZTI2OSA9ICZ2YXJpYWJsZTY1Owp0eXBlNzMgdmFyaWFibGUyNzAg
PSB2YXJpYWJsZTI2OTsKKnZhcmlhYmxlMjY4ID0gdmFyaWFibGUyNzA7CnRocmVhZCB0eXBlMTkq
IHZhcmlhYmxlMjcxID0gJnZhcmlhYmxlMzI7CnRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMjcyID0g
JnZhcmlhYmxlMzE7CnR5cGU3MyB2YXJpYWJsZTI3NCA9IHZhcmlhYmxlMzE7CnR5cGUxOSB2YXJp
YWJsZTI3MzsKaWYgKHZhcmlhYmxlMjc0KSB2YXJpYWJsZTI3MyA9ICp2YXJpYWJsZTMxOwplbHNl
IHZhcmlhYmxlMjczID0geyB9OwoqdmFyaWFibGUyNzEgPSB2YXJpYWJsZTI3MzsKdGhyZWFkIHR5
cGUxOSogdmFyaWFibGUyNzUgPSAmdmFyaWFibGUzMzsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUy
NzYgPSAmdmFyaWFibGUzMjsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUyNzcgPSAmdmFyaWFibGU3
NTsKdGhyZWFkIHR5cGU2NSogdmFyaWFibGUyNzggPSAmdmFyaWFibGU0NTsKdHlwZTgwIHZhcmlh
YmxlMjc5ID0gdmFyaWFibGUyNzg7CnR5cGU3NCB2YXJpYWJsZTI4MDsKdmFyaWFibGUyODAgPSAm
KHZhcmlhYmxlMjc5LT5zdHJ1Y3R1cmVFbGVtZW50Nik7CnR5cGU3NCB2YXJpYWJsZTI4MiA9IHZh
cmlhYmxlMjgwOwp0eXBlNjIgdmFyaWFibGUyODE7CmlmICh2YXJpYWJsZTI4MikgdmFyaWFibGUy
ODEgPSAqdmFyaWFibGUyODA7CmVsc2UgdmFyaWFibGUyODEgPSB7IH07CnR5cGUxOSB2YXJpYWJs
ZTI4MzsKdmFyaWFibGUyODMgPSB2YXJpYWJsZTc1ICogdmFyaWFibGUyODE7CnRocmVhZCB0eXBl
MTkqIHZhcmlhYmxlMjg0ID0gJnZhcmlhYmxlODM7CnRocmVhZCB0eXBlNjUqIHZhcmlhYmxlMjg1
ID0gJnZhcmlhYmxlNDU7CnR5cGU4MCB2YXJpYWJsZTI4NiA9IHZhcmlhYmxlMjg1Owp0eXBlNzQg
dmFyaWFibGUyODc7CnZhcmlhYmxlMjg3ID0gJih2YXJpYWJsZTI4Ni0+c3RydWN0dXJlRWxlbWVu
dDcpOwp0eXBlNzQgdmFyaWFibGUyODkgPSB2YXJpYWJsZTI4NzsKdHlwZTYyIHZhcmlhYmxlMjg4
OwppZiAodmFyaWFibGUyODkpIHZhcmlhYmxlMjg4ID0gKnZhcmlhYmxlMjg3OwplbHNlIHZhcmlh
YmxlMjg4ID0geyB9Owp0eXBlMTkgdmFyaWFibGUyOTA7CnZhcmlhYmxlMjkwID0gdmFyaWFibGU4
MyAqIHZhcmlhYmxlMjg4Owp0eXBlMTkgdmFyaWFibGUyOTE7CnZhcmlhYmxlMjkxID0gdmFyaWFi
bGUyODMgKyB2YXJpYWJsZTI5MDsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUyOTIgPSAmdmFyaWFi
bGU3OTsKdGhyZWFkIHR5cGU2NSogdmFyaWFibGUyOTMgPSAmdmFyaWFibGU0NTsKdHlwZTgwIHZh
cmlhYmxlMjk0ID0gdmFyaWFibGUyOTM7CnR5cGU3NCB2YXJpYWJsZTI5NTsKdmFyaWFibGUyOTUg
PSAmKHZhcmlhYmxlMjk0LT5zdHJ1Y3R1cmVFbGVtZW50OCk7CnR5cGU3NCB2YXJpYWJsZTI5NyA9
IHZhcmlhYmxlMjk1Owp0eXBlNjIgdmFyaWFibGUyOTY7CmlmICh2YXJpYWJsZTI5NykgdmFyaWFi
bGUyOTYgPSAqdmFyaWFibGUyOTU7CmVsc2UgdmFyaWFibGUyOTYgPSB7IH07CnR5cGUxOSB2YXJp
YWJsZTI5ODsKdmFyaWFibGUyOTggPSB2YXJpYWJsZTc5ICogdmFyaWFibGUyOTY7CnR5cGUxOSB2
YXJpYWJsZTI5OTsKdmFyaWFibGUyOTkgPSB2YXJpYWJsZTI5MSArIHZhcmlhYmxlMjk4Owp0eXBl
MTkgdmFyaWFibGUzMDA7CnZhcmlhYmxlMzAwID0gdmFyaWFibGUzMiArIHZhcmlhYmxlMjk5Owoq
dmFyaWFibGUyNzUgPSB2YXJpYWJsZTMwMDsKdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzMDEgPSAm
dmFyaWFibGUzMTsKdHlwZTczIHZhcmlhYmxlMzAzID0gdmFyaWFibGUzMTsKdHlwZTE5IHZhcmlh
YmxlMzAyOwppZiAodmFyaWFibGUzMDMpIHZhcmlhYmxlMzAyID0gKnZhcmlhYmxlMzE7CmVsc2Ug
dmFyaWFibGUzMDIgPSB7IH07CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzA0ID0gJnZhcmlhYmxl
MzM7CmlmICh2YXJpYWJsZTMwMykgKnZhcmlhYmxlMzAzID0gdmFyaWFibGUzMzsKdGhyZWFkIHR5
cGUxOSogdmFyaWFibGUzMDUgPSAmdmFyaWFibGUzMzsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUz
MDYgPSAmdmFyaWFibGU2NTsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUzMDcgPSAmdmFyaWFibGU2
NTsKdHlwZTE5IHZhcmlhYmxlMzA4Owp2YXJpYWJsZTMwOCA9IGZ1bmN0aW9uNCh2YXJpYWJsZTY1
KTsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUzMDkgPSAmdmFyaWFibGU2NTsKdHlwZTYyIHZhcmlh
YmxlMzEwOwp2YXJpYWJsZTMxMCA9IGxlbmd0aCh2YXJpYWJsZTY1KTsKdHlwZTYyIHZhcmlhYmxl
MzExID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigwKTsKdHlwZTYyIHZhcmlhYmxlMzEyID0gc3RhdGlj
X2Nhc3Q8dHlwZTYyPigwLjEpOwp0eXBlNjIgdmFyaWFibGUzMTM7CnZhcmlhYmxlMzEzID0gY2xh
bXAodmFyaWFibGUzMTAsIHZhcmlhYmxlMzExLCB2YXJpYWJsZTMxMik7CnR5cGUxOSB2YXJpYWJs
ZTMxNDsKdmFyaWFibGUzMTQgPSB2YXJpYWJsZTMwOCAqIHZhcmlhYmxlMzEzOwoqdmFyaWFibGUz
MDYgPSB2YXJpYWJsZTMxNDsKdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzMTUgPSAmdmFyaWFibGUz
NDsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUzMTYgPSAmdmFyaWFibGU1NTsKdHlwZTczIHZhcmlh
YmxlMzE3ID0gdmFyaWFibGUzMTY7Cip2YXJpYWJsZTMxNSA9IHZhcmlhYmxlMzE3Owp0aHJlYWQg
dHlwZTE5KiB2YXJpYWJsZTMxOCA9ICZ2YXJpYWJsZTM1Owp0aHJlYWQgdHlwZTczKiB2YXJpYWJs
ZTMxOSA9ICZ2YXJpYWJsZTM0Owp0eXBlNzMgdmFyaWFibGUzMjEgPSB2YXJpYWJsZTM0Owp0eXBl
MTkgdmFyaWFibGUzMjA7CmlmICh2YXJpYWJsZTMyMSkgdmFyaWFibGUzMjAgPSAqdmFyaWFibGUz
NDsKZWxzZSB2YXJpYWJsZTMyMCA9IHsgfTsKKnZhcmlhYmxlMzE4ID0gdmFyaWFibGUzMjA7CnRo
cmVhZCB0eXBlMTkqIHZhcmlhYmxlMzIyID0gJnZhcmlhYmxlMzY7CnRocmVhZCB0eXBlMTkqIHZh
cmlhYmxlMzIzID0gJnZhcmlhYmxlMzU7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzI0ID0gJnZh
cmlhYmxlNjU7CnRocmVhZCB0eXBlNjUqIHZhcmlhYmxlMzI1ID0gJnZhcmlhYmxlNDU7CnR5cGU4
MCB2YXJpYWJsZTMyNiA9IHZhcmlhYmxlMzI1Owp0eXBlNzQgdmFyaWFibGUzMjc7CnZhcmlhYmxl
MzI3ID0gJih2YXJpYWJsZTMyNi0+c3RydWN0dXJlRWxlbWVudDIpOwp0eXBlNzQgdmFyaWFibGUz
MjkgPSB2YXJpYWJsZTMyNzsKdHlwZTYyIHZhcmlhYmxlMzI4OwppZiAodmFyaWFibGUzMjkpIHZh
cmlhYmxlMzI4ID0gKnZhcmlhYmxlMzI3OwplbHNlIHZhcmlhYmxlMzI4ID0geyB9Owp0eXBlMTkg
dmFyaWFibGUzMzA7CnZhcmlhYmxlMzMwID0gdmFyaWFibGU2NSAqIHZhcmlhYmxlMzI4Owp0eXBl
MTkgdmFyaWFibGUzMzE7CnZhcmlhYmxlMzMxID0gdmFyaWFibGUzNSArIHZhcmlhYmxlMzMwOwoq
dmFyaWFibGUzMjIgPSB2YXJpYWJsZTMzMTsKdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzMzIgPSAm
dmFyaWFibGUzNDsKdHlwZTczIHZhcmlhYmxlMzM0ID0gdmFyaWFibGUzNDsKdHlwZTE5IHZhcmlh
YmxlMzMzOwppZiAodmFyaWFibGUzMzQpIHZhcmlhYmxlMzMzID0gKnZhcmlhYmxlMzQ7CmVsc2Ug
dmFyaWFibGUzMzMgPSB7IH07CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzM1ID0gJnZhcmlhYmxl
MzY7CmlmICh2YXJpYWJsZTMzNCkgKnZhcmlhYmxlMzM0ID0gdmFyaWFibGUzNjsKdGhyZWFkIHR5
cGUxOSogdmFyaWFibGUzMzYgPSAmdmFyaWFibGUzNjsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGUz
MzcgPSAmdmFyaWFibGU1NTsKdHlwZTYyIHZhcmlhYmxlMzM4Owp2YXJpYWJsZTMzOCA9IHZhcmlh
YmxlNTUueDsKdHlwZTYyIHZhcmlhYmxlMzM5ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigtMSk7CnR5
cGU3NyB2YXJpYWJsZTM0MDsKdmFyaWFibGUzNDAgPSB2YXJpYWJsZTMzOCA8IHZhcmlhYmxlMzM5
Owp0eXBlNzcgdmFyaWFibGUzNDE7CnsKdHlwZTc3IHggPSB2YXJpYWJsZTM0MDsKdmFyaWFibGUz
NDEgPSBzdGF0aWNfY2FzdDx0eXBlNzc+KHgpOwp9CmlmICh2YXJpYWJsZTM0MSkgewp0aHJlYWQg
dHlwZTczKiB2YXJpYWJsZTM0MiA9ICZ2YXJpYWJsZTM3Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJs
ZTM0MyA9ICZ2YXJpYWJsZTU1Owp0eXBlNzMgdmFyaWFibGUzNDQgPSB2YXJpYWJsZTM0MzsKKnZh
cmlhYmxlMzQyID0gdmFyaWFibGUzNDQ7CnRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMzQ1ID0gJnZh
cmlhYmxlMzc7CnR5cGU3MyB2YXJpYWJsZTM0NyA9IHZhcmlhYmxlMzc7CnR5cGUxOSB2YXJpYWJs
ZTM0NjsKaWYgKHZhcmlhYmxlMzQ3KSB2YXJpYWJsZTM0NiA9ICp2YXJpYWJsZTM3OwplbHNlIHZh
cmlhYmxlMzQ2ID0geyB9Owp0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTM0OCA9ICZ2YXJpYWJsZTM3
Owp0eXBlNzMgdmFyaWFibGUzNTAgPSB2YXJpYWJsZTM3Owp0eXBlMTkgdmFyaWFibGUzNDk7Cmlm
ICh2YXJpYWJsZTM1MCkgdmFyaWFibGUzNDkgPSAqdmFyaWFibGUzNzsKZWxzZSB2YXJpYWJsZTM0
OSA9IHsgfTsKdHlwZTYyIHZhcmlhYmxlMzUxID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigxKTsKdHlw
ZTE5IHZhcmlhYmxlMzUyOwp2YXJpYWJsZTM1MiA9IHZhcmlhYmxlMzQ5Owp2YXJpYWJsZTM1Mi54
ID0gdmFyaWFibGUzNTE7CmlmICh2YXJpYWJsZTM0NykgKnZhcmlhYmxlMzQ3ID0gdmFyaWFibGUz
NTI7Cn0KdGhyZWFkIHR5cGUxOSogdmFyaWFibGUzNTMgPSAmdmFyaWFibGU1NTsKdHlwZTYyIHZh
cmlhYmxlMzU0Owp2YXJpYWJsZTM1NCA9IHZhcmlhYmxlNTUueDsKdHlwZTYyIHZhcmlhYmxlMzU1
ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigxKTsKdHlwZTc3IHZhcmlhYmxlMzU2Owp2YXJpYWJsZTM1
NiA9IHZhcmlhYmxlMzU0ID4gdmFyaWFibGUzNTU7CnR5cGU3NyB2YXJpYWJsZTM1NzsKewp0eXBl
NzcgeCA9IHZhcmlhYmxlMzU2Owp2YXJpYWJsZTM1NyA9IHN0YXRpY19jYXN0PHR5cGU3Nz4oeCk7
Cn0KaWYgKHZhcmlhYmxlMzU3KSB7CnRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMzU4ID0gJnZhcmlh
YmxlMzg7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzU5ID0gJnZhcmlhYmxlNTU7CnR5cGU3MyB2
YXJpYWJsZTM2MCA9IHZhcmlhYmxlMzU5OwoqdmFyaWFibGUzNTggPSB2YXJpYWJsZTM2MDsKdGhy
ZWFkIHR5cGU3MyogdmFyaWFibGUzNjEgPSAmdmFyaWFibGUzODsKdHlwZTczIHZhcmlhYmxlMzYz
ID0gdmFyaWFibGUzODsKdHlwZTE5IHZhcmlhYmxlMzYyOwppZiAodmFyaWFibGUzNjMpIHZhcmlh
YmxlMzYyID0gKnZhcmlhYmxlMzg7CmVsc2UgdmFyaWFibGUzNjIgPSB7IH07CnRocmVhZCB0eXBl
NzMqIHZhcmlhYmxlMzY0ID0gJnZhcmlhYmxlMzg7CnR5cGU3MyB2YXJpYWJsZTM2NiA9IHZhcmlh
YmxlMzg7CnR5cGUxOSB2YXJpYWJsZTM2NTsKaWYgKHZhcmlhYmxlMzY2KSB2YXJpYWJsZTM2NSA9
ICp2YXJpYWJsZTM4OwplbHNlIHZhcmlhYmxlMzY1ID0geyB9Owp0eXBlNjIgdmFyaWFibGUzNjcg
PSBzdGF0aWNfY2FzdDx0eXBlNjI+KC0xKTsKdHlwZTE5IHZhcmlhYmxlMzY4Owp2YXJpYWJsZTM2
OCA9IHZhcmlhYmxlMzY1Owp2YXJpYWJsZTM2OC54ID0gdmFyaWFibGUzNjc7CmlmICh2YXJpYWJs
ZTM2MykgKnZhcmlhYmxlMzYzID0gdmFyaWFibGUzNjg7Cn0KdGhyZWFkIHR5cGUxOSogdmFyaWFi
bGUzNjkgPSAmdmFyaWFibGU1NTsKdHlwZTYyIHZhcmlhYmxlMzcwOwp2YXJpYWJsZTM3MCA9IHZh
cmlhYmxlNTUueTsKdHlwZTYyIHZhcmlhYmxlMzcxID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigtMSk7
CnR5cGU3NyB2YXJpYWJsZTM3MjsKdmFyaWFibGUzNzIgPSB2YXJpYWJsZTM3MCA8IHZhcmlhYmxl
MzcxOwp0eXBlNzcgdmFyaWFibGUzNzM7CnsKdHlwZTc3IHggPSB2YXJpYWJsZTM3MjsKdmFyaWFi
bGUzNzMgPSBzdGF0aWNfY2FzdDx0eXBlNzc+KHgpOwp9CmlmICh2YXJpYWJsZTM3Mykgewp0aHJl
YWQgdHlwZTczKiB2YXJpYWJsZTM3NCA9ICZ2YXJpYWJsZTM5Owp0aHJlYWQgdHlwZTE5KiB2YXJp
YWJsZTM3NSA9ICZ2YXJpYWJsZTU1Owp0eXBlNzMgdmFyaWFibGUzNzYgPSB2YXJpYWJsZTM3NTsK
KnZhcmlhYmxlMzc0ID0gdmFyaWFibGUzNzY7CnRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMzc3ID0g
JnZhcmlhYmxlMzk7CnR5cGU3MyB2YXJpYWJsZTM3OSA9IHZhcmlhYmxlMzk7CnR5cGUxOSB2YXJp
YWJsZTM3ODsKaWYgKHZhcmlhYmxlMzc5KSB2YXJpYWJsZTM3OCA9ICp2YXJpYWJsZTM5OwplbHNl
IHZhcmlhYmxlMzc4ID0geyB9Owp0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTM4MCA9ICZ2YXJpYWJs
ZTM5Owp0eXBlNzMgdmFyaWFibGUzODIgPSB2YXJpYWJsZTM5Owp0eXBlMTkgdmFyaWFibGUzODE7
CmlmICh2YXJpYWJsZTM4MikgdmFyaWFibGUzODEgPSAqdmFyaWFibGUzOTsKZWxzZSB2YXJpYWJs
ZTM4MSA9IHsgfTsKdHlwZTYyIHZhcmlhYmxlMzgzID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigxKTsK
dHlwZTE5IHZhcmlhYmxlMzg0Owp2YXJpYWJsZTM4NCA9IHZhcmlhYmxlMzgxOwp2YXJpYWJsZTM4
NC55ID0gdmFyaWFibGUzODM7CmlmICh2YXJpYWJsZTM3OSkgKnZhcmlhYmxlMzc5ID0gdmFyaWFi
bGUzODQ7Cn0KdGhyZWFkIHR5cGUxOSogdmFyaWFibGUzODUgPSAmdmFyaWFibGU1NTsKdHlwZTYy
IHZhcmlhYmxlMzg2Owp2YXJpYWJsZTM4NiA9IHZhcmlhYmxlNTUueTsKdHlwZTYyIHZhcmlhYmxl
Mzg3ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigxKTsKdHlwZTc3IHZhcmlhYmxlMzg4Owp2YXJpYWJs
ZTM4OCA9IHZhcmlhYmxlMzg2ID4gdmFyaWFibGUzODc7CnR5cGU3NyB2YXJpYWJsZTM4OTsKewp0
eXBlNzcgeCA9IHZhcmlhYmxlMzg4Owp2YXJpYWJsZTM4OSA9IHN0YXRpY19jYXN0PHR5cGU3Nz4o
eCk7Cn0KaWYgKHZhcmlhYmxlMzg5KSB7CnRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMzkwID0gJnZh
cmlhYmxlNDA7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzkxID0gJnZhcmlhYmxlNTU7CnR5cGU3
MyB2YXJpYWJsZTM5MiA9IHZhcmlhYmxlMzkxOwoqdmFyaWFibGUzOTAgPSB2YXJpYWJsZTM5MjsK
dGhyZWFkIHR5cGU3MyogdmFyaWFibGUzOTMgPSAmdmFyaWFibGU0MDsKdHlwZTczIHZhcmlhYmxl
Mzk1ID0gdmFyaWFibGU0MDsKdHlwZTE5IHZhcmlhYmxlMzk0OwppZiAodmFyaWFibGUzOTUpIHZh
cmlhYmxlMzk0ID0gKnZhcmlhYmxlNDA7CmVsc2UgdmFyaWFibGUzOTQgPSB7IH07CnRocmVhZCB0
eXBlNzMqIHZhcmlhYmxlMzk2ID0gJnZhcmlhYmxlNDA7CnR5cGU3MyB2YXJpYWJsZTM5OCA9IHZh
cmlhYmxlNDA7CnR5cGUxOSB2YXJpYWJsZTM5NzsKaWYgKHZhcmlhYmxlMzk4KSB2YXJpYWJsZTM5
NyA9ICp2YXJpYWJsZTQwOwplbHNlIHZhcmlhYmxlMzk3ID0geyB9Owp0eXBlNjIgdmFyaWFibGUz
OTkgPSBzdGF0aWNfY2FzdDx0eXBlNjI+KC0xKTsKdHlwZTE5IHZhcmlhYmxlNDAwOwp2YXJpYWJs
ZTQwMCA9IHZhcmlhYmxlMzk3Owp2YXJpYWJsZTQwMC55ID0gdmFyaWFibGUzOTk7CmlmICh2YXJp
YWJsZTM5NSkgKnZhcmlhYmxlMzk1ID0gdmFyaWFibGU0MDA7Cn0KdGhyZWFkIHR5cGU2OCogdmFy
aWFibGU0MDEgPSAmdmFyaWFibGU3Owp0aHJlYWQgdHlwZTcxKiB2YXJpYWJsZTQwMiA9ICZ2YXJp
YWJsZTQxOwp0eXBlNzkgdmFyaWFibGU0MDM7CnZhcmlhYmxlNDAzID0gKHZhcmlhYmxlNDEgPCB2
YXJpYWJsZTcubGVuZ3RoKSA/ICAmKHZhcmlhYmxlNy5wb2ludGVyW3ZhcmlhYmxlNDFdKSA6IG51
bGxwdHI7CnR5cGU3OSB2YXJpYWJsZTQwNSA9IHZhcmlhYmxlNDAzOwp0eXBlNjcgdmFyaWFibGU0
MDQ7CmlmICh2YXJpYWJsZTQwNSkgdmFyaWFibGU0MDQgPSAqdmFyaWFibGU0MDM7CmVsc2UgdmFy
aWFibGU0MDQgPSB7IH07CnR5cGU3OSB2YXJpYWJsZTQwNiA9IHZhcmlhYmxlNDA1Owp0eXBlNzgg
dmFyaWFibGU0MDc7CnZhcmlhYmxlNDA3ID0gJih2YXJpYWJsZTQwNi0+c3RydWN0dXJlRWxlbWVu
dDApOwp0eXBlNzggdmFyaWFibGU0MDkgPSB2YXJpYWJsZTQwNzsKdHlwZTE5IHZhcmlhYmxlNDA4
OwppZiAodmFyaWFibGU0MDkpIHZhcmlhYmxlNDA4ID0gKnZhcmlhYmxlNDA3OwplbHNlIHZhcmlh
YmxlNDA4ID0geyB9Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTQxMCA9ICZ2YXJpYWJsZTU1Owpp
ZiAodmFyaWFibGU0MDkpICp2YXJpYWJsZTQwOSA9IHZhcmlhYmxlNTU7CnRocmVhZCB0eXBlNjgq
IHZhcmlhYmxlNDExID0gJnZhcmlhYmxlNzsKdGhyZWFkIHR5cGU3MSogdmFyaWFibGU0MTIgPSAm
dmFyaWFibGU0MTsKdHlwZTc5IHZhcmlhYmxlNDEzOwp2YXJpYWJsZTQxMyA9ICh2YXJpYWJsZTQx
IDwgdmFyaWFibGU3Lmxlbmd0aCkgPyAgJih2YXJpYWJsZTcucG9pbnRlclt2YXJpYWJsZTQxXSkg
OiBudWxscHRyOwp0eXBlNzkgdmFyaWFibGU0MTUgPSB2YXJpYWJsZTQxMzsKdHlwZTY3IHZhcmlh
YmxlNDE0OwppZiAodmFyaWFibGU0MTUpIHZhcmlhYmxlNDE0ID0gKnZhcmlhYmxlNDEzOwplbHNl
IHZhcmlhYmxlNDE0ID0geyB9Owp0eXBlNzkgdmFyaWFibGU0MTYgPSB2YXJpYWJsZTQxNTsKdHlw
ZTc4IHZhcmlhYmxlNDE3Owp2YXJpYWJsZTQxNyA9ICYodmFyaWFibGU0MTYtPnN0cnVjdHVyZUVs
ZW1lbnQxKTsKdHlwZTc4IHZhcmlhYmxlNDE5ID0gdmFyaWFibGU0MTc7CnR5cGUxOSB2YXJpYWJs
ZTQxODsKaWYgKHZhcmlhYmxlNDE5KSB2YXJpYWJsZTQxOCA9ICp2YXJpYWJsZTQxNzsKZWxzZSB2
YXJpYWJsZTQxOCA9IHsgfTsKdGhyZWFkIHR5cGUxOSogdmFyaWFibGU0MjAgPSAmdmFyaWFibGU2
NTsKaWYgKHZhcmlhYmxlNDE5KSAqdmFyaWFibGU0MTkgPSB2YXJpYWJsZTY1Owp9Cn0KdHlwZTcx
IGZ1bmN0aW9uMSh0eXBlNzEgdmFyaWFibGU0MjEpCnsKdGhyZWFkIHR5cGU3MSogdmFyaWFibGU0
MjIgPSAmdmFyaWFibGU0MjE7CnR5cGU3MSB2YXJpYWJsZTQyMyA9IHN0YXRpY19jYXN0PHR5cGU3
MT4oMSk7CnR5cGU3MSB2YXJpYWJsZTQyNDsKdmFyaWFibGU0MjQgPSB2YXJpYWJsZTQyMSArIHZh
cmlhYmxlNDIzOwpyZXR1cm4gdmFyaWFibGU0MjQ7Cn0KCnR5cGU2MiBmdW5jdGlvbjIodHlwZTYy
IHZhcmlhYmxlNDI1KQp7CnRocmVhZCB0eXBlNjIqIHZhcmlhYmxlNDI2ID0gJnZhcmlhYmxlNDI1
Owp0eXBlNjIgdmFyaWFibGU0MjcgPSBzdGF0aWNfY2FzdDx0eXBlNjI+KDEpOwp0eXBlNjIgdmFy
aWFibGU0Mjg7CnZhcmlhYmxlNDI4ID0gdmFyaWFibGU0MjUgKyB2YXJpYWJsZTQyNzsKcmV0dXJu
IHZhcmlhYmxlNDI4Owp9Cgp0eXBlNjIgZnVuY3Rpb24zKHR5cGUxOSB2YXJpYWJsZTQyOSwgdHlw
ZTE5IHZhcmlhYmxlNDMwKQp7CnRocmVhZCB0eXBlMTkqIHZhcmlhYmxlNDMxID0gJnZhcmlhYmxl
NDI5Owp0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTQzMiA9ICZ2YXJpYWJsZTQzMDsKdHlwZTE5IHZh
cmlhYmxlNDMzOwp2YXJpYWJsZTQzMyA9IHZhcmlhYmxlNDI5IC0gdmFyaWFibGU0MzA7CnR5cGU2
MiB2YXJpYWJsZTQzNDsKdmFyaWFibGU0MzQgPSBsZW5ndGgodmFyaWFibGU0MzMpOwpyZXR1cm4g
dmFyaWFibGU0MzQ7Cn0KCnR5cGUxOSBmdW5jdGlvbjQodHlwZTE5IHZhcmlhYmxlNDM1KQp7CnRo
cmVhZCB0eXBlMTkqIHZhcmlhYmxlNDM2ID0gJnZhcmlhYmxlNDM1Owp0aHJlYWQgdHlwZTE5KiB2
YXJpYWJsZTQzNyA9ICZ2YXJpYWJsZTQzNTsKdHlwZTYyIHZhcmlhYmxlNDM4Owp2YXJpYWJsZTQz
OCA9IGxlbmd0aCh2YXJpYWJsZTQzNSk7CnR5cGUxOSB2YXJpYWJsZTQzOTsKdmFyaWFibGU0Mzkg
PSB2YXJpYWJsZTQzNSAvIHZhcmlhYmxlNDM4OwpyZXR1cm4gdmFyaWFibGU0Mzk7Cn0KCgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>376651</attachid>
            <date>2019-08-18 14:31:41 -0700</date>
            <delta_ts>2019-08-18 14:31:41 -0700</delta_ts>
            <desc>after.txt</desc>
            <filename>after.txt</filename>
            <type>text/plain</type>
            <size>45651</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">R2VuZXJhdGVkIE1ldGFsIGNvZGU6IAojaW5jbHVkZSA8bWV0YWxfc3RkbGliPgojaW5jbHVkZSA8
bWV0YWxfYXRvbWljPgojaW5jbHVkZSA8bWV0YWxfbWF0aD4KI2luY2x1ZGUgPG1ldGFsX3JlbGF0
aW9uYWw+CiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPgojaW5jbHVkZSA8bWV0YWxfdGV4dHVyZT4K
CnVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKCnN0cnVjdCB0eXBlNjA7CnN0cnVjdCB0eXBlNjE7CnN0
cnVjdCB0eXBlNjM7Cgp0eXBlZGVmIHVpbnQzIHR5cGU5Owp0eXBlZGVmIHR5cGU5IHR5cGU4Owp0
eXBlZGVmIGFycmF5PGJvb2wsIDg+IHR5cGU1NTsKdHlwZWRlZiB0eXBlNTUgdHlwZTU0Owp0eXBl
ZGVmIGZsb2F0IHR5cGU2MjsKc3RydWN0IHR5cGU2MSB7CiAgICB0eXBlNjIgc3RydWN0dXJlRWxl
bWVudDI7CiAgICB0eXBlNjIgc3RydWN0dXJlRWxlbWVudDM7CiAgICB0eXBlNjIgc3RydWN0dXJl
RWxlbWVudDQ7CiAgICB0eXBlNjIgc3RydWN0dXJlRWxlbWVudDU7CiAgICB0eXBlNjIgc3RydWN0
dXJlRWxlbWVudDY7CiAgICB0eXBlNjIgc3RydWN0dXJlRWxlbWVudDc7CiAgICB0eXBlNjIgc3Ry
dWN0dXJlRWxlbWVudDg7Cn07CnR5cGVkZWYgYXJyYXk8ZmxvYXQsIDk+IHR5cGUzMzsKdHlwZWRl
ZiB0eXBlMzMgdHlwZTMyOwp0eXBlZGVmIGludDMgdHlwZTE1Owp0eXBlZGVmIHR5cGUxNSB0eXBl
MTQ7CnR5cGVkZWYgYXJyYXk8Ym9vbCwgMTY+IHR5cGU1OTsKdHlwZWRlZiB0eXBlNTkgdHlwZTU4
Owp0eXBlZGVmIHVpbnQ0IHR5cGUxMTsKdHlwZWRlZiB0eXBlMTEgdHlwZTEwOwp0eXBlZGVmIGJv
b2wzIHR5cGUzOwp0eXBlZGVmIHR5cGUzIHR5cGUyOwp0eXBlZGVmIGFycmF5PGZsb2F0LCA4PiB0
eXBlMzc7CnR5cGVkZWYgdHlwZTM3IHR5cGUzNjsKdHlwZWRlZiBhcnJheTxmbG9hdCwgMTY+IHR5
cGU0MTsKdHlwZWRlZiB0eXBlNDEgdHlwZTQwOwp0eXBlZGVmIGFycmF5PGZsb2F0LCA2PiB0eXBl
MzE7CnR5cGVkZWYgdHlwZTMxIHR5cGUzMDsKdHlwZWRlZiBmbG9hdDIgdHlwZTE5OwpzdHJ1Y3Qg
dHlwZTYwIHsKICAgIHR5cGUxOSBzdHJ1Y3R1cmVFbGVtZW50MDsKICAgIHR5cGUxOSBzdHJ1Y3R1
cmVFbGVtZW50MTsKfTsKdHlwZWRlZiBhcnJheTxib29sLCA2PiB0eXBlNDk7CnR5cGVkZWYgdHlw
ZTQ5IHR5cGU0ODsKdHlwZWRlZiBpbnQyIHR5cGUxMzsKdHlwZWRlZiB0eXBlMTMgdHlwZTEyOwp0
eXBlZGVmIGFycmF5PGZsb2F0LCA2PiB0eXBlMjc7CnR5cGVkZWYgdHlwZTI3IHR5cGUyNjsKdHlw
ZWRlZiBhcnJheTxmbG9hdCwgMTI+IHR5cGUzNTsKdHlwZWRlZiB0eXBlMzUgdHlwZTM0Owp0eXBl
ZGVmIHVpbnQyIHR5cGU3Owp0eXBlZGVmIHR5cGU3IHR5cGU2Owp0eXBlZGVmIGJvb2wyIHR5cGUx
Owp0eXBlZGVmIHR5cGUxIHR5cGUwOwp0eXBlZGVmIGFycmF5PGZsb2F0LCAxMj4gdHlwZTM5Owp0
eXBlZGVmIHR5cGUzOSB0eXBlMzg7CnR5cGVkZWYgYXJyYXk8Ym9vbCwgMTI+IHR5cGU1NzsKdHlw
ZWRlZiB0eXBlNTcgdHlwZTU2Owp0eXBlZGVmIGFycmF5PGJvb2wsIDY+IHR5cGU0NTsKdHlwZWRl
ZiB0eXBlNDUgdHlwZTQ0Owp0eXBlZGVmIGFycmF5PGJvb2wsIDg+IHR5cGU0NzsKdHlwZWRlZiB0
eXBlNDcgdHlwZTQ2Owp0eXBlZGVmIGludDQgdHlwZTE3Owp0eXBlZGVmIHR5cGUxNyB0eXBlMTY7
CnR5cGVkZWYgYXJyYXk8ZmxvYXQsIDQ+IHR5cGUyNTsKdHlwZWRlZiB0eXBlMjUgdHlwZTI0Owp0
eXBlZGVmIGFycmF5PGJvb2wsIDEyPiB0eXBlNTM7CnR5cGVkZWYgdHlwZTUzIHR5cGU1MjsKdHlw
ZWRlZiBhcnJheTxmbG9hdCwgOD4gdHlwZTI5Owp0eXBlZGVmIHR5cGUyOSB0eXBlMjg7CnR5cGVk
ZWYgdHlwZTE5IHR5cGUxODsKdHlwZWRlZiBmbG9hdDQgdHlwZTIzOwp0eXBlZGVmIHR5cGUyMyB0
eXBlMjI7CnR5cGVkZWYgYXJyYXk8Ym9vbCwgOT4gdHlwZTUxOwp0eXBlZGVmIHR5cGU1MSB0eXBl
NTA7CnN0cnVjdCB0eXBlNjMgewp9Owp0eXBlZGVmIGFycmF5PGJvb2wsIDQ+IHR5cGU0MzsKdHlw
ZWRlZiB0eXBlNDMgdHlwZTQyOwp0eXBlZGVmIGJvb2w0IHR5cGU1Owp0eXBlZGVmIHR5cGU1IHR5
cGU0Owp0eXBlZGVmIGZsb2F0MyB0eXBlMjE7CnR5cGVkZWYgdHlwZTIxIHR5cGUyMDsKdHlwZWRl
ZiB0ZXh0dXJlMWRfYXJyYXk8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMDQ7CnR5cGVkZWYg
dGV4dHVyZTFkPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGU5NjsKdHlwZWRlZiBzYW1wbGVyIHR5
cGU5MTsKdHlwZWRlZiB0ZXh0dXJlMWQ8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGU5MzsKdHlw
ZWRlZiB0ZXh0dXJlM2Q8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE0NjsKdHlwZWRlZiB0eXBl
NjEgdHlwZTY1OwpzdHJ1Y3QgdHlwZTY2eyAKICAgIGRldmljZSB0eXBlNjUqIHBvaW50ZXI7CiAg
ICB1aW50MzJfdCBsZW5ndGg7Cn07CnR5cGVkZWYgdGV4dHVyZTJkX2FycmF5PGZsb2F0LCBhY2Nl
c3M6OnNhbXBsZT4gdHlwZTEzNjsKdHlwZWRlZiB0eXBlNjMgdHlwZTY5Owp0eXBlZGVmIHRocmVh
ZCB0eXBlNjkqIHR5cGU3MDsKdHlwZWRlZiB0ZXh0dXJlM2Q8ZmxvYXQsIGFjY2Vzczo6c2FtcGxl
PiB0eXBlMTUxOwp0eXBlZGVmIHRocmVhZCB0eXBlNjUqIHR5cGU4MDsKdHlwZWRlZiB0ZXh0dXJl
MWQ8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTAzOwp0eXBlZGVmIHRleHR1cmUyZDxpbnQs
IGFjY2Vzczo6c2FtcGxlPiB0eXBlMTIwOwp0eXBlZGVmIHRocmVhZGdyb3VwIHR5cGU2NSogdHlw
ZTkwOwp0eXBlZGVmIHRleHR1cmUxZF9hcnJheTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEw
NzsKdHlwZWRlZiB0ZXh0dXJlM2Q8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE0NDsKdHlwZWRl
ZiB0ZXh0dXJlMmQ8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTI2Owp0eXBlZGVmIHRleHR1
cmUxZF9hcnJheTxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMTQ7CnR5cGVkZWYgdGV4dHVy
ZWN1YmU8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNTI7CnR5cGVkZWYgdGhyZWFkIHR5cGU2
MiogdHlwZTc0Owp0eXBlZGVmIHRleHR1cmUxZF9hcnJheTxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+
IHR5cGUxMTM7CnR5cGVkZWYgdGV4dHVyZWN1YmU8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUx
NTQ7CnR5cGVkZWYgdGV4dHVyZTJkPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMjM7CnR5cGVk
ZWYgdGV4dHVyZWN1YmU8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTYzOwp0eXBlZGVmIHRl
eHR1cmVjdWJlPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE2MjsKdHlwZWRlZiB0ZXh0dXJl
Y3ViZTxpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTU2Owp0eXBlZGVmIHRleHR1cmUyZDx1aW50
LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTExODsKdHlwZWRlZiB0ZXh0dXJlMmRfYXJyYXk8dWludCwg
YWNjZXNzOjpzYW1wbGU+IHR5cGUxMjk7CnR5cGVkZWYgdGV4dHVyZTFkPHVpbnQsIGFjY2Vzczo6
c2FtcGxlPiB0eXBlOTU7CnR5cGVkZWYgdHlwZTYwIHR5cGU2NzsKc3RydWN0IHR5cGU2OHsgCiAg
ICBkZXZpY2UgdHlwZTY3KiBwb2ludGVyOwogICAgdWludDMyX3QgbGVuZ3RoOwp9Owp0eXBlZGVm
IHRleHR1cmUyZDx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTExNjsKdHlwZWRlZiB0ZXh0dXJl
MmRfYXJyYXk8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTM3Owp0eXBlZGVmIHRocmVhZCB0
eXBlMTkqIHR5cGU3MzsKdHlwZWRlZiB0ZXh0dXJlMWQ8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlw
ZTk4Owp0eXBlZGVmIHRleHR1cmUzZDxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNDg7CnR5
cGVkZWYgdGV4dHVyZTFkPHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlOTI7CnR5cGVkZWYgdGV4
dHVyZTJkX2FycmF5PHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTMwOwp0eXBlZGVmIHRleHR1
cmUxZF9hcnJheTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEwNTsKdHlwZWRlZiBkZXZpY2Ug
dHlwZTYyKiB0eXBlODg7CnR5cGVkZWYgdGhyZWFkZ3JvdXAgdHlwZTE5KiB0eXBlODM7CnR5cGVk
ZWYgdGhyZWFkIHR5cGU2NyogdHlwZTg1Owp0eXBlZGVmIGRlcHRoMmRfYXJyYXk8ZmxvYXQsIGFj
Y2Vzczo6c2FtcGxlPiB0eXBlMTY1Owp0eXBlZGVmIHRleHR1cmUyZF9hcnJheTx1aW50LCBhY2Nl
c3M6OnNhbXBsZT4gdHlwZTEzMTsKdHlwZWRlZiB0ZXh0dXJlM2Q8ZmxvYXQsIGFjY2Vzczo6c2Ft
cGxlPiB0eXBlMTQ5Owp0eXBlZGVmIHRleHR1cmUyZDxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5
cGUxMjc7CnR5cGVkZWYgdGV4dHVyZTJkPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMjI7CnR5
cGVkZWYgdGV4dHVyZTNkPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNDc7CnR5cGVkZWYgdGV4
dHVyZTFkX2FycmF5PGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMTE7CnR5cGVkZWYgdGV4dHVy
ZTFkPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGU5NzsKdHlwZWRlZiB0ZXh0dXJlMmQ8aW50LCBh
Y2Nlc3M6OnNhbXBsZT4gdHlwZTEyMTsKdHlwZWRlZiBjb25zdGFudCB0eXBlNjcqIHR5cGU4MjsK
dHlwZWRlZiB0ZXh0dXJlY3ViZTxpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTU3Owp0eXBlZGVm
IHRleHR1cmVjdWJlPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE2MTsKdHlwZWRlZiB0ZXh0
dXJlMmRfYXJyYXk8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEzNTsKdHlwZWRlZiBkZXZpY2Ug
dHlwZTE5KiB0eXBlNzg7CnR5cGVkZWYgdGV4dHVyZWN1YmU8aW50LCBhY2Nlc3M6OnNhbXBsZT4g
dHlwZTE1ODsKdHlwZWRlZiB0ZXh0dXJlM2Q8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTUw
Owp0eXBlZGVmIGRldmljZSB0eXBlNjUqIHR5cGU3NTsKdHlwZWRlZiB0ZXh0dXJlMmQ8dWludCwg
YWNjZXNzOjpzYW1wbGU+IHR5cGUxMTc7CnR5cGVkZWYgdGV4dHVyZTJkPHVpbnQsIGFjY2Vzczo6
c2FtcGxlPiB0eXBlMTE5Owp0eXBlZGVmIHRleHR1cmUyZDxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+
IHR5cGUxMjQ7CnR5cGVkZWYgdGV4dHVyZTJkX2FycmF5PGludCwgYWNjZXNzOjpzYW1wbGU+IHR5
cGUxMzI7CnR5cGVkZWYgZGVwdGgyZDxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNjQ7CnR5
cGVkZWYgdGV4dHVyZTFkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEwMTsKdHlwZWRlZiB0
ZXh0dXJlMWRfYXJyYXk8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEwODsKdHlwZWRlZiBjb25z
dGFudCB0eXBlNjUqIHR5cGU4NzsKdHlwZWRlZiB0aHJlYWRncm91cCB0eXBlNjcqIHR5cGU4NDsK
dHlwZWRlZiB0aHJlYWRncm91cCB0eXBlNjIqIHR5cGU4OTsKdHlwZWRlZiBjb25zdGFudCB0eXBl
MTkqIHR5cGU4MTsKdHlwZWRlZiB0ZXh0dXJlMWRfYXJyYXk8ZmxvYXQsIGFjY2Vzczo6c2FtcGxl
PiB0eXBlMTE1Owp0eXBlZGVmIHVpbnQzMl90IHR5cGU3MTsKdHlwZWRlZiB0aHJlYWQgdHlwZTcx
KiB0eXBlNzI7CnR5cGVkZWYgdGV4dHVyZTFkPGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGU5OTsK
dHlwZWRlZiBkZXB0aGN1YmU8ZmxvYXQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTY2Owp0eXBlZGVm
IHRleHR1cmUyZDxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMjU7CnR5cGVkZWYgZGV2aWNl
IHR5cGU2NyogdHlwZTc5Owp0eXBlZGVmIGJvb2wgdHlwZTc3Owp0eXBlZGVmIHRleHR1cmUyZF9h
cnJheTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEyODsKdHlwZWRlZiB0ZXh0dXJlMWQ8dWlu
dCwgYWNjZXNzOjpzYW1wbGU+IHR5cGU5NDsKdHlwZWRlZiB0ZXh0dXJlMmRfYXJyYXk8ZmxvYXQs
IGFjY2Vzczo6c2FtcGxlPiB0eXBlMTM5Owp0eXBlZGVmIHZvaWQgdHlwZTY0Owp0eXBlZGVmIHRl
eHR1cmUxZF9hcnJheTxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMTI7CnR5cGVkZWYgY29u
c3RhbnQgdHlwZTYyKiB0eXBlODY7CnR5cGVkZWYgdGV4dHVyZTJkX2FycmF5PGludCwgYWNjZXNz
OjpzYW1wbGU+IHR5cGUxMzM7CnR5cGVkZWYgdGV4dHVyZTFkX2FycmF5PGludCwgYWNjZXNzOjpz
YW1wbGU+IHR5cGUxMDk7CnR5cGVkZWYgdGV4dHVyZWN1YmU8dWludCwgYWNjZXNzOjpzYW1wbGU+
IHR5cGUxNTM7CnR5cGVkZWYgdGV4dHVyZWN1YmU8aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE1
OTsKdHlwZWRlZiB0ZXh0dXJlM2Q8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNDI7CnR5cGVk
ZWYgdGV4dHVyZTFkPGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEwMDsKdHlwZWRlZiB0ZXh0
dXJlY3ViZTxmbG9hdCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNjA7CnR5cGVkZWYgdGV4dHVyZTFk
X2FycmF5PGludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxMTA7CnR5cGVkZWYgdGV4dHVyZTNkPHVp
bnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTQxOwp0eXBlZGVmIHRleHR1cmUzZDxpbnQsIGFjY2Vz
czo6c2FtcGxlPiB0eXBlMTQ1Owp0eXBlZGVmIHRleHR1cmUxZDxmbG9hdCwgYWNjZXNzOjpzYW1w
bGU+IHR5cGUxMDI7CnR5cGVkZWYgdGV4dHVyZTJkX2FycmF5PGludCwgYWNjZXNzOjpzYW1wbGU+
IHR5cGUxMzQ7CnR5cGVkZWYgdGV4dHVyZTNkPHVpbnQsIGFjY2Vzczo6c2FtcGxlPiB0eXBlMTQw
Owp0eXBlZGVmIHRleHR1cmUxZF9hcnJheTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTEwNjsK
dHlwZWRlZiB0ZXh0dXJlY3ViZTx1aW50LCBhY2Nlc3M6OnNhbXBsZT4gdHlwZTE1NTsKdHlwZWRl
ZiB0ZXh0dXJlM2Q8dWludCwgYWNjZXNzOjpzYW1wbGU+IHR5cGUxNDM7CnR5cGVkZWYgaW50MzJf
dCB0eXBlNzY7CnR5cGVkZWYgdGV4dHVyZTJkX2FycmF5PGZsb2F0LCBhY2Nlc3M6OnNhbXBsZT4g
dHlwZTEzODsKdHlwZTcxIGZ1bmN0aW9uMSh0eXBlNzEpOwp0eXBlNjIgZnVuY3Rpb24yKHR5cGU2
Mik7CnR5cGU2MiBmdW5jdGlvbjModHlwZTE5LCB0eXBlMTkpOwp0eXBlMTkgZnVuY3Rpb240KHR5
cGUxOSk7CgpzdHJ1Y3QgdHlwZTE2NyB7CiAgICBkZXZpY2UgdHlwZTY1KiBzdHJ1Y3R1cmVFbGVt
ZW50OSBbW2lkKDApXV07CiAgICBkZXZpY2UgdHlwZTY3KiBzdHJ1Y3R1cmVFbGVtZW50MTMgW1tp
ZCgxKV1dOwogICAgZGV2aWNlIHR5cGU2Nyogc3RydWN0dXJlRWxlbWVudDExIFtbaWQoMildXTsK
ICAgIHVpbnQyIHN0cnVjdHVyZUVsZW1lbnQxMCBbW2lkKDMpXV07CiAgICB1aW50MiBzdHJ1Y3R1
cmVFbGVtZW50MTQgW1tpZCg0KV1dOwogICAgdWludDIgc3RydWN0dXJlRWxlbWVudDEyIFtbaWQo
NSldXTsKfTsKCmtlcm5lbCB2b2lkIGZ1bmN0aW9uMChkZXZpY2UgdHlwZTE2NyYgdmFyaWFibGUw
IFtbYnVmZmVyKDApXV0sIHVpbnQzIHZhcmlhYmxlNCBbW3RocmVhZF9wb3NpdGlvbl9pbl9ncmlk
XV0pCnsKICAgIHR5cGU2NiB2YXJpYWJsZTU7CiAgICB0eXBlNjggdmFyaWFibGU2OwogICAgdHlw
ZTY4IHZhcmlhYmxlNzsKICAgIHR5cGUyMSB2YXJpYWJsZTg7CiAgICBzaXplX3QgdmFyaWFibGUx
ID0gdmFyaWFibGUwLnN0cnVjdHVyZUVsZW1lbnQxMC55OwogICAgdmFyaWFibGUxID0gdmFyaWFi
bGUxIDw8IDMyOwogICAgdmFyaWFibGUxID0gdmFyaWFibGUxIHwgdmFyaWFibGUwLnN0cnVjdHVy
ZUVsZW1lbnQxMC54OwogICAgdmFyaWFibGUxID0gdmFyaWFibGUxIC8gc2l6ZW9mKHR5cGU2NSk7
CiAgICBpZiAodmFyaWFibGUxID4gMHhGRkZGRkZGRikKICAgICAgICB2YXJpYWJsZTEgPSAweEZG
RkZGRkZGOwogICAgdmFyaWFibGU1ID0geyB2YXJpYWJsZTAuc3RydWN0dXJlRWxlbWVudDksIHN0
YXRpY19jYXN0PHVpbnQzMl90Pih2YXJpYWJsZTEpIH07CiAgICBzaXplX3QgdmFyaWFibGUyID0g
dmFyaWFibGUwLnN0cnVjdHVyZUVsZW1lbnQxMi55OwogICAgdmFyaWFibGUyID0gdmFyaWFibGUy
IDw8IDMyOwogICAgdmFyaWFibGUyID0gdmFyaWFibGUyIHwgdmFyaWFibGUwLnN0cnVjdHVyZUVs
ZW1lbnQxMi54OwogICAgdmFyaWFibGUyID0gdmFyaWFibGUyIC8gc2l6ZW9mKHR5cGU2Nyk7CiAg
ICBpZiAodmFyaWFibGUyID4gMHhGRkZGRkZGRikKICAgICAgICB2YXJpYWJsZTIgPSAweEZGRkZG
RkZGOwogICAgdmFyaWFibGU3ID0geyB2YXJpYWJsZTAuc3RydWN0dXJlRWxlbWVudDExLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4odmFyaWFibGUyKSB9OwogICAgc2l6ZV90IHZhcmlhYmxlMyA9IHZh
cmlhYmxlMC5zdHJ1Y3R1cmVFbGVtZW50MTQueTsKICAgIHZhcmlhYmxlMyA9IHZhcmlhYmxlMyA8
PCAzMjsKICAgIHZhcmlhYmxlMyA9IHZhcmlhYmxlMyB8IHZhcmlhYmxlMC5zdHJ1Y3R1cmVFbGVt
ZW50MTQueDsKICAgIHZhcmlhYmxlMyA9IHZhcmlhYmxlMyAvIHNpemVvZih0eXBlNjcpOwogICAg
aWYgKHZhcmlhYmxlMyA+IDB4RkZGRkZGRkYpCiAgICAgICAgdmFyaWFibGUzID0gMHhGRkZGRkZG
RjsKICAgIHZhcmlhYmxlNiA9IHsgdmFyaWFibGUwLnN0cnVjdHVyZUVsZW1lbnQxMywgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHZhcmlhYmxlMykgfTsKICAgIHZhcmlhYmxlOCA9IHR5cGUyMSh2YXJp
YWJsZTQpOwogICAgewogICAgICAgIHR5cGU2OSB2YXJpYWJsZTkgPSB7IH07CiAgICAgICAgdGhy
ZWFkIHR5cGU2OSogdmFyaWFibGUxMSA9ICZ2YXJpYWJsZTk7CiAgICAgICAgdHlwZTcwIHZhcmlh
YmxlMTIgPSB2YXJpYWJsZTExOwogICAgICAgIHR5cGU3MCB2YXJpYWJsZTEwID0gdmFyaWFibGUx
MjsKICAgICAgICB0eXBlNzIgdmFyaWFibGUxMyA9IHsgfTsKICAgICAgICB0eXBlNzEgdmFyaWFi
bGUxNCA9IHsgfTsKICAgICAgICB0eXBlNzEgdmFyaWFibGUxNSA9IHsgfTsKICAgICAgICB0eXBl
NzMgdmFyaWFibGUxNiA9IHsgfTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUxNyA9IHsgfTsKICAg
ICAgICB0eXBlMTkgdmFyaWFibGUxOCA9IHsgfTsKICAgICAgICB0eXBlNzQgdmFyaWFibGUxOSA9
IHsgfTsKICAgICAgICB0eXBlNjIgdmFyaWFibGUyMCA9IHsgfTsKICAgICAgICB0eXBlNjIgdmFy
aWFibGUyMSA9IHsgfTsKICAgICAgICB0eXBlNzMgdmFyaWFibGUyMiA9IHsgfTsKICAgICAgICB0
eXBlMTkgdmFyaWFibGUyMyA9IHsgfTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUyNCA9IHsgfTsK
ICAgICAgICB0eXBlNzMgdmFyaWFibGUyNSA9IHsgfTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUy
NiA9IHsgfTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUyNyA9IHsgfTsKICAgICAgICB0eXBlNzQg
dmFyaWFibGUyOCA9IHsgfTsKICAgICAgICB0eXBlNjIgdmFyaWFibGUyOSA9IHsgfTsKICAgICAg
ICB0eXBlNjIgdmFyaWFibGUzMCA9IHsgfTsKICAgICAgICB0eXBlNzMgdmFyaWFibGUzMSA9IHsg
fTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUzMiA9IHsgfTsKICAgICAgICB0eXBlMTkgdmFyaWFi
bGUzMyA9IHsgfTsKICAgICAgICB0eXBlNzMgdmFyaWFibGUzNCA9IHsgfTsKICAgICAgICB0eXBl
MTkgdmFyaWFibGUzNSA9IHsgfTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUzNiA9IHsgfTsKICAg
ICAgICB0eXBlNzMgdmFyaWFibGUzNyA9IHsgfTsKICAgICAgICB0eXBlNzMgdmFyaWFibGUzOCA9
IHsgfTsKICAgICAgICB0eXBlNzMgdmFyaWFibGUzOSA9IHsgfTsKICAgICAgICB0eXBlNzMgdmFy
aWFibGU0MCA9IHsgfTsKICAgICAgICB0aHJlYWQgdHlwZTIxKiB2YXJpYWJsZTQyID0gJnZhcmlh
YmxlODsKICAgICAgICB0eXBlNjIgdmFyaWFibGU0MzsKCiAgICAgICAgdmFyaWFibGU0MyA9IHZh
cmlhYmxlOC54OwoKICAgICAgICB0eXBlNzEgdmFyaWFibGU0NDsKCiAgICAgICAgdHlwZTYyIHZh
cmlhYmxlNDUgPSB2YXJpYWJsZTQzOwogICAgICAgIHZhcmlhYmxlNDQgPSBzdGF0aWNfY2FzdDx0
eXBlNzE+KHZhcmlhYmxlNDUpOwoKICAgICAgICB0eXBlNzEgdmFyaWFibGU0MSA9IHZhcmlhYmxl
NDQ7CiAgICAgICAgdGhyZWFkIHR5cGU2NiogdmFyaWFibGU0NyA9ICZ2YXJpYWJsZTU7CiAgICAg
ICAgdHlwZTc2IHZhcmlhYmxlNDggPSBzdGF0aWNfY2FzdDx0eXBlNzY+KDApOwogICAgICAgIHR5
cGU3NSB2YXJpYWJsZTQ5OwoKICAgICAgICB2YXJpYWJsZTQ5ID0gKHZhcmlhYmxlNDggPCB2YXJp
YWJsZTUubGVuZ3RoKSA/ICAmKHZhcmlhYmxlNS5wb2ludGVyW3ZhcmlhYmxlNDhdKSA6IG51bGxw
dHI7CgogICAgICAgIHR5cGU3NSB2YXJpYWJsZTUxID0gdmFyaWFibGU0OTsKICAgICAgICB0eXBl
NjUgdmFyaWFibGU1MDsKICAgICAgICBpZiAodmFyaWFibGU1MSkKICAgICAgICAgICAgdmFyaWFi
bGU1MCA9ICp2YXJpYWJsZTQ5OwogICAgICAgIGVsc2UKICAgICAgICAgICAgdmFyaWFibGU1MCA9
IHsgfTsKICAgICAgICB0eXBlNjUgdmFyaWFibGU0NiA9IHZhcmlhYmxlNTA7CiAgICAgICAgdGhy
ZWFkIHR5cGU3MSogdmFyaWFibGU1MiA9ICZ2YXJpYWJsZTQxOwogICAgICAgIHR5cGU3MSB2YXJp
YWJsZTUzID0gc3RhdGljX2Nhc3Q8dHlwZTcxPigyKTsKICAgICAgICB0eXBlNzcgdmFyaWFibGU1
NDsKCiAgICAgICAgdmFyaWFibGU1NCA9IHZhcmlhYmxlNDEgPj0gdmFyaWFibGU1MzsKCiAgICAg
ICAgdHlwZTc3IHZhcmlhYmxlNTU7CgogICAgICAgIHR5cGU3NyB2YXJpYWJsZTU2ID0gdmFyaWFi
bGU1NDsKICAgICAgICB2YXJpYWJsZTU1ID0gc3RhdGljX2Nhc3Q8dHlwZTc3Pih2YXJpYWJsZTU2
KTsKCiAgICAgICAgaWYgKHZhcmlhYmxlNTUpIHsKICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRocmVhZCB0eXBlNjgq
IHZhcmlhYmxlNTggPSAmdmFyaWFibGU2OwogICAgICAgIHRocmVhZCB0eXBlNzEqIHZhcmlhYmxl
NTkgPSAmdmFyaWFibGU0MTsKICAgICAgICB0eXBlNzkgdmFyaWFibGU2MDsKCiAgICAgICAgdmFy
aWFibGU2MCA9ICh2YXJpYWJsZTQxIDwgdmFyaWFibGU2Lmxlbmd0aCkgPyAgJih2YXJpYWJsZTYu
cG9pbnRlclt2YXJpYWJsZTQxXSkgOiBudWxscHRyOwoKICAgICAgICB0eXBlNzkgdmFyaWFibGU2
MiA9IHZhcmlhYmxlNjA7CiAgICAgICAgdHlwZTY3IHZhcmlhYmxlNjE7CiAgICAgICAgaWYgKHZh
cmlhYmxlNjIpCiAgICAgICAgICAgIHZhcmlhYmxlNjEgPSAqdmFyaWFibGU2MDsKICAgICAgICBl
bHNlCiAgICAgICAgICAgIHZhcmlhYmxlNjEgPSB7IH07CiAgICAgICAgdHlwZTc5IHZhcmlhYmxl
NjMgPSB2YXJpYWJsZTYyOwogICAgICAgIHR5cGU3OCB2YXJpYWJsZTY0OwoKICAgICAgICB2YXJp
YWJsZTY0ID0gJih2YXJpYWJsZTYzLT5zdHJ1Y3R1cmVFbGVtZW50MCk7CgogICAgICAgIHR5cGU3
OCB2YXJpYWJsZTY2ID0gdmFyaWFibGU2NDsKICAgICAgICB0eXBlMTkgdmFyaWFibGU2NTsKICAg
ICAgICBpZiAodmFyaWFibGU2NikKICAgICAgICAgICAgdmFyaWFibGU2NSA9ICp2YXJpYWJsZTY0
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgdmFyaWFibGU2NSA9IHsgfTsKICAgICAgICB0eXBl
MTkgdmFyaWFibGU1NyA9IHZhcmlhYmxlNjU7CiAgICAgICAgdGhyZWFkIHR5cGU2OCogdmFyaWFi
bGU2OCA9ICZ2YXJpYWJsZTY7CiAgICAgICAgdGhyZWFkIHR5cGU3MSogdmFyaWFibGU2OSA9ICZ2
YXJpYWJsZTQxOwogICAgICAgIHR5cGU3OSB2YXJpYWJsZTcwOwoKICAgICAgICB2YXJpYWJsZTcw
ID0gKHZhcmlhYmxlNDEgPCB2YXJpYWJsZTYubGVuZ3RoKSA/ICAmKHZhcmlhYmxlNi5wb2ludGVy
W3ZhcmlhYmxlNDFdKSA6IG51bGxwdHI7CgogICAgICAgIHR5cGU3OSB2YXJpYWJsZTcyID0gdmFy
aWFibGU3MDsKICAgICAgICB0eXBlNjcgdmFyaWFibGU3MTsKICAgICAgICBpZiAodmFyaWFibGU3
MikKICAgICAgICAgICAgdmFyaWFibGU3MSA9ICp2YXJpYWJsZTcwOwogICAgICAgIGVsc2UKICAg
ICAgICAgICAgdmFyaWFibGU3MSA9IHsgfTsKICAgICAgICB0eXBlNzkgdmFyaWFibGU3MyA9IHZh
cmlhYmxlNzI7CiAgICAgICAgdHlwZTc4IHZhcmlhYmxlNzQ7CgogICAgICAgIHZhcmlhYmxlNzQg
PSAmKHZhcmlhYmxlNzMtPnN0cnVjdHVyZUVsZW1lbnQxKTsKCiAgICAgICAgdHlwZTc4IHZhcmlh
YmxlNzYgPSB2YXJpYWJsZTc0OwogICAgICAgIHR5cGUxOSB2YXJpYWJsZTc1OwogICAgICAgIGlm
ICh2YXJpYWJsZTc2KQogICAgICAgICAgICB2YXJpYWJsZTc1ID0gKnZhcmlhYmxlNzQ7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICB2YXJpYWJsZTc1ID0geyB9OwogICAgICAgIHR5cGUxOSB2YXJp
YWJsZTY3ID0gdmFyaWFibGU3NTsKICAgICAgICB0eXBlNjIgdmFyaWFibGU3OCA9IHN0YXRpY19j
YXN0PHR5cGU2Mj4oMCk7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxlNzkgPSBzdGF0aWNfY2FzdDx0
eXBlNjI+KDApOwogICAgICAgIHR5cGUxOSB2YXJpYWJsZTgwOwoKICAgICAgICB2YXJpYWJsZTgw
ID0gdHlwZTE5KHZhcmlhYmxlNzgsIHZhcmlhYmxlNzkpOwoKICAgICAgICB0eXBlMTkgdmFyaWFi
bGU3NyA9IHZhcmlhYmxlODA7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxlODIgPSBzdGF0aWNfY2Fz
dDx0eXBlNjI+KDApOwogICAgICAgIHR5cGU2MiB2YXJpYWJsZTgzID0gc3RhdGljX2Nhc3Q8dHlw
ZTYyPigwKTsKICAgICAgICB0eXBlMTkgdmFyaWFibGU4NDsKCiAgICAgICAgdmFyaWFibGU4NCA9
IHR5cGUxOSh2YXJpYWJsZTgyLCB2YXJpYWJsZTgzKTsKCiAgICAgICAgdHlwZTE5IHZhcmlhYmxl
ODEgPSB2YXJpYWJsZTg0OwogICAgICAgIHR5cGU2MiB2YXJpYWJsZTg2ID0gc3RhdGljX2Nhc3Q8
dHlwZTYyPigwKTsKICAgICAgICB0eXBlNjIgdmFyaWFibGU4NyA9IHN0YXRpY19jYXN0PHR5cGU2
Mj4oMCk7CiAgICAgICAgdHlwZTE5IHZhcmlhYmxlODg7CgogICAgICAgIHZhcmlhYmxlODggPSB0
eXBlMTkodmFyaWFibGU4NiwgdmFyaWFibGU4Nyk7CgogICAgICAgIHR5cGUxOSB2YXJpYWJsZTg1
ID0gdmFyaWFibGU4ODsKICAgICAgICB0eXBlNjIgdmFyaWFibGU5MCA9IHN0YXRpY19jYXN0PHR5
cGU2Mj4oMCk7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxlODkgPSB2YXJpYWJsZTkwOwogICAgICAg
IHR5cGU2MiB2YXJpYWJsZTkyID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigwKTsKICAgICAgICB0eXBl
NjIgdmFyaWFibGU5MSA9IHZhcmlhYmxlOTI7CiAgICAgICAgdHlwZTE5IHZhcmlhYmxlOTMgPSB7
IH07CiAgICAgICAgdHlwZTE5IHZhcmlhYmxlOTQgPSB7IH07CiAgICAgICAgewogICAgICAgICAg
ICB0eXBlNzEgdmFyaWFibGU5NiA9IHN0YXRpY19jYXN0PHR5cGU3MT4oMCk7CiAgICAgICAgICAg
IHR5cGU3MSB2YXJpYWJsZTk1ID0gdmFyaWFibGU5NjsKICAgICAgICAgICAgYm9vbCB2YXJpYWJs
ZTk3ID0gZmFsc2U7CiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICB0
aHJlYWQgdHlwZTcxKiB2YXJpYWJsZTk4ID0gJnZhcmlhYmxlOTU7CiAgICAgICAgICAgICAgICB0
eXBlNzEgdmFyaWFibGU5OSA9IHN0YXRpY19jYXN0PHR5cGU3MT4oMik7CiAgICAgICAgICAgICAg
ICB0eXBlNzcgdmFyaWFibGUxMDA7CgogICAgICAgICAgICAgICAgdmFyaWFibGUxMDAgPSB2YXJp
YWJsZTk1IDwgdmFyaWFibGU5OTsKCiAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlMTAwKQog
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU3MSogdmFyaWFi
bGUxMDEgPSAmdmFyaWFibGU5NTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU3
MSogdmFyaWFibGUxMDIgPSAmdmFyaWFibGU0MTsKICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZTc3IHZhcmlhYmxlMTAzOwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxMDMgPSB2
YXJpYWJsZTk1ID09IHZhcmlhYmxlNDE7CgogICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzcg
dmFyaWFibGUxMDQ7CgogICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzcgdmFyaWFibGUxMDUg
PSB2YXJpYWJsZTEwMzsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxMDQgPSBzdGF0
aWNfY2FzdDx0eXBlNzc+KHZhcmlhYmxlMTA1KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2YXJpYWJsZTEwNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVh
ZCB0eXBlMTkqIHZhcmlhYmxlMTA2ID0gJnZhcmlhYmxlOTM7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHRocmVhZCB0eXBlNjgqIHZhcmlhYmxlMTA3ID0gJnZhcmlhYmxlNjsKICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyZWFkIHR5cGU3MSogdmFyaWFibGUxMDggPSAmdmFyaWFibGU5NTsKICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZTc5IHZhcmlhYmxlMTA5OwoKICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUxMDkgPSAodmFyaWFibGU5NSA8IHZhcmlhYmxlNi5sZW5ndGgpID8g
ICYodmFyaWFibGU2LnBvaW50ZXJbdmFyaWFibGU5NV0pIDogbnVsbHB0cjsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU3OSB2YXJpYWJsZTExMSA9IHZhcmlhYmxlMTA5OwogICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlNjcgdmFyaWFibGUxMTA7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2YXJpYWJsZTExMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTEw
ID0gKnZhcmlhYmxlMTA5OwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZTExMCA9IHsgfTsKICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZTc5IHZhcmlhYmxlMTEyID0gdmFyaWFibGUxMTE7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGU3OCB2YXJpYWJsZTExMzsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
MTEzID0gJih2YXJpYWJsZTExMi0+c3RydWN0dXJlRWxlbWVudDApOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZTc4IHZhcmlhYmxlMTE1ID0gdmFyaWFibGUxMTM7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUxOSB2YXJpYWJsZTExNDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhcmlhYmxlMTE1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxMTQgPSAq
dmFyaWFibGUxMTM7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlMTE0ID0geyB9OwogICAgICAgICAgICAgICAgICAgICAgICB0
eXBlMTkgdmFyaWFibGUxMTY7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTExNiA9
IHZhcmlhYmxlMTE0Lnh5OwoKICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhYmxlMTA2ID0g
dmFyaWFibGUxMTY7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlh
YmxlMTE3ID0gJnZhcmlhYmxlOTQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBl
NjgqIHZhcmlhYmxlMTE4ID0gJnZhcmlhYmxlNjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhy
ZWFkIHR5cGU3MSogdmFyaWFibGUxMTkgPSAmdmFyaWFibGU5NTsKICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZTc5IHZhcmlhYmxlMTIwOwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUxMjAgPSAodmFyaWFibGU5NSA8IHZhcmlhYmxlNi5sZW5ndGgpID8gICYodmFyaWFibGU2LnBv
aW50ZXJbdmFyaWFibGU5NV0pIDogbnVsbHB0cjsKCiAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGU3OSB2YXJpYWJsZTEyMiA9IHZhcmlhYmxlMTIwOwogICAgICAgICAgICAgICAgICAgICAgICB0
eXBlNjcgdmFyaWFibGUxMjE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZTEy
MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTIxID0gKnZhcmlhYmxlMTIw
OwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZTEyMSA9IHsgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc5IHZhcmlh
YmxlMTIzID0gdmFyaWFibGUxMjI7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU3OCB2YXJp
YWJsZTEyNDsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTI0ID0gJih2YXJpYWJs
ZTEyMy0+c3RydWN0dXJlRWxlbWVudDEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc4
IHZhcmlhYmxlMTI2ID0gdmFyaWFibGUxMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUx
OSB2YXJpYWJsZTEyNTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlMTI2KQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxMjUgPSAqdmFyaWFibGUxMjQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlMTI1ID0geyB9OwogICAgICAgICAgICAgICAgICAgICAgICB0eXBlMTkgdmFyaWFibGUx
Mjc7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTEyNyA9IHZhcmlhYmxlMTI1Lnh5
OwoKICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhYmxlMTE3ID0gdmFyaWFibGUxMjc7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMTI4ID0gJnZhcmlh
YmxlOTM7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMTI5
ID0gJnZhcmlhYmxlNTc7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU2MiB2YXJpYWJsZTEz
MDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxMzAgPSBmdW5jdGlvbjModmFyaWFi
bGU5MywgdmFyaWFibGU1Nyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlNjUq
IHZhcmlhYmxlMTMxID0gJnZhcmlhYmxlNDY7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU4
MCB2YXJpYWJsZTEzMiA9IHZhcmlhYmxlMTMxOwogICAgICAgICAgICAgICAgICAgICAgICB0eXBl
NzQgdmFyaWFibGUxMzM7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTEzMyA9ICYo
dmFyaWFibGUxMzItPnN0cnVjdHVyZUVsZW1lbnQzKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU3NCB2YXJpYWJsZTEzNSA9IHZhcmlhYmxlMTMzOwogICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlNjIgdmFyaWFibGUxMzQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJs
ZTEzNSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTM0ID0gKnZhcmlhYmxl
MTMzOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXJpYWJsZTEzNCA9IHsgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc3IHZh
cmlhYmxlMTM2OwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxMzYgPSB2YXJpYWJs
ZTEzMCA8IHZhcmlhYmxlMTM0OwoKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc3IHZhcmlh
YmxlMTM3OwoKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc3IHZhcmlhYmxlMTM4ID0gdmFy
aWFibGUxMzY7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTM3ID0gc3RhdGljX2Nh
c3Q8dHlwZTc3Pih2YXJpYWJsZTEzOCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFy
aWFibGUxMzcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTEzOSA9ICZ2YXJpYWJsZTE2
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxl
MTQwID0gJnZhcmlhYmxlNzc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTcz
IHZhcmlhYmxlMTQxID0gdmFyaWFibGUxNDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnZhcmlhYmxlMTM5ID0gdmFyaWFibGUxNDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxNDIgPSAmdmFyaWFibGUxNzsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTE0MyA9ICZ2YXJp
YWJsZTE2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU3MyB2YXJpYWJsZTE0
NSA9IHZhcmlhYmxlMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTE5IHZh
cmlhYmxlMTQ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZTE0
NSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxNDQgPSAqdmFy
aWFibGUxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTQ0ID0geyB9OwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICp2YXJpYWJsZTE0MiA9IHZhcmlhYmxlMTQ0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMTQ2ID0gJnZhcmlh
YmxlMTg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFy
aWFibGUxNDcgPSAmdmFyaWFibGUxNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE0OCA9ICZ2YXJpYWJsZTkzOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUxOSB2YXJpYWJsZTE0OTsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUxNDkgPSB2YXJpYWJsZTE3ICsgdmFyaWFibGU5MzsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhYmxlMTQ2ID0gdmFyaWFibGUxNDk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUxNTAg
PSAmdmFyaWFibGUxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzMgdmFy
aWFibGUxNTIgPSB2YXJpYWJsZTE2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGUxOSB2YXJpYWJsZTE1MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFy
aWFibGUxNTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTUx
ID0gKnZhcmlhYmxlMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTE1MSA9IHsgfTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE1MyA9ICZ2
YXJpYWJsZTE4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZTE1
MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhYmxlMTUyID0gdmFy
aWFibGUxODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2
YXJpYWJsZTE1NCA9ICZ2YXJpYWJsZTE4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocmVhZCB0eXBlNzQqIHZhcmlhYmxlMTU1ID0gJnZhcmlhYmxlMTk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU2MiogdmFyaWFibGUxNTYgPSAmdmFyaWFibGU4
OTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzQgdmFyaWFibGUxNTcgPSB2
YXJpYWJsZTE1NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFyaWFibGUxNTUg
PSB2YXJpYWJsZTE1NzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlw
ZTYyKiB2YXJpYWJsZTE1OCA9ICZ2YXJpYWJsZTIwOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZCB0eXBlNzQqIHZhcmlhYmxlMTU5ID0gJnZhcmlhYmxlMTk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc0IHZhcmlhYmxlMTYxID0gdmFyaWFibGUxOTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlNjIgdmFyaWFibGUxNjA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlMTYxKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTE2MCA9ICp2YXJpYWJsZTE5OwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUxNjAgPSB7IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnZhcmlhYmxlMTU4ID0gdmFyaWFibGUxNjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyZWFkIHR5cGU2MiogdmFyaWFibGUxNjIgPSAmdmFyaWFibGUyMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTYyKiB2YXJpYWJsZTE2MyA9ICZ2YXJp
YWJsZTIwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU2MiB2YXJpYWJsZTE2
NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTE2NCA9IGZ1bmN0aW9u
Mih2YXJpYWJsZTIwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFyaWFibGUx
NjIgPSB2YXJpYWJsZTE2NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQg
dHlwZTc0KiB2YXJpYWJsZTE2NSA9ICZ2YXJpYWJsZTE5OwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU3NCB2YXJpYWJsZTE2NyA9IHZhcmlhYmxlMTk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZTYyIHZhcmlhYmxlMTY2OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YXJpYWJsZTE2NykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUxNjYgPSAqdmFyaWFibGUxOTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlMTY2ID0geyB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBl
NjIqIHZhcmlhYmxlMTY4ID0gJnZhcmlhYmxlMjE7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHZhcmlhYmxlMTY3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqdmFyaWFibGUxNjcgPSB2YXJpYWJsZTIxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMTY5ID0gJnZhcmlhYmxlMjA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxNzAgPSAmdmFyaWFibGU5MzsKICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxNzEgPSAmdmFyaWFi
bGU1NzsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTYyIHZhcmlhYmxlMTcyOwogICAgICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZTE3MiA9IGZ1bmN0aW9uMyh2YXJpYWJsZTkzLCB2YXJp
YWJsZTU3KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU2NSogdmFyaWFibGUx
NzMgPSAmdmFyaWFibGU0NjsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTgwIHZhcmlhYmxl
MTc0ID0gdmFyaWFibGUxNzM7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU3NCB2YXJpYWJs
ZTE3NTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTc1ID0gJih2YXJpYWJsZTE3
NC0+c3RydWN0dXJlRWxlbWVudDQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc0IHZh
cmlhYmxlMTc3ID0gdmFyaWFibGUxNzU7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU2MiB2
YXJpYWJsZTE3NjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlMTc3KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxNzYgPSAqdmFyaWFibGUxNzU7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlMTc2ID0geyB9OwogICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzcgdmFyaWFibGUxNzg7
CgogICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTE3OCA9IHZhcmlhYmxlMTcyIDwgdmFy
aWFibGUxNzY7CgogICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzcgdmFyaWFibGUxNzk7Cgog
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzcgdmFyaWFibGUxODAgPSB2YXJpYWJsZTE3ODsK
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxNzkgPSBzdGF0aWNfY2FzdDx0eXBlNzc+
KHZhcmlhYmxlMTgwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZTE3OSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMTgxID0gJnZhcmlhYmxlMjI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxODIgPSAmdmFy
aWFibGU4NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzMgdmFyaWFibGUx
ODMgPSB2YXJpYWJsZTE4MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFyaWFi
bGUxODEgPSB2YXJpYWJsZTE4MzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJl
YWQgdHlwZTE5KiB2YXJpYWJsZTE4NCA9ICZ2YXJpYWJsZTIzOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMTg1ID0gJnZhcmlhYmxlMjI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTczIHZhcmlhYmxlMTg3ID0gdmFyaWFi
bGUyMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlMTkgdmFyaWFibGUxODY7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlMTg3KQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTE4NiA9ICp2YXJpYWJsZTIyOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyaWFibGUxODYgPSB7IH07CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnZhcmlhYmxlMTg0ID0gdmFyaWFibGUxODY7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxODggPSAmdmFyaWFibGUyNDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE4OSA9
ICZ2YXJpYWJsZTIzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBl
MTkqIHZhcmlhYmxlMTkwID0gJnZhcmlhYmxlOTM7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxOTEgPSAmdmFyaWFibGU1NzsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlMTkgdmFyaWFibGUxOTI7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMTkyID0gdmFyaWFibGU5MyAtIHZhcmlhYmxlNTc7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUxOSB2YXJpYWJsZTE5MzsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUxOTMgPSB2YXJpYWJsZTIzIC0g
dmFyaWFibGUxOTI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YXJpYWJsZTE4
OCA9IHZhcmlhYmxlMTkzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0
eXBlNzMqIHZhcmlhYmxlMTk0ID0gJnZhcmlhYmxlMjI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZTczIHZhcmlhYmxlMTk2ID0gdmFyaWFibGUyMjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlMTkgdmFyaWFibGUxOTU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhcmlhYmxlMTk2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZTE5NSA9ICp2YXJpYWJsZTIyOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUxOTUgPSB7IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUx
OSogdmFyaWFibGUxOTcgPSAmdmFyaWFibGUyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmFyaWFibGUxOTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICp2YXJpYWJsZTE5NiA9IHZhcmlhYmxlMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUxOTggPSAmdmFyaWFibGUyNDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTE5OSA9ICZ2YXJpYWJsZTkzOwogICAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTIwMCA9ICZ2YXJpYWJs
ZTU3OwogICAgICAgICAgICAgICAgICAgICAgICB0eXBlNjIgdmFyaWFibGUyMDE7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHZhcmlhYmxlMjAxID0gZnVuY3Rpb24zKHZhcmlhYmxlOTMsIHZhcmlh
YmxlNTcpOwogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTY1KiB2YXJpYWJsZTIw
MiA9ICZ2YXJpYWJsZTQ2OwogICAgICAgICAgICAgICAgICAgICAgICB0eXBlODAgdmFyaWFibGUy
MDMgPSB2YXJpYWJsZTIwMjsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc0IHZhcmlhYmxl
MjA0OwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUyMDQgPSAmKHZhcmlhYmxlMjAz
LT5zdHJ1Y3R1cmVFbGVtZW50NSk7CgogICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzQgdmFy
aWFibGUyMDYgPSB2YXJpYWJsZTIwNDsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTYyIHZh
cmlhYmxlMjA1OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUyMDYpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTIwNSA9ICp2YXJpYWJsZTIwNDsKICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUyMDUgPSB7IH07CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU3NyB2YXJpYWJsZTIwNzsK
CiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMjA3ID0gdmFyaWFibGUyMDEgPCB2YXJp
YWJsZTIwNTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU3NyB2YXJpYWJsZTIwODsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU3NyB2YXJpYWJsZTIwOSA9IHZhcmlhYmxlMjA3Owog
ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTIwOCA9IHN0YXRpY19jYXN0PHR5cGU3Nz4o
dmFyaWFibGUyMDkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlMjA4KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUyMTAgPSAmdmFyaWFibGUyNTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTIxMSA9ICZ2YXJp
YWJsZTgxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU3MyB2YXJpYWJsZTIx
MiA9IHZhcmlhYmxlMjExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YXJpYWJs
ZTIxMCA9IHZhcmlhYmxlMjEyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVh
ZCB0eXBlMTkqIHZhcmlhYmxlMjEzID0gJnZhcmlhYmxlMjY7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUyMTQgPSAmdmFyaWFibGUyNTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlNzMgdmFyaWFibGUyMTYgPSB2YXJpYWJs
ZTI1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUxOSB2YXJpYWJsZTIxNTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUyMTYpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMjE1ID0gKnZhcmlhYmxlMjU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZTIxNSA9IHsgfTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqdmFyaWFibGUyMTMgPSB2YXJpYWJsZTIxNTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTIxNyA9ICZ2YXJpYWJsZTI3OwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMjE4ID0g
JnZhcmlhYmxlMjY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUx
OSogdmFyaWFibGUyMTkgPSAmdmFyaWFibGU5NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlMTkgdmFyaWFibGUyMjA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlMjIwID0gdmFyaWFibGUyNiArIHZhcmlhYmxlOTQ7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICp2YXJpYWJsZTIxNyA9IHZhcmlhYmxlMjIwOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMjIxID0gJnZhcmlhYmxl
MjU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTczIHZhcmlhYmxlMjIzID0g
dmFyaWFibGUyNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlMTkgdmFyaWFi
bGUyMjI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlMjIzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTIyMiA9ICp2YXJpYWJs
ZTI1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUyMjIgPSB7IH07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUyMjQgPSAmdmFyaWFibGUyNzsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUyMjMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YXJpYWJsZTIyMyA9IHZhcmlhYmxlMjc7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUyMjUg
PSAmdmFyaWFibGUyNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlw
ZTc0KiB2YXJpYWJsZTIyNiA9ICZ2YXJpYWJsZTI4OwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMjI3ID0gJnZhcmlhYmxlOTE7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTc0IHZhcmlhYmxlMjI4ID0gdmFyaWFibGUyMjc7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhYmxlMjI2ID0gdmFyaWFibGUy
Mjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU2MiogdmFyaWFi
bGUyMjkgPSAmdmFyaWFibGUyOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJl
YWQgdHlwZTc0KiB2YXJpYWJsZTIzMCA9ICZ2YXJpYWJsZTI4OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU3NCB2YXJpYWJsZTIzMiA9IHZhcmlhYmxlMjg7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZTYyIHZhcmlhYmxlMjMxOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZTIzMikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUyMzEgPSAqdmFyaWFibGUyODsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlMjMxID0geyB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YXJpYWJs
ZTIyOSA9IHZhcmlhYmxlMjMxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVh
ZCB0eXBlNjIqIHZhcmlhYmxlMjMzID0gJnZhcmlhYmxlMzA7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyZWFkIHR5cGU2MiogdmFyaWFibGUyMzQgPSAmdmFyaWFibGUyOTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlNjIgdmFyaWFibGUyMzU7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUyMzUgPSBmdW5jdGlvbjIodmFyaWFibGUy
OSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhYmxlMjMzID0gdmFyaWFi
bGUyMzU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU3NCogdmFy
aWFibGUyMzYgPSAmdmFyaWFibGUyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlNzQgdmFyaWFibGUyMzggPSB2YXJpYWJsZTI4OwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU2MiB2YXJpYWJsZTIzNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmFyaWFibGUyMzgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlMjM3ID0gKnZhcmlhYmxlMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTIzNyA9IHsg
fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTYyKiB2YXJpYWJs
ZTIzOSA9ICZ2YXJpYWJsZTMwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
YXJpYWJsZTIzOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhYmxl
MjM4ID0gdmFyaWFibGUzMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQg
dHlwZTYyKiB2YXJpYWJsZTI0MCA9ICZ2YXJpYWJsZTI5OwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgfSB3aGlsZShmYWxzZSk7IAogICAgICAgICAgICAgICAgaWYgKHZhcmlh
YmxlOTcpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB0aHJlYWQg
dHlwZTcyKiB2YXJpYWJsZTI0MSA9ICZ2YXJpYWJsZTEzOwogICAgICAgICAgICAgICAgdGhyZWFk
IHR5cGU3MSogdmFyaWFibGUyNDIgPSAmdmFyaWFibGU5NTsKICAgICAgICAgICAgICAgIHR5cGU3
MiB2YXJpYWJsZTI0MyA9IHZhcmlhYmxlMjQyOwogICAgICAgICAgICAgICAgKnZhcmlhYmxlMjQx
ID0gdmFyaWFibGUyNDM7CiAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTcxKiB2YXJpYWJsZTI0
NCA9ICZ2YXJpYWJsZTE0OwogICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU3MiogdmFyaWFibGUy
NDUgPSAmdmFyaWFibGUxMzsKICAgICAgICAgICAgICAgIHR5cGU3MiB2YXJpYWJsZTI0NyA9IHZh
cmlhYmxlMTM7CiAgICAgICAgICAgICAgICB0eXBlNzEgdmFyaWFibGUyNDY7CiAgICAgICAgICAg
ICAgICBpZiAodmFyaWFibGUyNDcpCiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUyNDYgPSAq
dmFyaWFibGUxMzsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZTI0NiA9IHsgfTsKICAgICAgICAgICAgICAgICp2YXJpYWJsZTI0NCA9IHZhcmlhYmxlMjQ2
OwogICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU3MSogdmFyaWFibGUyNDggPSAmdmFyaWFibGUx
NTsKICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlNzEqIHZhcmlhYmxlMjQ5ID0gJnZhcmlhYmxl
MTQ7CiAgICAgICAgICAgICAgICB0eXBlNzEgdmFyaWFibGUyNTA7CiAgICAgICAgICAgICAgICB2
YXJpYWJsZTI1MCA9IGZ1bmN0aW9uMSh2YXJpYWJsZTE0KTsKICAgICAgICAgICAgICAgICp2YXJp
YWJsZTI0OCA9IHZhcmlhYmxlMjUwOwogICAgICAgICAgICAgICAgdGhyZWFkIHR5cGU3MiogdmFy
aWFibGUyNTEgPSAmdmFyaWFibGUxMzsKICAgICAgICAgICAgICAgIHR5cGU3MiB2YXJpYWJsZTI1
MyA9IHZhcmlhYmxlMTM7CiAgICAgICAgICAgICAgICB0eXBlNzEgdmFyaWFibGUyNTI7CiAgICAg
ICAgICAgICAgICBpZiAodmFyaWFibGUyNTMpCiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUy
NTIgPSAqdmFyaWFibGUxMzsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZTI1MiA9IHsgfTsKICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlNzEqIHZhcmlh
YmxlMjU0ID0gJnZhcmlhYmxlMTU7CiAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUyNTMpCiAg
ICAgICAgICAgICAgICAgICAgKnZhcmlhYmxlMjUzID0gdmFyaWFibGUxNTsKICAgICAgICAgICAg
ICAgIHRocmVhZCB0eXBlNzEqIHZhcmlhYmxlMjU1ID0gJnZhcmlhYmxlMTU7CiAgICAgICAgICAg
IH0gCiAgICAgICAgfQogICAgICAgIHRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMjU2ID0gJnZhcmlh
YmxlODk7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxlMjU3ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigw
KTsKICAgICAgICB0eXBlNzcgdmFyaWFibGUyNTg7CgogICAgICAgIHZhcmlhYmxlMjU4ID0gdmFy
aWFibGU4OSA+IHZhcmlhYmxlMjU3OwoKICAgICAgICB0eXBlNzcgdmFyaWFibGUyNTk7CgogICAg
ICAgIHR5cGU3NyB2YXJpYWJsZTI2MCA9IHZhcmlhYmxlMjU4OwogICAgICAgIHZhcmlhYmxlMjU5
ID0gc3RhdGljX2Nhc3Q8dHlwZTc3Pih2YXJpYWJsZTI2MCk7CgogICAgICAgIGlmICh2YXJpYWJs
ZTI1OSkgewogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJp
YWJsZTI2MSA9ICZ2YXJpYWJsZTc3OwogICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFy
aWFibGUyNjIgPSAmdmFyaWFibGU3NzsKICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlNjIqIHZh
cmlhYmxlMjYzID0gJnZhcmlhYmxlODk7CiAgICAgICAgICAgICAgICB0eXBlMTkgdmFyaWFibGUy
NjQ7CgogICAgICAgICAgICAgICAgdmFyaWFibGUyNjQgPSB2YXJpYWJsZTc3IC8gdmFyaWFibGU4
OTsKCiAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTI2NSA9ICZ2YXJpYWJs
ZTU3OwogICAgICAgICAgICAgICAgdHlwZTE5IHZhcmlhYmxlMjY2OwoKICAgICAgICAgICAgICAg
IHZhcmlhYmxlMjY2ID0gdmFyaWFibGUyNjQgLSB2YXJpYWJsZTU3OwoKICAgICAgICAgICAgICAg
ICp2YXJpYWJsZTI2MSA9IHZhcmlhYmxlMjY2OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
ICAgIHRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMjY3ID0gJnZhcmlhYmxlOTE7CiAgICAgICAgdHlw
ZTYyIHZhcmlhYmxlMjY4ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigwKTsKICAgICAgICB0eXBlNzcg
dmFyaWFibGUyNjk7CgogICAgICAgIHZhcmlhYmxlMjY5ID0gdmFyaWFibGU5MSA+IHZhcmlhYmxl
MjY4OwoKICAgICAgICB0eXBlNzcgdmFyaWFibGUyNzA7CgogICAgICAgIHR5cGU3NyB2YXJpYWJs
ZTI3MSA9IHZhcmlhYmxlMjY5OwogICAgICAgIHZhcmlhYmxlMjcwID0gc3RhdGljX2Nhc3Q8dHlw
ZTc3Pih2YXJpYWJsZTI3MSk7CgogICAgICAgIGlmICh2YXJpYWJsZTI3MCkgewogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTI3MiA9ICZ2YXJpYWJs
ZTgxOwogICAgICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUyNzMgPSAmdmFyaWFi
bGU4MTsKICAgICAgICAgICAgICAgIHRocmVhZCB0eXBlNjIqIHZhcmlhYmxlMjc0ID0gJnZhcmlh
YmxlOTE7CiAgICAgICAgICAgICAgICB0eXBlMTkgdmFyaWFibGUyNzU7CgogICAgICAgICAgICAg
ICAgdmFyaWFibGUyNzUgPSB2YXJpYWJsZTgxIC8gdmFyaWFibGU5MTsKCiAgICAgICAgICAgICAg
ICAqdmFyaWFibGUyNzIgPSB2YXJpYWJsZTI3NTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
ICAgICB0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTI3NiA9ICZ2YXJpYWJsZTMxOwogICAgICAgIHRo
cmVhZCB0eXBlMTkqIHZhcmlhYmxlMjc3ID0gJnZhcmlhYmxlNjc7CiAgICAgICAgdHlwZTczIHZh
cmlhYmxlMjc4ID0gdmFyaWFibGUyNzc7CiAgICAgICAgKnZhcmlhYmxlMjc2ID0gdmFyaWFibGUy
Nzg7CiAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUyNzkgPSAmdmFyaWFibGUzMjsKICAg
ICAgICB0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTI4MCA9ICZ2YXJpYWJsZTMxOwogICAgICAgIHR5
cGU3MyB2YXJpYWJsZTI4MiA9IHZhcmlhYmxlMzE7CiAgICAgICAgdHlwZTE5IHZhcmlhYmxlMjgx
OwogICAgICAgIGlmICh2YXJpYWJsZTI4MikKICAgICAgICAgICAgdmFyaWFibGUyODEgPSAqdmFy
aWFibGUzMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHZhcmlhYmxlMjgxID0geyB9OwogICAg
ICAgICp2YXJpYWJsZTI3OSA9IHZhcmlhYmxlMjgxOwogICAgICAgIHRocmVhZCB0eXBlMTkqIHZh
cmlhYmxlMjgzID0gJnZhcmlhYmxlMzM7CiAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUy
ODQgPSAmdmFyaWFibGUzMjsKICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTI4NSA9ICZ2
YXJpYWJsZTc3OwogICAgICAgIHRocmVhZCB0eXBlNjUqIHZhcmlhYmxlMjg2ID0gJnZhcmlhYmxl
NDY7CiAgICAgICAgdHlwZTgwIHZhcmlhYmxlMjg3ID0gdmFyaWFibGUyODY7CiAgICAgICAgdHlw
ZTc0IHZhcmlhYmxlMjg4OwoKICAgICAgICB2YXJpYWJsZTI4OCA9ICYodmFyaWFibGUyODctPnN0
cnVjdHVyZUVsZW1lbnQ2KTsKCiAgICAgICAgdHlwZTc0IHZhcmlhYmxlMjkwID0gdmFyaWFibGUy
ODg7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxlMjg5OwogICAgICAgIGlmICh2YXJpYWJsZTI5MCkK
ICAgICAgICAgICAgdmFyaWFibGUyODkgPSAqdmFyaWFibGUyODg7CiAgICAgICAgZWxzZQogICAg
ICAgICAgICB2YXJpYWJsZTI4OSA9IHsgfTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUyOTE7Cgog
ICAgICAgIHZhcmlhYmxlMjkxID0gdmFyaWFibGU3NyAqIHZhcmlhYmxlMjg5OwoKICAgICAgICB0
aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTI5MiA9ICZ2YXJpYWJsZTg1OwogICAgICAgIHRocmVhZCB0
eXBlNjUqIHZhcmlhYmxlMjkzID0gJnZhcmlhYmxlNDY7CiAgICAgICAgdHlwZTgwIHZhcmlhYmxl
Mjk0ID0gdmFyaWFibGUyOTM7CiAgICAgICAgdHlwZTc0IHZhcmlhYmxlMjk1OwoKICAgICAgICB2
YXJpYWJsZTI5NSA9ICYodmFyaWFibGUyOTQtPnN0cnVjdHVyZUVsZW1lbnQ3KTsKCiAgICAgICAg
dHlwZTc0IHZhcmlhYmxlMjk3ID0gdmFyaWFibGUyOTU7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxl
Mjk2OwogICAgICAgIGlmICh2YXJpYWJsZTI5NykKICAgICAgICAgICAgdmFyaWFibGUyOTYgPSAq
dmFyaWFibGUyOTU7CiAgICAgICAgZWxzZQogICAgICAgICAgICB2YXJpYWJsZTI5NiA9IHsgfTsK
ICAgICAgICB0eXBlMTkgdmFyaWFibGUyOTg7CgogICAgICAgIHZhcmlhYmxlMjk4ID0gdmFyaWFi
bGU4NSAqIHZhcmlhYmxlMjk2OwoKICAgICAgICB0eXBlMTkgdmFyaWFibGUyOTk7CgogICAgICAg
IHZhcmlhYmxlMjk5ID0gdmFyaWFibGUyOTEgKyB2YXJpYWJsZTI5ODsKCiAgICAgICAgdGhyZWFk
IHR5cGUxOSogdmFyaWFibGUzMDAgPSAmdmFyaWFibGU4MTsKICAgICAgICB0aHJlYWQgdHlwZTY1
KiB2YXJpYWJsZTMwMSA9ICZ2YXJpYWJsZTQ2OwogICAgICAgIHR5cGU4MCB2YXJpYWJsZTMwMiA9
IHZhcmlhYmxlMzAxOwogICAgICAgIHR5cGU3NCB2YXJpYWJsZTMwMzsKCiAgICAgICAgdmFyaWFi
bGUzMDMgPSAmKHZhcmlhYmxlMzAyLT5zdHJ1Y3R1cmVFbGVtZW50OCk7CgogICAgICAgIHR5cGU3
NCB2YXJpYWJsZTMwNSA9IHZhcmlhYmxlMzAzOwogICAgICAgIHR5cGU2MiB2YXJpYWJsZTMwNDsK
ICAgICAgICBpZiAodmFyaWFibGUzMDUpCiAgICAgICAgICAgIHZhcmlhYmxlMzA0ID0gKnZhcmlh
YmxlMzAzOwogICAgICAgIGVsc2UKICAgICAgICAgICAgdmFyaWFibGUzMDQgPSB7IH07CiAgICAg
ICAgdHlwZTE5IHZhcmlhYmxlMzA2OwoKICAgICAgICB2YXJpYWJsZTMwNiA9IHZhcmlhYmxlODEg
KiB2YXJpYWJsZTMwNDsKCiAgICAgICAgdHlwZTE5IHZhcmlhYmxlMzA3OwoKICAgICAgICB2YXJp
YWJsZTMwNyA9IHZhcmlhYmxlMjk5ICsgdmFyaWFibGUzMDY7CgogICAgICAgIHR5cGUxOSB2YXJp
YWJsZTMwODsKCiAgICAgICAgdmFyaWFibGUzMDggPSB2YXJpYWJsZTMyICsgdmFyaWFibGUzMDc7
CgogICAgICAgICp2YXJpYWJsZTI4MyA9IHZhcmlhYmxlMzA4OwogICAgICAgIHRocmVhZCB0eXBl
NzMqIHZhcmlhYmxlMzA5ID0gJnZhcmlhYmxlMzE7CiAgICAgICAgdHlwZTczIHZhcmlhYmxlMzEx
ID0gdmFyaWFibGUzMTsKICAgICAgICB0eXBlMTkgdmFyaWFibGUzMTA7CiAgICAgICAgaWYgKHZh
cmlhYmxlMzExKQogICAgICAgICAgICB2YXJpYWJsZTMxMCA9ICp2YXJpYWJsZTMxOwogICAgICAg
IGVsc2UKICAgICAgICAgICAgdmFyaWFibGUzMTAgPSB7IH07CiAgICAgICAgdGhyZWFkIHR5cGUx
OSogdmFyaWFibGUzMTIgPSAmdmFyaWFibGUzMzsKICAgICAgICBpZiAodmFyaWFibGUzMTEpCiAg
ICAgICAgICAgICp2YXJpYWJsZTMxMSA9IHZhcmlhYmxlMzM7CiAgICAgICAgdGhyZWFkIHR5cGUx
OSogdmFyaWFibGUzMTMgPSAmdmFyaWFibGUzMzsKICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJp
YWJsZTMxNCA9ICZ2YXJpYWJsZTY3OwogICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzE1
ID0gJnZhcmlhYmxlNjc7CiAgICAgICAgdHlwZTE5IHZhcmlhYmxlMzE2OwogICAgICAgIHZhcmlh
YmxlMzE2ID0gZnVuY3Rpb240KHZhcmlhYmxlNjcpOwogICAgICAgIHRocmVhZCB0eXBlMTkqIHZh
cmlhYmxlMzE3ID0gJnZhcmlhYmxlNjc7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxlMzE4OwoKICAg
ICAgICB2YXJpYWJsZTMxOCA9IGxlbmd0aCh2YXJpYWJsZTY3KTsKCiAgICAgICAgdHlwZTYyIHZh
cmlhYmxlMzE5ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigwKTsKICAgICAgICB0eXBlNjIgdmFyaWFi
bGUzMjAgPSBzdGF0aWNfY2FzdDx0eXBlNjI+KDAuMSk7CiAgICAgICAgdHlwZTYyIHZhcmlhYmxl
MzIxOwoKICAgICAgICB2YXJpYWJsZTMyMSA9IGNsYW1wKHZhcmlhYmxlMzE4LCB2YXJpYWJsZTMx
OSwgdmFyaWFibGUzMjApOwoKICAgICAgICB0eXBlMTkgdmFyaWFibGUzMjI7CgogICAgICAgIHZh
cmlhYmxlMzIyID0gdmFyaWFibGUzMTYgKiB2YXJpYWJsZTMyMTsKCiAgICAgICAgKnZhcmlhYmxl
MzE0ID0gdmFyaWFibGUzMjI7CiAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzMjMgPSAm
dmFyaWFibGUzNDsKICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTMyNCA9ICZ2YXJpYWJs
ZTU3OwogICAgICAgIHR5cGU3MyB2YXJpYWJsZTMyNSA9IHZhcmlhYmxlMzI0OwogICAgICAgICp2
YXJpYWJsZTMyMyA9IHZhcmlhYmxlMzI1OwogICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxl
MzI2ID0gJnZhcmlhYmxlMzU7CiAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzMjcgPSAm
dmFyaWFibGUzNDsKICAgICAgICB0eXBlNzMgdmFyaWFibGUzMjkgPSB2YXJpYWJsZTM0OwogICAg
ICAgIHR5cGUxOSB2YXJpYWJsZTMyODsKICAgICAgICBpZiAodmFyaWFibGUzMjkpCiAgICAgICAg
ICAgIHZhcmlhYmxlMzI4ID0gKnZhcmlhYmxlMzQ7CiAgICAgICAgZWxzZQogICAgICAgICAgICB2
YXJpYWJsZTMyOCA9IHsgfTsKICAgICAgICAqdmFyaWFibGUzMjYgPSB2YXJpYWJsZTMyODsKICAg
ICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTMzMCA9ICZ2YXJpYWJsZTM2OwogICAgICAgIHRo
cmVhZCB0eXBlMTkqIHZhcmlhYmxlMzMxID0gJnZhcmlhYmxlMzU7CiAgICAgICAgdGhyZWFkIHR5
cGUxOSogdmFyaWFibGUzMzIgPSAmdmFyaWFibGU2NzsKICAgICAgICB0aHJlYWQgdHlwZTY1KiB2
YXJpYWJsZTMzMyA9ICZ2YXJpYWJsZTQ2OwogICAgICAgIHR5cGU4MCB2YXJpYWJsZTMzNCA9IHZh
cmlhYmxlMzMzOwogICAgICAgIHR5cGU3NCB2YXJpYWJsZTMzNTsKCiAgICAgICAgdmFyaWFibGUz
MzUgPSAmKHZhcmlhYmxlMzM0LT5zdHJ1Y3R1cmVFbGVtZW50Mik7CgogICAgICAgIHR5cGU3NCB2
YXJpYWJsZTMzNyA9IHZhcmlhYmxlMzM1OwogICAgICAgIHR5cGU2MiB2YXJpYWJsZTMzNjsKICAg
ICAgICBpZiAodmFyaWFibGUzMzcpCiAgICAgICAgICAgIHZhcmlhYmxlMzM2ID0gKnZhcmlhYmxl
MzM1OwogICAgICAgIGVsc2UKICAgICAgICAgICAgdmFyaWFibGUzMzYgPSB7IH07CiAgICAgICAg
dHlwZTE5IHZhcmlhYmxlMzM4OwoKICAgICAgICB2YXJpYWJsZTMzOCA9IHZhcmlhYmxlNjcgKiB2
YXJpYWJsZTMzNjsKCiAgICAgICAgdHlwZTE5IHZhcmlhYmxlMzM5OwoKICAgICAgICB2YXJpYWJs
ZTMzOSA9IHZhcmlhYmxlMzUgKyB2YXJpYWJsZTMzODsKCiAgICAgICAgKnZhcmlhYmxlMzMwID0g
dmFyaWFibGUzMzk7CiAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzNDAgPSAmdmFyaWFi
bGUzNDsKICAgICAgICB0eXBlNzMgdmFyaWFibGUzNDIgPSB2YXJpYWJsZTM0OwogICAgICAgIHR5
cGUxOSB2YXJpYWJsZTM0MTsKICAgICAgICBpZiAodmFyaWFibGUzNDIpCiAgICAgICAgICAgIHZh
cmlhYmxlMzQxID0gKnZhcmlhYmxlMzQ7CiAgICAgICAgZWxzZQogICAgICAgICAgICB2YXJpYWJs
ZTM0MSA9IHsgfTsKICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTM0MyA9ICZ2YXJpYWJs
ZTM2OwogICAgICAgIGlmICh2YXJpYWJsZTM0MikKICAgICAgICAgICAgKnZhcmlhYmxlMzQyID0g
dmFyaWFibGUzNjsKICAgICAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTM0NCA9ICZ2YXJpYWJs
ZTM2OwogICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzQ1ID0gJnZhcmlhYmxlNTc7CiAg
ICAgICAgdHlwZTYyIHZhcmlhYmxlMzQ2OwoKICAgICAgICB2YXJpYWJsZTM0NiA9IHZhcmlhYmxl
NTcueDsKCiAgICAgICAgdHlwZTYyIHZhcmlhYmxlMzQ3ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigt
MSk7CiAgICAgICAgdHlwZTc3IHZhcmlhYmxlMzQ4OwoKICAgICAgICB2YXJpYWJsZTM0OCA9IHZh
cmlhYmxlMzQ2IDwgdmFyaWFibGUzNDc7CgogICAgICAgIHR5cGU3NyB2YXJpYWJsZTM0OTsKCiAg
ICAgICAgdHlwZTc3IHZhcmlhYmxlMzUwID0gdmFyaWFibGUzNDg7CiAgICAgICAgdmFyaWFibGUz
NDkgPSBzdGF0aWNfY2FzdDx0eXBlNzc+KHZhcmlhYmxlMzUwKTsKCiAgICAgICAgaWYgKHZhcmlh
YmxlMzQ5KSB7CiAgICAgICAgICAgIHRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMzUxID0gJnZhcmlh
YmxlMzc7CiAgICAgICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzUyID0gJnZhcmlhYmxl
NTc7CiAgICAgICAgICAgIHR5cGU3MyB2YXJpYWJsZTM1MyA9IHZhcmlhYmxlMzUyOwogICAgICAg
ICAgICAqdmFyaWFibGUzNTEgPSB2YXJpYWJsZTM1MzsKICAgICAgICAgICAgdGhyZWFkIHR5cGU3
MyogdmFyaWFibGUzNTQgPSAmdmFyaWFibGUzNzsKICAgICAgICAgICAgdHlwZTczIHZhcmlhYmxl
MzU2ID0gdmFyaWFibGUzNzsKICAgICAgICAgICAgdHlwZTE5IHZhcmlhYmxlMzU1OwogICAgICAg
ICAgICBpZiAodmFyaWFibGUzNTYpCiAgICAgICAgICAgICAgICB2YXJpYWJsZTM1NSA9ICp2YXJp
YWJsZTM3OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB2YXJpYWJsZTM1NSA9IHsg
fTsKICAgICAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzNTcgPSAmdmFyaWFibGUzNzsK
ICAgICAgICAgICAgdHlwZTczIHZhcmlhYmxlMzU5ID0gdmFyaWFibGUzNzsKICAgICAgICAgICAg
dHlwZTE5IHZhcmlhYmxlMzU4OwogICAgICAgICAgICBpZiAodmFyaWFibGUzNTkpCiAgICAgICAg
ICAgICAgICB2YXJpYWJsZTM1OCA9ICp2YXJpYWJsZTM3OwogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICB2YXJpYWJsZTM1OCA9IHsgfTsKICAgICAgICAgICAgdHlwZTYyIHZhcmlhYmxl
MzYwID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigxKTsKICAgICAgICAgICAgdHlwZTE5IHZhcmlhYmxl
MzYxOwoKICAgICAgICAgICAgdmFyaWFibGUzNjEgPSB2YXJpYWJsZTM1ODsKICAgICAgICAgICAg
dmFyaWFibGUzNjEueCA9IHZhcmlhYmxlMzYwOwoKICAgICAgICAgICAgaWYgKHZhcmlhYmxlMzU2
KQogICAgICAgICAgICAgICAgKnZhcmlhYmxlMzU2ID0gdmFyaWFibGUzNjE7CiAgICAgICAgfQog
ICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzYyID0gJnZhcmlhYmxlNTc7CiAgICAgICAg
dHlwZTYyIHZhcmlhYmxlMzYzOwoKICAgICAgICB2YXJpYWJsZTM2MyA9IHZhcmlhYmxlNTcueDsK
CiAgICAgICAgdHlwZTYyIHZhcmlhYmxlMzY0ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigxKTsKICAg
ICAgICB0eXBlNzcgdmFyaWFibGUzNjU7CgogICAgICAgIHZhcmlhYmxlMzY1ID0gdmFyaWFibGUz
NjMgPiB2YXJpYWJsZTM2NDsKCiAgICAgICAgdHlwZTc3IHZhcmlhYmxlMzY2OwoKICAgICAgICB0
eXBlNzcgdmFyaWFibGUzNjcgPSB2YXJpYWJsZTM2NTsKICAgICAgICB2YXJpYWJsZTM2NiA9IHN0
YXRpY19jYXN0PHR5cGU3Nz4odmFyaWFibGUzNjcpOwoKICAgICAgICBpZiAodmFyaWFibGUzNjYp
IHsKICAgICAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzNjggPSAmdmFyaWFibGUzODsK
ICAgICAgICAgICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGUzNjkgPSAmdmFyaWFibGU1NzsKICAg
ICAgICAgICAgdHlwZTczIHZhcmlhYmxlMzcwID0gdmFyaWFibGUzNjk7CiAgICAgICAgICAgICp2
YXJpYWJsZTM2OCA9IHZhcmlhYmxlMzcwOwogICAgICAgICAgICB0aHJlYWQgdHlwZTczKiB2YXJp
YWJsZTM3MSA9ICZ2YXJpYWJsZTM4OwogICAgICAgICAgICB0eXBlNzMgdmFyaWFibGUzNzMgPSB2
YXJpYWJsZTM4OwogICAgICAgICAgICB0eXBlMTkgdmFyaWFibGUzNzI7CiAgICAgICAgICAgIGlm
ICh2YXJpYWJsZTM3MykKICAgICAgICAgICAgICAgIHZhcmlhYmxlMzcyID0gKnZhcmlhYmxlMzg7
CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHZhcmlhYmxlMzcyID0geyB9OwogICAg
ICAgICAgICB0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTM3NCA9ICZ2YXJpYWJsZTM4OwogICAgICAg
ICAgICB0eXBlNzMgdmFyaWFibGUzNzYgPSB2YXJpYWJsZTM4OwogICAgICAgICAgICB0eXBlMTkg
dmFyaWFibGUzNzU7CiAgICAgICAgICAgIGlmICh2YXJpYWJsZTM3NikKICAgICAgICAgICAgICAg
IHZhcmlhYmxlMzc1ID0gKnZhcmlhYmxlMzg7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgIHZhcmlhYmxlMzc1ID0geyB9OwogICAgICAgICAgICB0eXBlNjIgdmFyaWFibGUzNzcgPSBz
dGF0aWNfY2FzdDx0eXBlNjI+KC0xKTsKICAgICAgICAgICAgdHlwZTE5IHZhcmlhYmxlMzc4OwoK
ICAgICAgICAgICAgdmFyaWFibGUzNzggPSB2YXJpYWJsZTM3NTsKICAgICAgICAgICAgdmFyaWFi
bGUzNzgueCA9IHZhcmlhYmxlMzc3OwoKICAgICAgICAgICAgaWYgKHZhcmlhYmxlMzczKQogICAg
ICAgICAgICAgICAgKnZhcmlhYmxlMzczID0gdmFyaWFibGUzNzg7CiAgICAgICAgfQogICAgICAg
IHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzc5ID0gJnZhcmlhYmxlNTc7CiAgICAgICAgdHlwZTYy
IHZhcmlhYmxlMzgwOwoKICAgICAgICB2YXJpYWJsZTM4MCA9IHZhcmlhYmxlNTcueTsKCiAgICAg
ICAgdHlwZTYyIHZhcmlhYmxlMzgxID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigtMSk7CiAgICAgICAg
dHlwZTc3IHZhcmlhYmxlMzgyOwoKICAgICAgICB2YXJpYWJsZTM4MiA9IHZhcmlhYmxlMzgwIDwg
dmFyaWFibGUzODE7CgogICAgICAgIHR5cGU3NyB2YXJpYWJsZTM4MzsKCiAgICAgICAgdHlwZTc3
IHZhcmlhYmxlMzg0ID0gdmFyaWFibGUzODI7CiAgICAgICAgdmFyaWFibGUzODMgPSBzdGF0aWNf
Y2FzdDx0eXBlNzc+KHZhcmlhYmxlMzg0KTsKCiAgICAgICAgaWYgKHZhcmlhYmxlMzgzKSB7CiAg
ICAgICAgICAgIHRocmVhZCB0eXBlNzMqIHZhcmlhYmxlMzg1ID0gJnZhcmlhYmxlMzk7CiAgICAg
ICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlMzg2ID0gJnZhcmlhYmxlNTc7CiAgICAgICAg
ICAgIHR5cGU3MyB2YXJpYWJsZTM4NyA9IHZhcmlhYmxlMzg2OwogICAgICAgICAgICAqdmFyaWFi
bGUzODUgPSB2YXJpYWJsZTM4NzsKICAgICAgICAgICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUz
ODggPSAmdmFyaWFibGUzOTsKICAgICAgICAgICAgdHlwZTczIHZhcmlhYmxlMzkwID0gdmFyaWFi
bGUzOTsKICAgICAgICAgICAgdHlwZTE5IHZhcmlhYmxlMzg5OwogICAgICAgICAgICBpZiAodmFy
aWFibGUzOTApCiAgICAgICAgICAgICAgICB2YXJpYWJsZTM4OSA9ICp2YXJpYWJsZTM5OwogICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB2YXJpYWJsZTM4OSA9IHsgfTsKICAgICAgICAg
ICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGUzOTEgPSAmdmFyaWFibGUzOTsKICAgICAgICAgICAg
dHlwZTczIHZhcmlhYmxlMzkzID0gdmFyaWFibGUzOTsKICAgICAgICAgICAgdHlwZTE5IHZhcmlh
YmxlMzkyOwogICAgICAgICAgICBpZiAodmFyaWFibGUzOTMpCiAgICAgICAgICAgICAgICB2YXJp
YWJsZTM5MiA9ICp2YXJpYWJsZTM5OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB2
YXJpYWJsZTM5MiA9IHsgfTsKICAgICAgICAgICAgdHlwZTYyIHZhcmlhYmxlMzk0ID0gc3RhdGlj
X2Nhc3Q8dHlwZTYyPigxKTsKICAgICAgICAgICAgdHlwZTE5IHZhcmlhYmxlMzk1OwoKICAgICAg
ICAgICAgdmFyaWFibGUzOTUgPSB2YXJpYWJsZTM5MjsKICAgICAgICAgICAgdmFyaWFibGUzOTUu
eSA9IHZhcmlhYmxlMzk0OwoKICAgICAgICAgICAgaWYgKHZhcmlhYmxlMzkwKQogICAgICAgICAg
ICAgICAgKnZhcmlhYmxlMzkwID0gdmFyaWFibGUzOTU7CiAgICAgICAgfQogICAgICAgIHRocmVh
ZCB0eXBlMTkqIHZhcmlhYmxlMzk2ID0gJnZhcmlhYmxlNTc7CiAgICAgICAgdHlwZTYyIHZhcmlh
YmxlMzk3OwoKICAgICAgICB2YXJpYWJsZTM5NyA9IHZhcmlhYmxlNTcueTsKCiAgICAgICAgdHlw
ZTYyIHZhcmlhYmxlMzk4ID0gc3RhdGljX2Nhc3Q8dHlwZTYyPigxKTsKICAgICAgICB0eXBlNzcg
dmFyaWFibGUzOTk7CgogICAgICAgIHZhcmlhYmxlMzk5ID0gdmFyaWFibGUzOTcgPiB2YXJpYWJs
ZTM5ODsKCiAgICAgICAgdHlwZTc3IHZhcmlhYmxlNDAwOwoKICAgICAgICB0eXBlNzcgdmFyaWFi
bGU0MDEgPSB2YXJpYWJsZTM5OTsKICAgICAgICB2YXJpYWJsZTQwMCA9IHN0YXRpY19jYXN0PHR5
cGU3Nz4odmFyaWFibGU0MDEpOwoKICAgICAgICBpZiAodmFyaWFibGU0MDApIHsKICAgICAgICAg
ICAgdGhyZWFkIHR5cGU3MyogdmFyaWFibGU0MDIgPSAmdmFyaWFibGU0MDsKICAgICAgICAgICAg
dGhyZWFkIHR5cGUxOSogdmFyaWFibGU0MDMgPSAmdmFyaWFibGU1NzsKICAgICAgICAgICAgdHlw
ZTczIHZhcmlhYmxlNDA0ID0gdmFyaWFibGU0MDM7CiAgICAgICAgICAgICp2YXJpYWJsZTQwMiA9
IHZhcmlhYmxlNDA0OwogICAgICAgICAgICB0aHJlYWQgdHlwZTczKiB2YXJpYWJsZTQwNSA9ICZ2
YXJpYWJsZTQwOwogICAgICAgICAgICB0eXBlNzMgdmFyaWFibGU0MDcgPSB2YXJpYWJsZTQwOwog
ICAgICAgICAgICB0eXBlMTkgdmFyaWFibGU0MDY7CiAgICAgICAgICAgIGlmICh2YXJpYWJsZTQw
NykKICAgICAgICAgICAgICAgIHZhcmlhYmxlNDA2ID0gKnZhcmlhYmxlNDA7CiAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgIHZhcmlhYmxlNDA2ID0geyB9OwogICAgICAgICAgICB0aHJl
YWQgdHlwZTczKiB2YXJpYWJsZTQwOCA9ICZ2YXJpYWJsZTQwOwogICAgICAgICAgICB0eXBlNzMg
dmFyaWFibGU0MTAgPSB2YXJpYWJsZTQwOwogICAgICAgICAgICB0eXBlMTkgdmFyaWFibGU0MDk7
CiAgICAgICAgICAgIGlmICh2YXJpYWJsZTQxMCkKICAgICAgICAgICAgICAgIHZhcmlhYmxlNDA5
ID0gKnZhcmlhYmxlNDA7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHZhcmlhYmxl
NDA5ID0geyB9OwogICAgICAgICAgICB0eXBlNjIgdmFyaWFibGU0MTEgPSBzdGF0aWNfY2FzdDx0
eXBlNjI+KC0xKTsKICAgICAgICAgICAgdHlwZTE5IHZhcmlhYmxlNDEyOwoKICAgICAgICAgICAg
dmFyaWFibGU0MTIgPSB2YXJpYWJsZTQwOTsKICAgICAgICAgICAgdmFyaWFibGU0MTIueSA9IHZh
cmlhYmxlNDExOwoKICAgICAgICAgICAgaWYgKHZhcmlhYmxlNDA3KQogICAgICAgICAgICAgICAg
KnZhcmlhYmxlNDA3ID0gdmFyaWFibGU0MTI7CiAgICAgICAgfQogICAgICAgIHRocmVhZCB0eXBl
NjgqIHZhcmlhYmxlNDEzID0gJnZhcmlhYmxlNzsKICAgICAgICB0aHJlYWQgdHlwZTcxKiB2YXJp
YWJsZTQxNCA9ICZ2YXJpYWJsZTQxOwogICAgICAgIHR5cGU3OSB2YXJpYWJsZTQxNTsKCiAgICAg
ICAgdmFyaWFibGU0MTUgPSAodmFyaWFibGU0MSA8IHZhcmlhYmxlNy5sZW5ndGgpID8gICYodmFy
aWFibGU3LnBvaW50ZXJbdmFyaWFibGU0MV0pIDogbnVsbHB0cjsKCiAgICAgICAgdHlwZTc5IHZh
cmlhYmxlNDE3ID0gdmFyaWFibGU0MTU7CiAgICAgICAgdHlwZTY3IHZhcmlhYmxlNDE2OwogICAg
ICAgIGlmICh2YXJpYWJsZTQxNykKICAgICAgICAgICAgdmFyaWFibGU0MTYgPSAqdmFyaWFibGU0
MTU7CiAgICAgICAgZWxzZQogICAgICAgICAgICB2YXJpYWJsZTQxNiA9IHsgfTsKICAgICAgICB0
eXBlNzkgdmFyaWFibGU0MTggPSB2YXJpYWJsZTQxNzsKICAgICAgICB0eXBlNzggdmFyaWFibGU0
MTk7CgogICAgICAgIHZhcmlhYmxlNDE5ID0gJih2YXJpYWJsZTQxOC0+c3RydWN0dXJlRWxlbWVu
dDApOwoKICAgICAgICB0eXBlNzggdmFyaWFibGU0MjEgPSB2YXJpYWJsZTQxOTsKICAgICAgICB0
eXBlMTkgdmFyaWFibGU0MjA7CiAgICAgICAgaWYgKHZhcmlhYmxlNDIxKQogICAgICAgICAgICB2
YXJpYWJsZTQyMCA9ICp2YXJpYWJsZTQxOTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHZhcmlh
YmxlNDIwID0geyB9OwogICAgICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlNDIyID0gJnZhcmlh
YmxlNTc7CiAgICAgICAgaWYgKHZhcmlhYmxlNDIxKQogICAgICAgICAgICAqdmFyaWFibGU0MjEg
PSB2YXJpYWJsZTU3OwogICAgICAgIHRocmVhZCB0eXBlNjgqIHZhcmlhYmxlNDIzID0gJnZhcmlh
YmxlNzsKICAgICAgICB0aHJlYWQgdHlwZTcxKiB2YXJpYWJsZTQyNCA9ICZ2YXJpYWJsZTQxOwog
ICAgICAgIHR5cGU3OSB2YXJpYWJsZTQyNTsKCiAgICAgICAgdmFyaWFibGU0MjUgPSAodmFyaWFi
bGU0MSA8IHZhcmlhYmxlNy5sZW5ndGgpID8gICYodmFyaWFibGU3LnBvaW50ZXJbdmFyaWFibGU0
MV0pIDogbnVsbHB0cjsKCiAgICAgICAgdHlwZTc5IHZhcmlhYmxlNDI3ID0gdmFyaWFibGU0MjU7
CiAgICAgICAgdHlwZTY3IHZhcmlhYmxlNDI2OwogICAgICAgIGlmICh2YXJpYWJsZTQyNykKICAg
ICAgICAgICAgdmFyaWFibGU0MjYgPSAqdmFyaWFibGU0MjU7CiAgICAgICAgZWxzZQogICAgICAg
ICAgICB2YXJpYWJsZTQyNiA9IHsgfTsKICAgICAgICB0eXBlNzkgdmFyaWFibGU0MjggPSB2YXJp
YWJsZTQyNzsKICAgICAgICB0eXBlNzggdmFyaWFibGU0Mjk7CgogICAgICAgIHZhcmlhYmxlNDI5
ID0gJih2YXJpYWJsZTQyOC0+c3RydWN0dXJlRWxlbWVudDEpOwoKICAgICAgICB0eXBlNzggdmFy
aWFibGU0MzEgPSB2YXJpYWJsZTQyOTsKICAgICAgICB0eXBlMTkgdmFyaWFibGU0MzA7CiAgICAg
ICAgaWYgKHZhcmlhYmxlNDMxKQogICAgICAgICAgICB2YXJpYWJsZTQzMCA9ICp2YXJpYWJsZTQy
OTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHZhcmlhYmxlNDMwID0geyB9OwogICAgICAgIHRo
cmVhZCB0eXBlMTkqIHZhcmlhYmxlNDMyID0gJnZhcmlhYmxlNjc7CiAgICAgICAgaWYgKHZhcmlh
YmxlNDMxKQogICAgICAgICAgICAqdmFyaWFibGU0MzEgPSB2YXJpYWJsZTY3OwogICAgfQp9Cgp0
eXBlNzEgZnVuY3Rpb24xKHR5cGU3MSB2YXJpYWJsZTQzMykKewogICAgdGhyZWFkIHR5cGU3MSog
dmFyaWFibGU0MzQgPSAmdmFyaWFibGU0MzM7CiAgICB0eXBlNzEgdmFyaWFibGU0MzUgPSBzdGF0
aWNfY2FzdDx0eXBlNzE+KDEpOwogICAgdHlwZTcxIHZhcmlhYmxlNDM2OwoKICAgIHZhcmlhYmxl
NDM2ID0gdmFyaWFibGU0MzMgKyB2YXJpYWJsZTQzNTsKCiAgICByZXR1cm4gdmFyaWFibGU0MzY7
Cn0KCnR5cGU2MiBmdW5jdGlvbjIodHlwZTYyIHZhcmlhYmxlNDM3KQp7CiAgICB0aHJlYWQgdHlw
ZTYyKiB2YXJpYWJsZTQzOCA9ICZ2YXJpYWJsZTQzNzsKICAgIHR5cGU2MiB2YXJpYWJsZTQzOSA9
IHN0YXRpY19jYXN0PHR5cGU2Mj4oMSk7CiAgICB0eXBlNjIgdmFyaWFibGU0NDA7CgogICAgdmFy
aWFibGU0NDAgPSB2YXJpYWJsZTQzNyArIHZhcmlhYmxlNDM5OwoKICAgIHJldHVybiB2YXJpYWJs
ZTQ0MDsKfQoKdHlwZTYyIGZ1bmN0aW9uMyh0eXBlMTkgdmFyaWFibGU0NDEsIHR5cGUxOSB2YXJp
YWJsZTQ0MikKewogICAgdGhyZWFkIHR5cGUxOSogdmFyaWFibGU0NDMgPSAmdmFyaWFibGU0NDE7
CiAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTQ0NCA9ICZ2YXJpYWJsZTQ0MjsKICAgIHR5cGUx
OSB2YXJpYWJsZTQ0NTsKCiAgICB2YXJpYWJsZTQ0NSA9IHZhcmlhYmxlNDQxIC0gdmFyaWFibGU0
NDI7CgogICAgdHlwZTYyIHZhcmlhYmxlNDQ2OwoKICAgIHZhcmlhYmxlNDQ2ID0gbGVuZ3RoKHZh
cmlhYmxlNDQ1KTsKCiAgICByZXR1cm4gdmFyaWFibGU0NDY7Cn0KCnR5cGUxOSBmdW5jdGlvbjQo
dHlwZTE5IHZhcmlhYmxlNDQ3KQp7CiAgICB0aHJlYWQgdHlwZTE5KiB2YXJpYWJsZTQ0OCA9ICZ2
YXJpYWJsZTQ0NzsKICAgIHRocmVhZCB0eXBlMTkqIHZhcmlhYmxlNDQ5ID0gJnZhcmlhYmxlNDQ3
OwogICAgdHlwZTYyIHZhcmlhYmxlNDUwOwoKICAgIHZhcmlhYmxlNDUwID0gbGVuZ3RoKHZhcmlh
YmxlNDQ3KTsKCiAgICB0eXBlMTkgdmFyaWFibGU0NTE7CgogICAgdmFyaWFibGU0NTEgPSB2YXJp
YWJsZTQ0NyAvIHZhcmlhYmxlNDUwOwoKICAgIHJldHVybiB2YXJpYWJsZTQ1MTsKfQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>