<?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>149591</bug_id>
          
          <creation_ts>2015-09-27 22:22:52 -0700</creation_ts>
          <short_desc>relatedNode should be retargeted respecting slots</short_desc>
          <delta_ts>2015-09-28 15:11:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128963</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-27 22:22:52 -0700</bug_when>
    <thetext>Re-implement the event retargeting for shadow DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128970</commentid>
    <comment_count>1</comment_count>
      <attachid>262003</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-28 00:29:41 -0700</bug_when>
    <thetext>Created attachment 262003
Implements retargeting of relatedNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128971</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-28 00:31:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/22875812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129036</commentid>
    <comment_count>3</comment_count>
      <attachid>262003</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-28 11:10:46 -0700</bug_when>
    <thetext>Comment on attachment 262003
Implements retargeting of relatedNode

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

r=me, looks like the best solution for this.

It would be nice if we didn&apos;t need to do anything this convoluted but I suppose it is unavoidable with the current spec.

&gt; Source/WebCore/dom/EventDispatcher.cpp:514
&gt; +        if (&amp;currentTreeScope-&gt;documentScope() != &amp;targetTreeScope.documentScope()) {
&gt; +            m_inDifferentTree = true;

m_inDifferentDocumentScope might be a more accurate name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129037</commentid>
    <comment_count>4</comment_count>
      <attachid>262003</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-28 11:13:32 -0700</bug_when>
    <thetext>Comment on attachment 262003
Implements retargeting of relatedNode

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

&gt;&gt; Source/WebCore/dom/EventDispatcher.cpp:514
&gt;&gt; +            m_inDifferentTree = true;
&gt; 
&gt; m_inDifferentDocumentScope might be a more accurate name.

This flag is also here below where we detect that one is in the document and the other one isn&apos;t.

&gt; Source/WebCore/dom/EventDispatcher.cpp:519
&gt; +            m_inDifferentTree = true;

Here. We still have to do some work to get out of the shadow DOM but we can avoid all subsequent works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129054</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-28 12:02:43 -0700</bug_when>
    <thetext>It is not clear what the &quot;tree&quot; is in m_inDifferentTree. It apparently doesn&apos;t mean different shadow tree so I thought adding &quot;Document&quot; there would clarify things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129056</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-28 13:05:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; It is not clear what the &quot;tree&quot; is in m_inDifferentTree. It apparently
&gt; doesn&apos;t mean different shadow tree so I thought adding &quot;Document&quot; there
&gt; would clarify things.

They&apos;re not necessarily in two different documents. They could have the same owner document but one inside the document and another outside the document.

How about m_hasDifferentTreeRoot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129067</commentid>
    <comment_count>7</comment_count>
      <attachid>262018</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-28 14:17:31 -0700</bug_when>
    <thetext>Created attachment 262018
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129088</commentid>
    <comment_count>8</comment_count>
      <attachid>262018</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-28 15:11:33 -0700</bug_when>
    <thetext>Comment on attachment 262018
Patch for landing

Clearing flags on attachment: 262018

Committed r190288: &lt;http://trac.webkit.org/changeset/190288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129089</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-28 15:11:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262003</attachid>
            <date>2015-09-28 00:29:41 -0700</date>
            <delta_ts>2015-09-28 14:17:28 -0700</delta_ts>
            <desc>Implements retargeting of relatedNode</desc>
            <filename>bug-149591-20150928002919.patch</filename>
            <type>text/plain</type>
            <size>35987</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcwOGE5ZTE1ZWFiMThm
ZDM4N2ZlOTE4YjAzODk2N2RjMjhiYjJhOC4uM2MxY2I2MzY5YTU2MmQwMDg1OTA2ZGRiY2RiMDIy
NWQ2MzE1NWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTA5LTI3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHJlbGF0ZWROb2RlIHNob3Vs
ZCBiZSByZXRhcmdldGVkIHJlc3BlY3Rpbmcgc2xvdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV0YXJnZXRzIHJlbGF0ZWROb2Rl
IHdpdGggcmVzcGVjdCB0byBzaGFkb3cgYm91bmRhcmllcyBhZnRlciByMTkwMjE0IGFzIHNwZWNp
ZmllZCBpbgorICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVj
L3NoYWRvdy8jcmV0YXJnZXRpbmctcmVsYXRlZHRhcmdldAorCisgICAgICAgIE5haXZlbHkgaW1w
bGVtZW50aW5nIHRoZSBzcGVjJ2VkIGJlaGF2aW9yIGNhbiByZXN1bHQgaW4gTyhuXjIpIGJlaGF2
aW9yIHNpbmNlIHdlIG5lZWQgdG8gZmluZCB0aGUgY29tbW9uIHRyZWUgc2NvcGUKKyAgICAgICAg
YW5jZXN0b3IgZm9yIGVhY2ggdGFyZ2V0IGluIHRoZSBldmVudCBwYXRoLiBUaGlzIHBhdGNoIGF2
b2lkcyB0aGlzIGJ5IGltcGxlbWVudGluZyBhbiBPKDEpIGluY3JlbWVudGFsIHVwZGF0ZSBzdGVw
CisgICAgICAgIGZvciB3aGVuIHRhcmdldCdzIHRyZWUgc2NvcGUgY2hhbmdlcyBpbiB0aGUgZXZl
bnQgcGF0aC4gU2VlIHRoZSBkZXNjcmlwdGlvbiBmb3IgbW92ZVRvTmV3VHJlZVNjb3BlIGJlbG93
LgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9ldmVudC13aXRoLXJlbGF0ZWQtdGFy
Z2V0Lmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuaDogUmVwbGFjZWQgdG9Nb3Vz
ZU9yRm9jdXNFdmVudENvbnRleHQgYnkgZG93bmNhc3Q8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0
Pi4KKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcik6IFJlbW92ZWQgdGhlIGNvZGUgZm9yIHJlbGF0ZWRO
b2RlLiBUaGlzIGNsYXNzIGlzIG5vdyBvbmx5IHVzZWQgZm9yIHRvdWNoIGV2ZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50UGF0aCk6IEFkZGVkIG1fZXZlbnQgYXMgYSBtZW1iZXIgdmFyaWFi
bGUuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcik6IEFkZGVkLgor
CisgICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0
YXJnZXRlcik6IERvZXMgdGhlIGluaXRpYWwgcmV0YXJnZXRpbmcgb2YgcmVsYXRlZE5vZGUuIFdo
ZW4gdGhlCisgICAgICAgIHRyZWUgc2NvcGUgb2YgcmVsYXRlZE5vZGUgYW5kIHRoZSB0YXJnZXQg
YXJlIHRoZSBzYW1lLCB3ZSBpbW1lZGlhdGVseSBleGl0IHdpdGhvdXQgY29sbGVjdGluZyBhbmNl
c3RvciB0cmVlIHNjb3BlcworICAgICAgICBvZiByZWxhdGVkTm9kZSBhcyBhbiBvcHRpbWl6YXRp
b24uIFdlIGFsc28gc3BlY2lhbCBjYXNlIHdoZW4gdGhlIHJlbGF0ZWROb2RlIGFuZCB0aGUgdGFy
Z2V0IGFyZSBpbiB0d28gZGlmZmVyZW50CisgICAgICAgIGRvY3VtZW50cyAocmVsYXRlZE5vZGUg
c2hvdWxkIGJlIG51bGxwdHIpIGFuZCB3aGVuIG9uZSBpcyBpbiBkb2N1bWVudCBhbmQgdGhlIG90
aGVyIG9uZSBpcyBub3QgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIChyZWxhdGVkTm9kZSBzaG91
bGQgYmUgdGhlIGhvc3Qgb2YgdGhlIG91dGVybW9zdCBzaGFkb3cgcm9vdCkuIE90aGVyd2lzZSB3
ZSBoYXZlIHRvIGRvIHRoZSByZWFsIHdvcmsgYnkgY29sbGVjdGluZworICAgICAgICBhbGwgdHJl
ZSBzY29wZSBhbmNlc3RvcnMgYW5kIHdhbGtpbmcgZG93bndhcmRzIGZyb20gdGhlIGRvY3VtZW50
IHRyZWUgc2NvcGUgKG5vdGUgdGFyZ2V0IGFuZCByZWxhdGVkTm9kZSBzaGFyZSB0aGUKKyAgICAg
ICAgc2FtZSBkb2N1bWVudCBzY29wZSBoZXJlIHNpbmNlIHdlIHdvdWxkIGhhdmUgZXhpdGVkIGVh
cmx5IG90aGVyd2lzZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRl
cjo6Y3VycmVudE5vZGUpOiBSZXR1cm5lZCByZWxhdGVkTm9kZSByZXRhcmdldGVkIGZvciB0aGUg
Y3VycmVudCB0cmVlIHNjb3BlLgorCisgICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6Om1vdmVUb05ld1RyZWVTY29wZSk6IE1vdmVzIHRvIGEgbmV3IHRyZWUgc2NvcGUuIElm
IHRoZSBvcmlnaW5hbCB0YXJnZXQgYW5kCisgICAgICAgIHJlbGF0ZWROb2RlIHdlcmUgaW4gZGlm
ZmVyZW50IHRyZWVzLCB0aGVyZSBpcyBub3RoaW5nIHRvIGJlIGRvbmUuIE5vdGUgdGhhdCB3ZSBj
YW4gb25seSBtb3ZlIG91dCBvZiBhIHNoYWRvdyByb290CisgICAgICAgIHRvIGl0cyBob3N0IG9y
IG1vdmUgaW50byBhIHNsb3Qgc28gbmV3VHJlZVNjb3BlIChjdXJyZW50IHRhcmdldCdzIHRyZWUg
c2NvcGUpIGFuZCBwcmV2aW91c1RyZWVTY29wZSAocHJldmlvdXMKKyAgICAgICAgdGFyZ2V0J3Mg
dHJlZSBzY29wZSkgbXVzdCBoYXZlIGEgY2hpbGQtcGFyZW50IHJlbGF0aW9uc2hpcC4KKworICAg
ICAgICBJZiBwcmV2aW91c1RyZWVTY29wZSBkaWQgbm90IGNvbnRhaW4gdGhlIHJldGFyZ2V0ZWQg
cmVsYXRlZE5vZGUsIHRoZW4gbmVpdGhlciBjYW4gaXRzIGNoaWxkIHNoYWRvdyB0cmVlcy4gVGh1
cywKKyAgICAgICAgdGhlcmUgaXMgbm90aGluZyB0byBiZSBkb25lIHdoZW4gbW92aW5nIGludG8g
YSBzbG90IGluIHRoaXMgY2FzZS4gSWYgd2UncmUgbW92aW5nIG91dCBvZiBwcmV2aW91c1RyZWVT
Y29wZSwgdGhlbgorICAgICAgICBuZXdUcmVlU2NvcGUgbWF5IGNvbnRhaW4gdGhlIHJldGFyZ2V0
ZWQgcmVsYXRlZE5vZGUgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCByZXF1aXJlIGFueSB3b3JrLiBT
byB3ZSBleGl0IGVhcmx5IGluCisgICAgICAgIGJvdGggY2FzZXMuCisKKyAgICAgICAgT3RoZXJ3
aXNlIChwcmV2aW91c1RyZWVTY29wZSBjb250YWluZWQgcmV0YXJnZXRlZCByZWxhdGVkTm9kZSks
IGlmIHdlJ3JlIG1vdmluZyBvdXQgb2YgYSBjaGlsZCBzaGFkb3cgcm9vdAorICAgICAgICAocHJl
dmlvdXNUcmVlU2NvcGUpIHRoZW4gcmVsYXRlZE5vZGUgc2hvdWxkIGFsc28gbW92ZSB0byBwcmV2
aW91c1RyZWVTY29wZSdzIHNoYWRvdyBob3N0IHNpbmNlIHByZXZpb3VzVHJlZVNjb3BlCisgICAg
ICAgIGlzIGEgZGlyZWN0LWNoaWxkIHNoYWRvdyB0cmVlIG9mIG5ld1RyZWVTY29wZSBhbmQgcHJl
dmlvdXNUcmVlU2NvcGUncyBzaGFkb3cgaG9zdCByZXNpZGVzIGluIG5ld1RyZWVTY29wZS4KKwor
ICAgICAgICBJZiB3ZSdyZSBtb3ZpbmcgaW50byBhIGNoaWxkIHNoYWRvdyByb290IHZpYSBhIHNs
b3QsIHRoZW4gdGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXM6IHJlbGF0ZWROb2RlIGlzIGlu
CisgICAgICAgIHByZXZpb3VzVHJlZVNjb3BlLCBuZXdUcmVlU2NvcGUgYW5kIGl0cyBjaGlsZCBz
aGFkb3cgdHJlZXMsIG9yIG5ld1RyZWVTY29wZSdzIHNpYmxpbmcgdHJlZSBzY29wZXMgYW5kIGl0
cyBjaGlsZHJlbi4KKyAgICAgICAgSWYgaXQgaXMgaW4gcHJldmlvdXNUcmVlU2NvcGUgKG1fbG93
ZXN0Q29tbW9uQW5jZXN0b3JJbmRleCBpcyB6ZXJvKSBvciBpbiBuZXdUcmVlU2NvcGUncyBzaWJs
aW5nLCB0aGVuCisgICAgICAgIHByZXZpb3VzVHJlZVNjb3BlIGlzIHRoZSBsb3dlc3QgY29tbW9u
IHRyZWUgc2NvcGUgYW5jZXN0b3Igc28gdGhlcmUgaXMgbm90aGluZyB0byBiZSBkb25lLiBJZiBy
ZWxhdGVkTm9kZSBpcyBpbgorICAgICAgICBuZXdUcmVlU2NvcGUsIHRoZW4gdGhlIHJldGFyZ2V0
ZWQgcmVsYXRlZE5vZGUgaXMgZWl0aGVyIHRoZSBzaGFkb3cgaG9zdCBvZiB0aGUgc2hhZG93IHRy
ZWUgdGhhdCBjb250YWlucworICAgICAgICByZWxhdGVkTm9kZSBvciByZWxhdGVkTm9kZSBpdHNl
bGYuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25z
aXN0ZW5jeSk6IEZpbmRzIHRoZSByZXRhcmdldGVkIHJlbGF0ZWROb2RlIGluIHRoZSBzaW1wbGVz
dCB3YXkgdG8gdmVyaWZ5CisgICAgICAgIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgYWxnb3JpdGht
LiBXZSBjYW4gZGlzYWJsZSB0aGlzIGNvbnNpc3RlbmN5IGNoZWNrIGlmIGl0IHNsb3dzIGRvd24g
ZGVidWcgYnVpbGRzIHRvbyBtdWNoLgorICAgICAgICAoV2ViQ29yZTo6UmVsYXRlZE5vZGVSZXRh
cmdldGVyOjpub2RlSW5Mb3dlc3RDb21tb25BbmNlc3Rvcik6IEZpbmRzIHRoZSAKKyAgICAgICAg
KFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y29sbGVjdFRyZWVTY29wZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpzZXRSZWxhdGVkVGFyZ2V0KTogUmV3cml0dGVuIHVz
aW5nIFJlbGF0ZWROb2RlUmV0YXJnZXRlci4KKwogMjAxNS0wOS0yNSAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB1c2VyIG1lZGlhIHJl
cXVlc3QgaW50ZXJuYWwgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKaW5kZXggYWEwY2Zi
MjY3ZWExN2M1OTE4NTdiM2VkZWU4MmYxOTIyYzQ3ZGFkOC4uM2Y2MjQ2MGQ3ZjU4NTNmZTZjZjY3
NDU1MzEzY2Y5Y2JjMjMyYTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtNzYs
MTIgKzc2LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fcmVsYXRlZFRh
cmdldDsKIH07CiAKLWlubGluZSBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQmIHRvTW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0KEV2ZW50Q29udGV4dCYgZXZlbnRDb250ZXh0KQotewotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGV2ZW50Q29udGV4dC5pc01vdXNlT3JGb2N1c0V2
ZW50Q29udGV4dCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TW91c2VPckZvY3VzRXZlbnRD
b250ZXh0Jj4oZXZlbnRDb250ZXh0KTsKLX0KLQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgIVBMQVRGT1JNKElPUykKIGNsYXNzIFRvdWNoRXZlbnRDb250ZXh0IGZpbmFsIDogcHVibGlj
IEV2ZW50Q29udGV4dCB7CkBAIC0xNjIsNCArMTU2LDggQEAgaW5saW5lIHZvaWQgTW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0OjpzZXRSZWxhdGVkVGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHIKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dCkKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFdmVu
dENvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRXZl
bnRDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggM2M1
MjljMmU4YzEyZTE1NTgyMjQ2MTI1ZThiYjhlZWYzM2EwYTNmNS4uOGY3MGIyOWY0NmNiN2U0ODRh
ZmNkNDBhZjIzNjE4ZDJlZGQ4MzJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hl
ci5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTEwMSwyNCArMTAxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUb3VjaExp
c3RzSW5FdmVudFBhdGgoY29uc3QgVG91Y2hMaXN0KiwgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNo
TGlzdFR5cGUpOwogI2VuZGlmCiAKKyAgICBFdmVudCYgbV9ldmVudDsKICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4sIDMyPiBtX3BhdGg7CiB9OwogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKKy8vIEZJWE1FOiBVc2UgUmVsYXRlZE5v
ZGVSZXRhcmdldGVyIGluc3RlYWQuCiBjbGFzcyBFdmVudFJlbGF0ZWROb2RlUmVzb2x2ZXIgewog
cHVibGljOgotICAgIEV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcihOb2RlJiByZWxhdGVkTm9kZSkK
LSAgICAgICAgOiBtX3JlbGF0ZWROb2RlKHJlbGF0ZWROb2RlKQotICAgICAgICAsIG1fcmVsYXRl
ZE5vZGVUcmVlU2NvcGUocmVsYXRlZE5vZGUudHJlZVNjb3BlKCkpCi0gICAgICAgICwgbV9yZWxh
dGVkTm9kZUluQ3VycmVudFRyZWVTY29wZShudWxscHRyKQotICAgICAgICAsIG1fY3VycmVudFRy
ZWVTY29wZShudWxscHRyKQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJ
T1MpCi0gICAgICAgICwgbV90b3VjaCgwKQotICAgICAgICAsIG1fdG91Y2hMaXN0VHlwZShUb3Vj
aEV2ZW50Q29udGV4dDo6Tm90VG91Y2hMaXN0KQotI2VuZGlmCi0gICAgewotICAgIH0KLQotI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgRXZlbnRSZWxhdGVk
Tm9kZVJlc29sdmVyKFRvdWNoJiB0b3VjaCwgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5
cGUgdG91Y2hMaXN0VHlwZSkKICAgICAgICAgOiBtX3JlbGF0ZWROb2RlKCp0b3VjaC50YXJnZXQo
KS0+dG9Ob2RlKCkpCiAgICAgICAgICwgbV9yZWxhdGVkTm9kZVRyZWVTY29wZShtX3JlbGF0ZWRO
b2RlLnRyZWVTY29wZSgpKQpAQCAtMTI5LDEyICsxMTksOSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBBU1NFUlQodG91Y2gudGFyZ2V0KCktPnRvTm9kZSgpKTsKICAgICB9Ci0jZW5kaWYKIAot
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgVG91Y2gqIHRv
dWNoKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaDsgfQogICAgIFRvdWNoRXZlbnRDb250ZXh0OjpU
b3VjaExpc3RUeXBlIHRvdWNoTGlzdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoTGlzdFR5
cGU7IH0KLSNlbmRpZgogCiAgICAgTm9kZSogbW92ZVRvUGFyZW50T3JTaGFkb3dIb3N0KE5vZGUm
IG5ld1RhcmdldCkKICAgICB7CkBAIC0xOTcsMTEgKzE4NCwxMCBAQCBwcml2YXRlOgogICAgIGNv
bnN0IFRyZWVTY29wZSYgbV9yZWxhdGVkTm9kZVRyZWVTY29wZTsKICAgICBOb2RlKiBtX3JlbGF0
ZWROb2RlSW5DdXJyZW50VHJlZVNjb3BlOwogICAgIFRyZWVTY29wZSogbV9jdXJyZW50VHJlZVNj
b3BlOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgVG91
Y2gqIG1fdG91Y2g7CiAgICAgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5cGUgbV90b3Vj
aExpc3RUeXBlOwotI2VuZGlmCiB9OworI2VuZGlmCiAKIGlubGluZSBFdmVudFRhcmdldCogZXZl
bnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoTm9kZSYgcmVmZXJlbmNlTm9kZSkKIHsKQEAg
LTQxNSw2ICs0MDEsNyBAQCBzdGF0aWMgTm9kZSogbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudChO
b2RlKiBub2RlKQogfQogCiBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQorICAgIDogbV9ldmVudChldmVudCkKIHsKICNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBWZWN0b3I8RXZlbnRUYXJnZXQqLCAxNj4gdGFyZ2V0U3RhY2s7CkBAIC01
MTMsMzAgKzUwMCwxNzAgQEAgYm9vbCBFdmVudFBhdGg6OnVwZGF0ZVRvdWNoTGlzdHMoY29uc3Qg
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIH0KICNlbmRpZgogCitjbGFzcyBSZWxhdGVkTm9kZVJl
dGFyZ2V0ZXIgeworcHVibGljOgorICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlcihOb2RlJiByZWxh
dGVkTm9kZSwgVHJlZVNjb3BlJiB0YXJnZXRUcmVlU2NvcGUpCisgICAgICAgIDogbV9yZWxhdGVk
Tm9kZShyZWxhdGVkTm9kZSkKKyAgICAgICAgLCBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSgmcmVs
YXRlZE5vZGUpCisgICAgeworICAgICAgICBUcmVlU2NvcGUqIGN1cnJlbnRUcmVlU2NvcGUgPSAm
bV9yZWxhdGVkTm9kZS50cmVlU2NvcGUoKTsKKyAgICAgICAgaWYgKExJS0VMWShjdXJyZW50VHJl
ZVNjb3BlID09ICZ0YXJnZXRUcmVlU2NvcGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICgmY3VycmVudFRyZWVTY29wZS0+ZG9jdW1lbnRTY29wZSgpICE9ICZ0YXJnZXRUcmVl
U2NvcGUuZG9jdW1lbnRTY29wZSgpKSB7CisgICAgICAgICAgICBtX2luRGlmZmVyZW50VHJlZSA9
IHRydWU7CisgICAgICAgICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlbGF0ZWROb2RlLmlu
RG9jdW1lbnQoKSAhPSB0YXJnZXRUcmVlU2NvcGUucm9vdE5vZGUoKS5pbkRvY3VtZW50KCkpIHsK
KyAgICAgICAgICAgIG1faW5EaWZmZXJlbnRUcmVlID0gdHJ1ZTsKKyAgICAgICAgICAgIHdoaWxl
IChtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgICAg
ICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KG1fcmV0
YXJnZXRlZFJlbGF0ZWROb2RlLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5ob3N0KCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb2xsZWN0VHJlZVNjb3Blcygp
OworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29sbGVjdCB0aGlzIHdoaWxlIGNvbnN0
cnVjdGluZyB0aGUgZXZlbnQgcGF0aC4KKyAgICAgICAgVmVjdG9yPFRyZWVTY29wZSosIDg+IHRh
cmdldFRyZWVTY29wZUFuY2VzdG9yczsKKyAgICAgICAgZm9yIChUcmVlU2NvcGUqIGN1cnJlbnRU
cmVlU2NvcGUgPSAmdGFyZ2V0VHJlZVNjb3BlOyBjdXJyZW50VHJlZVNjb3BlOyBjdXJyZW50VHJl
ZVNjb3BlID0gY3VycmVudFRyZWVTY29wZS0+cGFyZW50VHJlZVNjb3BlKCkpCisgICAgICAgICAg
ICB0YXJnZXRUcmVlU2NvcGVBbmNlc3RvcnMuYXBwZW5kKGN1cnJlbnRUcmVlU2NvcGUpOworICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighdGFyZ2V0VHJlZVNjb3BlQW5j
ZXN0b3JzLmlzRW1wdHkoKSk7CisKKyAgICAgICAgdW5zaWduZWQgaSA9IG1fYW5jZXN0b3JUcmVl
U2NvcGVzLnNpemUoKTsKKyAgICAgICAgdW5zaWduZWQgaiA9IHRhcmdldFRyZWVTY29wZUFuY2Vz
dG9ycy5zaXplKCk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1f
YW5jZXN0b3JUcmVlU2NvcGVzLmxhc3QoKSA9PSB0YXJnZXRUcmVlU2NvcGVBbmNlc3RvcnMubGFz
dCgpKTsKKyAgICAgICAgd2hpbGUgKG1fYW5jZXN0b3JUcmVlU2NvcGVzW2kgLSAxXSA9PSB0YXJn
ZXRUcmVlU2NvcGVBbmNlc3RvcnNbaiAtIDFdKSB7CisgICAgICAgICAgICBpLS07CisgICAgICAg
ICAgICBqLS07CisgICAgICAgICAgICBpZiAoIWkgfHwgIWopCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBtX2xvd2VzdENvbW1vbkFuY2VzdG9ySW5kZXggPSBp
OworICAgICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG5vZGVJbkxvd2VzdENvbW1vbkFu
Y2VzdG9yKCk7CisgICAgfQorCisgICAgTm9kZSogY3VycmVudE5vZGUoVHJlZVNjb3BlJiBjdXJy
ZW50VHJlZVNjb3BlKQorICAgIHsKKyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeShjdXJyZW50VHJl
ZVNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlOworICAgIH0K
KworICAgIHZvaWQgbW92ZVRvTmV3VHJlZVNjb3BlKFRyZWVTY29wZSogcHJldmlvdXNUcmVlU2Nv
cGUsIFRyZWVTY29wZSYgbmV3VHJlZVNjb3BlKQorICAgIHsKKyAgICAgICAgaWYgKG1faW5EaWZm
ZXJlbnRUcmVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8mIGN1cnJlbnRS
ZWxhdGVkTm9kZVNjb3BlID0gbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUtPnRyZWVTY29wZSgpOwor
ICAgICAgICBpZiAocHJldmlvdXNUcmVlU2NvcGUgIT0gJmN1cnJlbnRSZWxhdGVkTm9kZVNjb3Bl
KSB7CisgICAgICAgICAgICAvLyBjdXJyZW50UmVsYXRlZE5vZGUgaXMgc3RpbGwgb3V0c2lkZSBv
dXIgc2hhZG93IHRyZWUuIE5ldyB0cmVlIHNjb3BlIG1heSBjb250YWluIGN1cnJlbnRSZWxhdGVk
Tm9kZQorICAgICAgICAgICAgLy8gYnV0IHRoZXJlIGlzIG5vIG5lZWQgdG8gcmUtdGFyZ2V0IGl0
LiBNb3ZpbmcgaW50byBhIHNsb3QgKHRoZXJlYnkgYSBkZWVwZXIgc2hhZG93IHRyZWUpIGRvZXNu
J3QgbWF0dGVyLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCBlbnRlcmVkU2xvdCA9IG5ld1RyZWVTY29wZS5wYXJlbnRUcmVlU2NvcGUoKSA9PSBwcmV2aW91
c1RyZWVTY29wZTsKKyAgICAgICAgaWYgKGVudGVyZWRTbG90KSB7CisgICAgICAgICAgICBpZiAo
bV9sb3dlc3RDb21tb25BbmNlc3RvckluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fYW5j
ZXN0b3JUcmVlU2NvcGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdFRy
ZWVTY29wZXMoKTsKKyAgICAgICAgICAgICAgICBib29sIHJlbGF0ZWROb2RlSXNJblNsb3QgPSBt
X2FuY2VzdG9yVHJlZVNjb3Blc1ttX2xvd2VzdENvbW1vbkFuY2VzdG9ySW5kZXggLSAxXSA9PSAm
bmV3VHJlZVNjb3BlOworICAgICAgICAgICAgICAgIGlmIChyZWxhdGVkTm9kZUlzSW5TbG90KSB7
CisgICAgICAgICAgICAgICAgICAgIG1fbG93ZXN0Q29tbW9uQW5jZXN0b3JJbmRleC0tOworICAg
ICAgICAgICAgICAgICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG5vZGVJbkxvd2VzdENv
bW1vbkFuY2VzdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgmbmV3VHJlZVNjb3Bl
ID09ICZtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+dHJlZVNjb3BlKCkpOworICAgICAgICAgICAg
ICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBBU1NFUlQobV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPT0gJm1fcmVsYXRlZE5vZGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHByZXZpb3VzVHJlZVNjb3BlLT5wYXJl
bnRUcmVlU2NvcGUoKSA9PSAmbmV3VHJlZVNjb3BlKTsKKyAgICAgICAgICAgIG1fbG93ZXN0Q29t
bW9uQW5jZXN0b3JJbmRleCsrOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04obV9hbmNlc3RvclRyZWVTY29wZXMuaXNFbXB0eSgpIHx8IG1fbG93ZXN0Q29tbW9u
QW5jZXN0b3JJbmRleCA8IG1fYW5jZXN0b3JUcmVlU2NvcGVzLnNpemUoKSk7CisgICAgICAgICAg
ICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KGN1cnJlbnRS
ZWxhdGVkTm9kZVNjb3BlLnJvb3ROb2RlKCkpLmhvc3QoKTsKKyAgICAgICAgICAgIEFTU0VSVCgm
bmV3VHJlZVNjb3BlID09ICZtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+dHJlZVNjb3BlKCkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFRyZWVTY29wZSYg
Y3VycmVudFRyZWVTY29wZSkKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBm
b3IgKGF1dG8qIHJlbGF0ZWROb2RlU2NvcGUgPSAmbV9yZWxhdGVkTm9kZS50cmVlU2NvcGUoKTsg
cmVsYXRlZE5vZGVTY29wZTsgcmVsYXRlZE5vZGVTY29wZSA9IHJlbGF0ZWROb2RlU2NvcGUtPnBh
cmVudFRyZWVTY29wZSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHRhcmdldFNjb3BlID0g
JmN1cnJlbnRUcmVlU2NvcGU7IHRhcmdldFNjb3BlOyB0YXJnZXRTY29wZSA9IHRhcmdldFNjb3Bl
LT5wYXJlbnRUcmVlU2NvcGUoKSkgeworICAgICAgICAgICAgICAgIGlmICh0YXJnZXRTY29wZSA9
PSByZWxhdGVkTm9kZVNjb3BlKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgmbV9yZXRh
cmdldGVkUmVsYXRlZE5vZGUtPnRyZWVTY29wZSgpID09IHJlbGF0ZWROb2RlU2NvcGUpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIEFTU0VSVCghbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUpOwor
I2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRUcmVlU2NvcGUpOworI2VuZGlmCisg
ICAgfQorCitwcml2YXRlOgorICAgIE5vZGUqIG5vZGVJbkxvd2VzdENvbW1vbkFuY2VzdG9yKCkK
KyAgICB7CisgICAgICAgIGlmICghbV9sb3dlc3RDb21tb25BbmNlc3RvckluZGV4KQorICAgICAg
ICAgICAgcmV0dXJuICZtX3JlbGF0ZWROb2RlOworICAgICAgICBhdXRvJiByb290Tm9kZSA9IG1f
YW5jZXN0b3JUcmVlU2NvcGVzW21fbG93ZXN0Q29tbW9uQW5jZXN0b3JJbmRleCAtIDFdLT5yb290
Tm9kZSgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8U2hhZG93Um9vdD4ocm9vdE5vZGUpLmhv
c3QoKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbGxlY3RUcmVlU2NvcGVzKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX2FuY2VzdG9yVHJlZVNjb3Blcy5pc0VtcHR5KCkpOworICAgICAgICBmb3Ig
KFRyZWVTY29wZSogY3VycmVudFRyZWVTY29wZSA9ICZtX3JlbGF0ZWROb2RlLnRyZWVTY29wZSgp
OyBjdXJyZW50VHJlZVNjb3BlOyBjdXJyZW50VHJlZVNjb3BlID0gY3VycmVudFRyZWVTY29wZS0+
cGFyZW50VHJlZVNjb3BlKCkpCisgICAgICAgICAgICBtX2FuY2VzdG9yVHJlZVNjb3Blcy5hcHBl
bmQoY3VycmVudFRyZWVTY29wZSk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFtX2FuY2VzdG9yVHJlZVNjb3Blcy5pc0VtcHR5KCkpOworICAgIH0KKworICAgIE5v
ZGUmIG1fcmVsYXRlZE5vZGU7CisgICAgTm9kZSogbV9yZXRhcmdldGVkUmVsYXRlZE5vZGU7Cisg
ICAgVmVjdG9yPFRyZWVTY29wZSosIDg+IG1fYW5jZXN0b3JUcmVlU2NvcGVzOworICAgIHVuc2ln
bmVkIG1fbG93ZXN0Q29tbW9uQW5jZXN0b3JJbmRleCB7IDAgfTsKKyAgICBib29sIG1faW5EaWZm
ZXJlbnRUcmVlIHsgZmFsc2UgfTsKK307CisKIHZvaWQgRXZlbnRQYXRoOjpzZXRSZWxhdGVkVGFy
Z2V0KE5vZGUmIG9yaWdpbiwgRXZlbnRUYXJnZXQmIHJlbGF0ZWRUYXJnZXQpCiB7CisgICAgVU5V
U0VEX1BBUkFNKG9yaWdpbik7CiAgICAgTm9kZSogcmVsYXRlZE5vZGUgPSByZWxhdGVkVGFyZ2V0
LnRvTm9kZSgpOwotICAgIGlmICghcmVsYXRlZE5vZGUpCisgICAgaWYgKCFyZWxhdGVkTm9kZSB8
fCBtX3BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFdmVudFJlbGF0ZWRO
b2RlUmVzb2x2ZXIgcmVzb2x2ZXIoKnJlbGF0ZWROb2RlKTsKKyAgICBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXIgcmV0YXJnZXRlcigqcmVsYXRlZE5vZGUsIGRvd25jYXN0PE1vdXNlT3JGb2N1c0V2ZW50
Q29udGV4dD4oKm1fcGF0aFswXSkubm9kZSgpLT50cmVlU2NvcGUoKSk7CiAKICAgICBib29sIG9y
aWdpbklzUmVsYXRlZFRhcmdldCA9ICZvcmlnaW4gPT0gcmVsYXRlZE5vZGU7CisgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBhZGQgYSBuZXcgZmxhZyBvbiBFdmVudCBpbnN0ZWFkLgorICAgIGJvb2wg
c2hvdWxkVHJpbUV2ZW50UGF0aCA9IG1fZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZW92ZXJFdmVudAorICAgICAgICB8fCBtX2V2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2Vtb3ZlRXZlbnQKKyAgICAgICAgfHwgbV9ldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNlb3V0RXZlbnQ7CiAgICAgTm9kZSYgcm9vdE5vZGVJbk9yaWdpblRyZWVTY29wZSA9IG9yaWdp
bi50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotCi0gICAgc2l6ZV90IGV2ZW50UGF0aFNpemUgPSBt
X3BhdGguc2l6ZSgpOwotICAgIHNpemVfdCBpID0gMDsKLSAgICB3aGlsZSAoaSA8IGV2ZW50UGF0
aFNpemUpIHsKLSAgICAgICAgTm9kZSogY29udGV4dE5vZGUgPSBtX3BhdGhbaV0tPm5vZGUoKTsK
LSAgICAgICAgTm9kZSogY3VycmVudFJlbGF0ZWROb2RlID0gcmVzb2x2ZXIubW92ZVRvUGFyZW50
T3JTaGFkb3dIb3N0KCpjb250ZXh0Tm9kZSk7Ci0gICAgICAgIGlmICghb3JpZ2luSXNSZWxhdGVk
VGFyZ2V0ICYmIG1fcGF0aFtpXS0+dGFyZ2V0KCkgPT0gY3VycmVudFJlbGF0ZWROb2RlKQorICAg
IFRyZWVTY29wZSogcHJldmlvdXNUcmVlU2NvcGUgPSBudWxscHRyOworICAgIHNpemVfdCBvcmln
aW5hbEV2ZW50UGF0aFNpemUgPSBtX3BhdGguc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgY29u
dGV4dEluZGV4ID0gMDsgY29udGV4dEluZGV4IDwgb3JpZ2luYWxFdmVudFBhdGhTaXplOyBjb250
ZXh0SW5kZXgrKykgeworICAgICAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8TW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0PigqbV9wYXRoW2NvbnRleHRJbmRleF0pOworCisgICAgICAgIFRyZWVT
Y29wZSYgY3VycmVudFRyZWVTY29wZSA9IGNvbnRleHQubm9kZSgpLT50cmVlU2NvcGUoKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKHByZXZpb3VzVHJlZVNjb3BlICYmICZjdXJyZW50VHJlZVNjb3Bl
ICE9IHByZXZpb3VzVHJlZVNjb3BlKSkKKyAgICAgICAgICAgIHJldGFyZ2V0ZXIubW92ZVRvTmV3
VHJlZVNjb3BlKHByZXZpb3VzVHJlZVNjb3BlLCBjdXJyZW50VHJlZVNjb3BlKTsKKworICAgICAg
ICBOb2RlKiBjdXJyZW50UmVsYXRlZE5vZGUgPSByZXRhcmdldGVyLmN1cnJlbnROb2RlKGN1cnJl
bnRUcmVlU2NvcGUpOworICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkVHJpbUV2ZW50UGF0aCAm
JiAhb3JpZ2luSXNSZWxhdGVkVGFyZ2V0ICYmIGNvbnRleHQudGFyZ2V0KCkgPT0gY3VycmVudFJl
bGF0ZWROb2RlKSkgeworICAgICAgICAgICAgbV9wYXRoLnNocmluayhjb250ZXh0SW5kZXgpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCpt
X3BhdGhbaV0pLnNldFJlbGF0ZWRUYXJnZXQoY3VycmVudFJlbGF0ZWROb2RlKTsKLSAgICAgICAg
aSsrOwotICAgICAgICBpZiAob3JpZ2luSXNSZWxhdGVkVGFyZ2V0ICYmICZyb290Tm9kZUluT3Jp
Z2luVHJlZVNjb3BlID09IGNvbnRleHROb2RlKQorICAgICAgICB9CisKKyAgICAgICAgY29udGV4
dC5zZXRSZWxhdGVkVGFyZ2V0KGN1cnJlbnRSZWxhdGVkTm9kZSk7CisKKyAgICAgICAgaWYgKFVO
TElLRUxZKHNob3VsZFRyaW1FdmVudFBhdGggJiYgb3JpZ2luSXNSZWxhdGVkVGFyZ2V0ICYmIGNv
bnRleHQubm9kZSgpID09ICZyb290Tm9kZUluT3JpZ2luVHJlZVNjb3BlKSkgeworICAgICAgICAg
ICAgbV9wYXRoLnNocmluayhjb250ZXh0SW5kZXggKyAxKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgcHJldmlvdXNUcmVlU2NvcGUgPSAmY3VycmVudFRyZWVTY29w
ZTsKICAgICB9Ci0gICAgbV9wYXRoLnNocmluayhpKTsKIH0KIAogYm9vbCBFdmVudFBhdGg6Omhh
c0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDZmNjBiYjNhODI2MjhjMmQ2Mzc2ZmY0NDRhYzIzNGQ4NDFmMWJkOWYuLjU1NmQyNTc5ZjFh
MTgxYjQ4NDlmMzBjNzk1ZTQyZWRiNjgzNmM4NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
NS0wOS0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICByZWxh
dGVkTm9kZSBzaG91bGQgYmUgcmV0YXJnZXRlZCByZXNwZWN0aW5nIHNsb3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0aGFy
bmVzcy5qcyB0ZXN0IGZvciByZXRhcmdldGluZyByZWxhdGVkTm9kZS4KKworICAgICAgICAqIGZh
c3Qvc2hhZG93LWRvbS9ldmVudC13aXRoLXJlbGF0ZWQtdGFyZ2V0Lmh0bWw6IEFkZGVkLgorCiAy
MDE1LTA5LTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBHYXJkZW5pbmc6IHNraXAgbWVkaWEgc3RyZWFtIHRlc3RzIGZh
aWxpbmcgYWZ0ZXIgcjE5MDI2Mi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9ldmVudC13aXRoLXJlbGF0ZWQtdGFyZ2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9ldmVudC13aXRoLXJlbGF0ZWQtdGFyZ2V0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNmIwM2EwMjU1ZmUxNjY1YzdlM2RlZWFjODRhMjE0MzQxZDBlYTE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LXdpdGgtcmVs
YXRlZC10YXJnZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKworUEFTUyBGaXJpbmcg
YW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgQjEgd2l0aCBvcGVuIG1vZGUgc2hh
ZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUg
YXQgQjEgd2l0aCBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVu
dCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBhdCBCMWIxIHdpdGggb3BlbiBtb2RlIHNoYWRvdyB0
cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWROb2RlIGF0IEIx
YjEgd2l0aCBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBh
dCBCMWIxIHdpdGggcmVsYXRlZE5vZGUgYXQgQjFhIHdpdGggb3BlbiBtb2RlIHNoYWRvdyB0cmVl
cyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEIxYjEgd2l0aCByZWxhdGVkTm9kZSBhdCBCMWEg
d2l0aCBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBhdCBC
MWEgd2l0aCByZWxhdGVkTm9kZSBhdCBEMSB3aXRoIG9wZW4gbW9kZSBzaGFkb3cgdHJlZXMgCitQ
QVNTIEZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBhdCBEMSB3aXRoIGNs
b3NlZCBtb2RlIHNoYWRvdyB0cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEQxIHdpdGgg
cmVsYXRlZE5vZGUgYXQgQjFhIHdpdGggb3BlbiBtb2RlIHNoYWRvdyB0cmVlcyAKK1BBU1MgRmly
aW5nIGFuIGV2ZW50IGF0IEQxIHdpdGggcmVsYXRlZE5vZGUgYXQgQjFhIHdpdGggY2xvc2VkIG1v
ZGUgc2hhZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRl
ZE5vZGUgYXQgQTFhIHdpdGggb3BlbiBtb2RlIHNoYWRvdyB0cmVlcyAKK1BBU1MgRmlyaW5nIGFu
IGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWROb2RlIGF0IEExYSB3aXRoIGNsb3NlZCBtb2RlIHNo
YWRvdyB0cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWROb2Rl
IGF0IEExYSB3aXRoIG9wZW4gbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVu
dCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBhdCBBMWEgd2l0aCBjbG9zZWQgbW9kZSBzaGFkb3cg
dHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBhdCBB
MWEgd2l0aCBvcGVuIG1vZGUgc2hhZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgYXQg
QjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgQTFhIHdpdGggY2xvc2VkIG1vZGUgc2hhZG93IHRyZWVz
IAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgQTFhIHdp
dGggb3BlbiBtb2RlIHNoYWRvdyB0cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3
aXRoIHJlbGF0ZWROb2RlIGF0IEExYSB3aXRoIGNsb3NlZCBtb2RlIHNoYWRvdyB0cmVlcyAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LXdpdGgtcmVsYXRl
ZC10YXJnZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC13aXRoLXJl
bGF0ZWQtdGFyZ2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVjNzExMzIxMjY2ZDlmZmZiMzBlOGQ5Zjcy
NDA1MDFhYjBhYjNkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9ldmVudC13aXRoLXJlbGF0ZWQtdGFyZ2V0Lmh0bWwKQEAgLTAsMCArMSwzNDMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+U2hhZG93IERPTTogRmly
aW5nIGFuIGV2ZW50IHdpdGggcmVsYXRlZFRhcmdldCBpbnNpZGUgYSBzaGFkb3cgdHJlZTwvdGl0
bGU+CisgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJt
YWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+CisgICAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50
PSJUaGUgcmV0YXJnZXRpbmcgYWxnb3JpdGhtIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHJlbGF0aXZl
IHRhcmdldHMiPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI3JldGFyZ2V0aW5nLXJlbGF0ZWR0YXJnZXQi
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorICAgIDxzY3JpcHQ+CisKKyAgICAgICAgZnVuY3Rpb24gZGlzcGF0Y2hFdmVu
dFdpdGhMb2coc2hhZG93LCB0YXJnZXQsIGV2ZW50KSB7CisgICAgICAgICAgICB2YXIgZXZlbnRQ
YXRoID0gW107CisgICAgICAgICAgICB2YXIgcmVsYXRlZFRhcmdldHMgPSBbXTsKKworICAgICAg
ICAgICAgdmFyIGF0dGFjaGVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIG5vZGVL
ZXkgaW4gc2hhZG93KSB7CisgICAgICAgICAgICAgICAgdmFyIHN0YXJ0aW5nTm9kZSA9IHNoYWRv
d1tub2RlS2V5XTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBub2RlID0gc3RhcnRpbmdOb2Rl
OyBub2RlOyBub2RlID0gbm9kZS5wYXJlbnROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdHRhY2hlZE5vZGVzLmluZGV4T2Yobm9kZSkgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBhdHRhY2hlZE5vZGVzLnB1c2gobm9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudC50eXBl
LCAoZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFBhdGgu
cHVzaCh0aGlzLmxhYmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXRz
LnB1c2goZXZlbnQucmVsYXRlZFRhcmdldC5sYWJlbCk7CisgICAgICAgICAgICAgICAgICAgIH0p
LmJpbmQobm9kZSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisgICAgICAgICAgICByZXR1cm4g
e2V2ZW50UGF0aDogZXZlbnRQYXRoLCByZWxhdGVkVGFyZ2V0czogcmVsYXRlZFRhcmdldHN9Owor
ICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgLVNSOiBTaGFkb3dSb290ICAtUzogU2xv
dAorICAgICAgICBBIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQS1TUgorICAgICAg
ICArIEIgLS0tLS0tLS0tLS0tIEItU1IgICAgICAgICAgICAgKyBBMSAtLS0gQTEtU1IKKyAgICAg
ICAgICArIEMgICAgICAgICAgICArIEIxIC0tLSBCMS1TUiAgICsgQTItUyAgICsgQTFhCisgICAg
ICAgICAgKyBEIC0tLSBELVNSICAgKyBCMWEgICAgKyBCMWIgLS0tIEIxYi1TUgorICAgICAgICAg
ICAgICAgICAgKyBEMSAgICAgICAgICAgICsgQjFjLVMgICArIEIxYjEKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBCMWIyCisgICAgICAgICovCisgICAgICAg
IGZ1bmN0aW9uIGNyZWF0ZVRlc3RUcmVlKG1vZGUpIHsKKyAgICAgICAgICAgIHZhciBuYW1lZE5v
ZGVzID0ge307CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVsZW1lbnQobmFtZSkgeworICAgICAg
ICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lLmluZGV4
T2YoJy1TJykgPiAwID8gJ3Nsb3QnIDogJ2RpdicpOworICAgICAgICAgICAgICAgIGVsZW1lbnQu
bGFiZWwgPSBuYW1lOworICAgICAgICAgICAgICAgIG5hbWVkTm9kZXNbbmFtZV0gPSBlbGVtZW50
OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gYXJndW1lbnRzW2ldOworICAg
ICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGl0ZW0pID09ICdmdW5jdGlvbicpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpdGVtKGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGl0ZW0pOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc2hhZG93KG5hbWUpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsg
aSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4u
cHVzaChhcmd1bWVudHNbaV0pOworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZWxl
bWVudCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGVsZW1lbnQuYXR0
YWNoU2hhZG93KHttb2RlOiBtb2RlfSk7CisgICAgICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3Qu
bGFiZWwgPSBuYW1lOworICAgICAgICAgICAgICAgICAgICBuYW1lZE5vZGVzW25hbWVdID0gc2hh
ZG93Um9vdDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgY2hpbGQgb2YgY2hpbGRyZW4p
CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGNoaWxkKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBob3N0
ID0gZWxlbWVudCgnQScsCisgICAgICAgICAgICAgICAgc2hhZG93KCdBLVNSJywKKyAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudCgnQTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93
KCdBMS1TUicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgnQTFhJykpKSwK
KyAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgnQTItUycpCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICBlbGVtZW50KCdCJywKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93
KCdCLVNSJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0IxJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaGFkb3coJ0IxLVNSJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudCgnQjFiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoYWRvdygnQjFiLVNSJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50KCdCMWIxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudCgnQjFiMicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnQoJ0IxYy1TJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQoJ0IxYScpKSksCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0MnKSwKKyAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudCgnRCcsCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3co
J0QtU1InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0QxJykpKSkpOwor
CisgICAgICAgICAgICByZXR1cm4gbmFtZWROb2RlczsKKyAgICAgICAgfQorCisgICAgICAgIC8q
CisgICAgICAgIC1TUjogU2hhZG93Um9vdCAgLVM6IFNsb3QgIHRhcmdldDogKH4pICByZWxhdGVk
VGFyZ2V0OiBbfl0gICo6IGluZGljYXRlcyBzdGFydCAgZGlnaXQ6IGV2ZW50IHBhdGggb3JkZXIK
KyAgICAgICAgQSAoOCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEEtU1IgKDcpCisgICAgICAgICsgQiAoNSkgWzUtOF0gLS0tIEItU1IgKDQpICAgICAgICAg
ICAgICAgICAgICAgICAgICArIEExIC0tLS0tLS0tIEExLVNSCisgICAgICAgICAgKyBDICAgICAg
ICAgICAgICsgQjEgKDMpIFsqOyAwLTRdIC0tLSBCMS1TUiAoMikgICArIEEyLVMgKDYpICAgICsg
QTFhCisgICAgICAgICAgKyBEIC0tLSBELVNSICAgICAgKyBCMWEgKCo7IDApICAgICAgICArIEIx
YiBbMSwyXSAtLS0gQjFiLVNSCisgICAgICAgICAgICAgICAgICArIEQxICAgICAgICAgICAgICAg
ICAgICAgICAgICArIEIxYy1TICgxKSAgICAgKyBCMWIxCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBCMWIyCisgICAgICAg
ICovCisgICAgICAgIGZ1bmN0aW9uIHRlc3RFdmVudEF0QjFhV2l0aEIxYShtb2RlKSB7CisgICAg
ICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPSBj
cmVhdGVUZXN0VHJlZShtb2RlKTsKKworICAgICAgICAgICAgICAgIGxvZyA9IGRpc3BhdGNoRXZl
bnRXaXRoTG9nKG5vZGVzLCBub2Rlcy5CMWEsIG5ldyBNb3VzZUV2ZW50KCdmb28nLCB7YnViYmxl
czogdHJ1ZSwgcmVsYXRlZFRhcmdldDogbm9kZXMuQjF9KSk7CisKKyAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5ldmVudFBhdGgsCisgICAgICAgICAgICAgICAgICAgIFsn
QjFhJywgJ0IxYy1TJywgJ0IxLVNSJywgJ0IxJywgJ0ItU1InLCAnQicsICdBMi1TJywgJ0EtU1In
LCAnQSddLCAnVGhlIGV2ZW50IHBhdGggbXVzdCBiZSBjb3JyZWN0LicpOworICAgICAgICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nLnJlbGF0ZWRUYXJnZXRzLAorICAgICAgICAgICAg
ICAgICAgICBbJ0IxJywgICdCMScsICAgICdCMScsICAgICdCMScsICdCMScsICAgJ0InLCAnQics
ICAgICdCJywgICAgJ0InXSwgJ1RoZSByZWxhdGVkIHRhcmdldHMgbXVzdCBiZSBjb3JyZWN0Licp
OworCisgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWRO
b2RlIGF0IEIxIHdpdGggJyArIG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWVzJyk7CisgICAgICAg
IH0KKworICAgICAgICB0ZXN0RXZlbnRBdEIxYVdpdGhCMWEoJ29wZW4nKTsKKyAgICAgICAgdGVz
dEV2ZW50QXRCMWFXaXRoQjFhKCdjbG9zZWQnKTsKKworICAgICAgICAvKgorICAgICAgICAtU1I6
IFNoYWRvd1Jvb3QgIC1TOiBTbG90ICB0YXJnZXQ6ICh+KSAgcmVsYXRlZFRhcmdldDogW35dICAq
OiBpbmRpY2F0ZXMgc3RhcnQgIGRpZ2l0OiBldmVudCBwYXRoIG9yZGVyCisgICAgICAgIEEgKDgp
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEEtU1IgKDcpCisg
ICAgICAgICsgQiAoNSkgWzUtOF0gLS0tIEItU1IgKDQpICAgICAgICAgICAgICAgICAgICAgICAg
ICsgQTEgLS0tLS0tIEExLVNSCisgICAgICAgICAgKyBDICAgICAgICAgICAgICsgQjEgKDMpIFsw
LDMtNF0gLS0tIEIxLVNSICgyKSAgICsgQTItUyAoNikgICsgQTFhCisgICAgICAgICAgKyBEIC0t
LSBELVNSICAgICAgKyBCMWEgKCo7IDApICAgICAgICsgQjFiIFsxLDJdIC0tLSBCMWItU1IKKyAg
ICAgICAgICAgICAgICAgICsgRDEgICAgICAgICAgICAgICAgICAgICAgICAgKyBCMWMtUyAoMSkg
ICAgICsgQjFiMSBbKl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgQjFiMgorICAgICAgICAqLworICAgICAgICBmdW5jdGlv
biB0ZXN0RXZlbnRBdEIxYVdpdGhCMWIxKG1vZGUpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IGNyZWF0ZVRlc3RUcmVlKG1vZGUp
OworCisgICAgICAgICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVudFdpdGhMb2cobm9kZXMsIG5v
ZGVzLkIxYSwgbmV3IE1vdXNlRXZlbnQoJ2ZvbycsIHtidWJibGVzOiB0cnVlLCByZWxhdGVkVGFy
Z2V0OiBub2Rlcy5CMWIxfSkpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhsb2cuZXZlbnRQYXRoLAorICAgICAgICAgICAgICAgICAgICBbJ0IxYScsICdCMWMtUycsICdC
MS1TUicsICdCMScsICdCLVNSJywgJ0InLCAnQTItUycsICdBLVNSJywgJ0EnXSwgJ1RoZSBldmVu
dCBwYXRoIG11c3QgYmUgY29ycmVjdC4nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZy5yZWxhdGVkVGFyZ2V0cywKKyAgICAgICAgICAgICAgICAgICAgWydCMScsICAn
QjFiJywgICAnQjFiJywgICAnQjEnLCAnQjEnLCAgICdCJywgJ0InLCAgICAnQicsICAgICdCJ10s
ICdUaGUgcmVsYXRlZCB0YXJnZXRzIG11c3QgYmUgY29ycmVjdC4nKTsKKworICAgICAgICAgICAg
fSwgJ0ZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBhdCBCMWIxIHdpdGgg
JyArIG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWVzJyk7CisgICAgICAgIH0KKworICAgICAgICB0
ZXN0RXZlbnRBdEIxYVdpdGhCMWIxKCdvcGVuJyk7CisgICAgICAgIHRlc3RFdmVudEF0QjFhV2l0
aEIxYjEoJ2Nsb3NlZCcpOworCisgICAgICAgIC8qCisgICAgICAgIC1TUjogU2hhZG93Um9vdCAg
LVM6IFNsb3QgIHRhcmdldDogKH4pICByZWxhdGVkVGFyZ2V0OiBbfl0gICo6IGluZGljYXRlcyBz
dGFydCAgZGlnaXQ6IGV2ZW50IHBhdGggb3JkZXIKKyAgICAgICAgQSAoOSkgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBLVNSICg4KQorICAg
ICAgICArIEIgKDYpIFs2LTldIC0tLSBCLVNSICg1KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICsgQTEgLS0tLS0tIEExLVNSCisgICAgICAgICAgKyBDICAgICAgICAgICAgICsg
QjEgKDQpIC0tLS0tLS0tLSBCMS1TUiAoMykgICAgICAgICAgICAgICAgKyBBMi1TICg3KSAgKyBB
MWEKKyAgICAgICAgICArIEQgLS0tIEQtU1IgICAgICArIEIxYSBbKjsgMC01XSAgICsgQjFiICgy
KSAtLS0gQjFiLVNSICgxKQorICAgICAgICAgICAgICAgICAgKyBEMSAgICAgICAgICAgICAgICAg
ICAgICAgKyBCMWMtUyAgICAgICArIEIxYjEgKCo7IDApCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQjFiMgorICAgICAgICAqLwor
ICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRBdEIxYjFXaXRoQjFhKG1vZGUpIHsKKyAgICAgICAg
ICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IGNyZWF0
ZVRlc3RUcmVlKG1vZGUpOworCisgICAgICAgICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVudFdp
dGhMb2cobm9kZXMsIG5vZGVzLkIxYjEsIG5ldyBNb3VzZUV2ZW50KCdmb28nLCB7YnViYmxlczog
dHJ1ZSwgcmVsYXRlZFRhcmdldDogbm9kZXMuQjFhfSkpOworCisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2cuZXZlbnRQYXRoLAorICAgICAgICAgICAgICAgICAgICBbJ0Ix
YjEnLCAnQjFiLVNSJywgJ0IxYicsICdCMS1TUicsICdCMScsICdCLVNSJywgJ0InLCAnQTItUycs
ICdBLVNSJywgJ0EnXSwgJ1RoZSBldmVudCBwYXRoIG11c3QgYmUgY29ycmVjdC4nKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5yZWxhdGVkVGFyZ2V0cywKKyAgICAg
ICAgICAgICAgICAgICAgWydCMWEnLCAgJ0IxYScsICAgICdCMWEnLCAnQjFhJywgICAnQjFhJywg
J0IxYScsICdCJywgJ0InLCAgICAnQicsICAgICdCJ10sICdUaGUgcmVsYXRlZCB0YXJnZXRzIG11
c3QgYmUgY29ycmVjdC4nKTsKKworICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBhdCBC
MWIxIHdpdGggcmVsYXRlZE5vZGUgYXQgQjFhIHdpdGggJyArIG1vZGUgKyAnIG1vZGUgc2hhZG93
IHRyZWVzJyk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0RXZlbnRBdEIxYjFXaXRoQjFhKCdv
cGVuJyk7CisgICAgICAgIHRlc3RFdmVudEF0QjFiMVdpdGhCMWEoJ2Nsb3NlZCcpOworCisgICAg
ICAgIC8qCisgICAgICAgIC1TUjogU2hhZG93Um9vdCAgLVM6IFNsb3QgIHRhcmdldDogKH4pICBy
ZWxhdGVkVGFyZ2V0OiBbfl0gICo6IGluZGljYXRlcyBzdGFydCAgZGlnaXQ6IGV2ZW50IHBhdGgg
b3JkZXIKKyAgICAgICAgQSAoOCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQS1TUiAoNykKKyAgICAgICAgKyBCICg1KSAtLS0tLS0tLS0tLS0tLSBC
LVNSICg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgKyBBMSAtLS0tLS0tLSBBMS1TUgorICAg
ICAgICAgICsgQyAgICAgICAgICAgICAgICAgICsgQjEgKDMpIFsqOyAwLTRdIC0tLSBCMS1TUiAo
MikgICArIEEyLVMgKDYpICAgICsgQTFhCisgICAgICAgICAgKyBEIFswLThdIC0tLSBELVNSICAg
ICArIEIxYSAoKjsgMCkgICAgICAgICsgQjFiIC0tLS0tLSBCMWItU1IKKyAgICAgICAgICAgICAg
ICAgICAgICAgICsgRDEgWypdICAgICAgICAgICAgICAgICAgICAgKyBCMWMtUyAoMSkgICsgQjFi
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyBCMWIyCisgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIHRlc3RFdmVu
dEF0QjFhV2l0aEQxKG1vZGUpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIHZhciBub2RlcyA9IGNyZWF0ZVRlc3RUcmVlKG1vZGUpOworCisgICAgICAg
ICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVudFdpdGhMb2cobm9kZXMsIG5vZGVzLkIxYSwgbmV3
IE1vdXNlRXZlbnQoJ2ZvbycsIHtidWJibGVzOiB0cnVlLCByZWxhdGVkVGFyZ2V0OiBub2Rlcy5E
MX0pKTsKKworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nLmV2ZW50UGF0
aCwKKyAgICAgICAgICAgICAgICAgICAgWydCMWEnLCAnQjFjLVMnLCAnQjEtU1InLCAnQjEnLCAn
Qi1TUicsICdCJywgJ0EyLVMnLCAnQS1TUicsICdBJ10sICdUaGUgZXZlbnQgcGF0aCBtdXN0IGJl
IGNvcnJlY3QuJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cucmVs
YXRlZFRhcmdldHMsCisgICAgICAgICAgICAgICAgICAgIFsnRCcsICdEJywgJ0QnLCAnRCcsICdE
JywgJ0QnLCAnRCcsICdEJywgJ0QnXSwgJ1RoZSByZWxhdGVkIHRhcmdldHMgbXVzdCBiZSBjb3Jy
ZWN0LicpOworCisgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJl
bGF0ZWROb2RlIGF0IEQxIHdpdGggJyArIG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWVzJyk7Cisg
ICAgICAgIH0KKworICAgICAgICB0ZXN0RXZlbnRBdEIxYVdpdGhEMSgnb3BlbicpOworICAgICAg
ICB0ZXN0RXZlbnRBdEIxYVdpdGhEMSgnY2xvc2VkJyk7CisKKyAgICAgICAgLyoKKyAgICAgICAg
LVNSOiBTaGFkb3dSb290ICAtUzogU2xvdCAgdGFyZ2V0OiAofikgIHJlbGF0ZWRUYXJnZXQ6IFt+
XSAgKjogaW5kaWNhdGVzIHN0YXJ0ICBkaWdpdDogZXZlbnQgcGF0aCBvcmRlcgorICAgICAgICBB
ICg2KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBLVNSICg1KQorICAgICAg
ICArIEIgKDMpIFswXSAtLS0tLS0tLS0tLSBCLVNSICAgICAgICAgICAgICArIEExIC0tLS0tLSBB
MS1TUgorICAgICAgICAgICsgQyAgICAgICAgICAgICAgICAgICArIEIxIC0tLS0tIEIxLVNSICAr
IEEyLVMgKDQpICArIEExYQorICAgICAgICAgICsgRCAoMikgLS0tIEQtU1IgKDEpICArIEIxYSBb
Kl0gICsgQjFiIC0tLSBCMWItU1IKKyAgICAgICAgICAgICAgICAgICAgICAgICsgRDEgKCo7IDAp
ICAgICAgICAgKyBCMWMtUyAgICsgQjFiMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKyBCMWIyCisgICAgICAgICovCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RFdmVudEF0RDFXaXRoQjFhKG1vZGUpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IGNyZWF0ZVRlc3RUcmVlKG1vZGUp
OworCisgICAgICAgICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVudFdpdGhMb2cobm9kZXMsIG5v
ZGVzLkQxLCBuZXcgTW91c2VFdmVudCgnZm9vJywge2J1YmJsZXM6IHRydWUsIHJlbGF0ZWRUYXJn
ZXQ6IG5vZGVzLkIxYX0pKTsKKworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nLmV2ZW50UGF0aCwKKyAgICAgICAgICAgICAgICAgICAgWydEMScsICdELVNSJywgJ0QnLCAn
QicsICdBMi1TJywgJ0EtU1InLCAnQSddLCAnVGhlIGV2ZW50IHBhdGggbXVzdCBiZSBjb3JyZWN0
LicpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nLnJlbGF0ZWRUYXJn
ZXRzLAorICAgICAgICAgICAgICAgICAgICBbJ0InLCAnQicsICdCJywgJ0InLCAnQicsICdCJywg
J0InXSwgJ1RoZSByZWxhdGVkIHRhcmdldHMgbXVzdCBiZSBjb3JyZWN0LicpOworCisgICAgICAg
ICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGF0IEQxIHdpdGggcmVsYXRlZE5vZGUgYXQgQjFhIHdp
dGggJyArIG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWVzJyk7CisgICAgICAgIH0KKworICAgICAg
ICB0ZXN0RXZlbnRBdEQxV2l0aEIxYSgnb3BlbicpOworICAgICAgICB0ZXN0RXZlbnRBdEQxV2l0
aEIxYSgnY2xvc2VkJyk7CisKKyAgICAgICAgLyoKKyAgICAgICAgLVNSOiBTaGFkb3dSb290ICAt
UzogU2xvdCAgdGFyZ2V0OiAofikgIHJlbGF0ZWRUYXJnZXQ6IFt+XSAgKjogaW5kaWNhdGVzIHN0
YXJ0ICBkaWdpdDogZXZlbnQgcGF0aCBvcmRlcgorICAgICAgICBBICg4KSBbMC01LDhdIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQS1TUiAoNykKKyAgICAgICAgKyBC
ICg1KSAgLS0tLS0tLSBCLVNSICg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQTEg
WzYsN10gLS0tIEExLVNSCisgICAgICAgICAgKyBDICAgICAgICAgICAgKyBCMSAoMykgLS0tLS0g
QjEtU1IgKDIpICAgICAgICAgICAgICArIEEyLVMgKDYpICAgICArIEExYSBbKl0KKyAgICAgICAg
ICArIEQgLS0tIEQtU1IgICArIEIxYSAoKjsgMCkgICArIEIxYiAtLS0tLS0tIEIxYi1TUgorICAg
ICAgICAgICAgICAgICAgKyBEMSAgICAgICAgICAgICAgICAgICsgQjFjLVMgKDEpICAgKyBCMWIx
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
IEIxYjIKKyAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gdGVzdEV2ZW50QXRCMWFXaXRoQTFh
KG1vZGUpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IHZhciBub2RlcyA9IGNyZWF0ZVRlc3RUcmVlKG1vZGUpOworCisgICAgICAgICAgICAgICAgbG9n
ID0gZGlzcGF0Y2hFdmVudFdpdGhMb2cobm9kZXMsIG5vZGVzLkIxYSwgbmV3IE1vdXNlRXZlbnQo
J2ZvbycsIHtidWJibGVzOiB0cnVlLCByZWxhdGVkVGFyZ2V0OiBub2Rlcy5BMWF9KSk7CisKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5ldmVudFBhdGgsCisgICAgICAg
ICAgICAgICAgICAgIFsnQjFhJywgJ0IxYy1TJywgJ0IxLVNSJywgJ0IxJywgJ0ItU1InLCAnQics
ICdBMi1TJywgJ0EtU1InLCAnQSddLCAnVGhlIGV2ZW50IHBhdGggbXVzdCBiZSBjb3JyZWN0Licp
OworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nLnJlbGF0ZWRUYXJnZXRz
LAorICAgICAgICAgICAgICAgICAgICBbJ0EnLCAgICdBJywgICAgICdBJywgICAgICdBJywgICAn
QScsICAgJ0EnLCAnQTEnLCAgICdBMScsICAgJ0EnXSwgJ1RoZSByZWxhdGVkIHRhcmdldHMgbXVz
dCBiZSBjb3JyZWN0LicpOworCisgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGF0IEIx
YSB3aXRoIHJlbGF0ZWROb2RlIGF0IEExYSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0
cmVlcycpOworICAgICAgICB9CisKKyAgICAgICAgdGVzdEV2ZW50QXRCMWFXaXRoQTFhKCdvcGVu
Jyk7CisgICAgICAgIHRlc3RFdmVudEF0QjFhV2l0aEExYSgnY2xvc2VkJyk7CisKKyAgICAgICAg
LyoKKyAgICAgICAgLVNSOiBTaGFkb3dSb290ICAtUzogU2xvdCAgdGFyZ2V0OiAofikgIHJlbGF0
ZWRUYXJnZXQ6IFt+XSAgKjogaW5kaWNhdGVzIHN0YXJ0ICBkaWdpdDogZXZlbnQgcGF0aCBvcmRl
cgorICAgICAgICBBICg0KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBBLVNSICgzKQorICAgICAgICArIEIgWzAtNF0gIC0tLS0tIEItU1IgICAgICAgICAgICAgICAg
ICAgICAgICAgICArIEExICgyKSAtLS0gQTEtU1IgKDEpCisgICAgICAgICAgKyBDICAgICAgICAg
ICAgKyBCMSAtLS0tLS0tIEIxLVNSICAgICAgICAgICAgICsgQTItUyAgICAgICArIEExYSAoKjsg
MCkKKyAgICAgICAgICArIEQgLS0tIEQtU1IgICAgICsgQjFhIFsqXSAgKyBCMWIgLS0tIEIxYi1T
UgorICAgICAgICAgICAgICAgICAgKyBEMSAgICAgICAgICAgICAgICArIEIxYy1TICAgKyBCMWIx
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEIxYjIK
KyAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gdGVzdEV2ZW50QXRBMWFXaXRoQjFhKG1vZGUp
IHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBu
b2RlcyA9IGNyZWF0ZVRlc3RUcmVlKG1vZGUpOworCisgICAgICAgICAgICAgICAgbG9nID0gZGlz
cGF0Y2hFdmVudFdpdGhMb2cobm9kZXMsIG5vZGVzLkExYSwgbmV3IE1vdXNlRXZlbnQoJ2Zvbycs
IHtidWJibGVzOiB0cnVlLCByZWxhdGVkVGFyZ2V0OiBub2Rlcy5CMWF9KSk7CisKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5ldmVudFBhdGgsCisgICAgICAgICAgICAg
ICAgICAgIFsnQTFhJywgJ0ExLVNSJywgJ0ExJywgJ0EtU1InLCAnQSddLCAnVGhlIGV2ZW50IHBh
dGggbXVzdCBiZSBjb3JyZWN0LicpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobG9nLnJlbGF0ZWRUYXJnZXRzLAorICAgICAgICAgICAgICAgICAgICBbJ0InLCAnQicsICdC
JywgJ0InLCAnQiddLCAnVGhlIHJlbGF0ZWQgdGFyZ2V0cyBtdXN0IGJlIGNvcnJlY3QuJyk7CisK
KyAgICAgICAgICAgIH0sICdGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUg
YXQgQTFhIHdpdGggJyArIG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWVzJyk7CisgICAgICAgIH0K
KworICAgICAgICB0ZXN0RXZlbnRBdEExYVdpdGhCMWEoJ29wZW4nKTsKKyAgICAgICAgdGVzdEV2
ZW50QXRBMWFXaXRoQjFhKCdjbG9zZWQnKTsKKworICAgICAgICAvKgorICAgICAgICAtU1I6IFNo
YWRvd1Jvb3QgIC1TOiBTbG90ICB0YXJnZXQ6ICh+KSAgcmVsYXRlZFRhcmdldDogW35dICAqOiBp
bmRpY2F0ZXMgc3RhcnQgIGRpZ2l0OiBldmVudCBwYXRoIG9yZGVyCisgICAgICAgIEEgKDgpIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEEtU1IgKDcpCisgICAgICAgICsgQiAo
NSkgIC0tLS0tIEItU1IgKDQpICAgICAgICAgICAgICAgICAgICsgQTItUyAoNikKKyAgICAgICAg
ICArIEMgICAgICAgICAgKyBCMSAoMykgLS0tLS0gQjEtU1IgKDIpCisgICAgICAgICAgKyBEIC0t
LSBELVNSICAgKyBCMWEgKCo7IDApICsgQjFiIC0tLS0tLS0gQjFiLVNSCisgICAgICAgICAgICAg
ICAgICArIEQxICAgICAgICAgICAgICAgICsgQjFjLVMgKDEpICAgKyBCMWIxCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBCMWIyCisgICAgICAg
IEExIFswLTZdIC0tLSBBMS1TUgorICAgICAgICAgICAgICAgICAgICsgQTFhIFsqXQorICAgICAg
ICAqLworICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRBdEIxYVdpdGhEZXRhY2hlZEExYShtb2Rl
KSB7CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIg
bm9kZXMgPSBjcmVhdGVUZXN0VHJlZShtb2RlKTsKKworICAgICAgICAgICAgICAgIG5vZGVzWydB
LVNSJ10ucmVtb3ZlQ2hpbGQobm9kZXMuQTEpOworICAgICAgICAgICAgICAgIGxvZyA9IGRpc3Bh
dGNoRXZlbnRXaXRoTG9nKG5vZGVzLCBub2Rlcy5CMWEsIG5ldyBNb3VzZUV2ZW50KCdmb28nLCB7
YnViYmxlczogdHJ1ZSwgcmVsYXRlZFRhcmdldDogbm9kZXMuQTFhfSkpOworCisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cuZXZlbnRQYXRoLAorICAgICAgICAgICAgICAg
ICAgICBbJ0IxYScsICdCMWMtUycsICdCMS1TUicsICdCMScsICdCLVNSJywgJ0InLCAnQTItUycs
ICdBLVNSJywgJ0EnXSwgJ1RoZSBldmVudCBwYXRoIG11c3QgYmUgY29ycmVjdC4nKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5yZWxhdGVkVGFyZ2V0cywKKyAgICAg
ICAgICAgICAgICAgICAgWydBMScsICdBMScsICdBMScsICdBMScsICdBMScsICdBMScsICdBMScs
ICdBMScsICdBMSddLCAnVGhlIHJlbGF0ZWQgdGFyZ2V0cyBtdXN0IGJlIGNvcnJlY3QuJyk7CisK
KyAgICAgICAgICAgIH0sICdGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUg
YXQgQTFhIHdpdGggJyArIG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWVzJyk7CisgICAgICAgIH0K
KworICAgICAgICB0ZXN0RXZlbnRBdEIxYVdpdGhEZXRhY2hlZEExYSgnb3BlbicpOworICAgICAg
ICB0ZXN0RXZlbnRBdEIxYVdpdGhEZXRhY2hlZEExYSgnY2xvc2VkJyk7CisKKyAgICAgICAgLyoK
KyAgICAgICAgLVNSOiBTaGFkb3dSb290ICAtUzogU2xvdCAgdGFyZ2V0OiAofikgIHJlbGF0ZWRU
YXJnZXQ6IFt+XSAgKjogaW5kaWNhdGVzIHN0YXJ0ICBkaWdpdDogZXZlbnQgcGF0aCBvcmRlcgor
ICAgICAgICBBIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEEtU1IKKyAgICAg
ICAgKyBCIFswLTNdICAtLS0tLSBCLVNSICAgICAgICAgICAgICAgICArIEEyLVMKKyAgICAgICAg
ICArIEMgICAgICAgICAgICArIEIxIC0tLS0tLS0tIEIxLVNSCisgICAgICAgICAgKyBEIC0tLSBE
LVNSICAgICArIEIxYSBbKl0gICArIEIxYiAtLS0gQjFiLVNSCisgICAgICAgICAgICAgICAgICAr
IEQxICAgICAgICAgICAgICAgICArIEIxYy1TICAgKyBCMWIxCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBCMWIyCisgICAgICAgIEExICgyKSAtLS0g
QTEtU1IgKDEpCisgICAgICAgICAgICAgICAgICAgKyBBMWEgKCo7IDApCisgICAgICAgICovCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RFdmVudEF0QTFhV2l0aERldGFjaGVkQjFhKG1vZGUpIHsKKyAg
ICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBub2RlcyA9
IGNyZWF0ZVRlc3RUcmVlKG1vZGUpOworCisgICAgICAgICAgICAgICAgbm9kZXNbJ0EtU1InXS5y
ZW1vdmVDaGlsZChub2Rlcy5BMSk7CisgICAgICAgICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVu
dFdpdGhMb2cobm9kZXMsIG5vZGVzLkExYSwgbmV3IE1vdXNlRXZlbnQoJ2ZvbycsIHtidWJibGVz
OiB0cnVlLCByZWxhdGVkVGFyZ2V0OiBub2Rlcy5CMWF9KSk7CisKKyAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5ldmVudFBhdGgsICAgICAgWydBMWEnLCAnQTEtU1InLCAn
QTEnXSwgJ1RoZSBldmVudCBwYXRoIG11c3QgYmUgY29ycmVjdC4nKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5yZWxhdGVkVGFyZ2V0cywgWydCJywgICAnQicsICAg
ICAnQicgXSwgJ1RoZSByZWxhdGVkIHRhcmdldHMgbXVzdCBiZSBjb3JyZWN0LicpOworCisgICAg
ICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWROb2RlIGF0IEEx
YSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0cmVlcycpOworICAgICAgICB9CisKKyAg
ICAgICAgdGVzdEV2ZW50QXRBMWFXaXRoRGV0YWNoZWRCMWEoJ29wZW4nKTsKKyAgICAgICAgdGVz
dEV2ZW50QXRBMWFXaXRoRGV0YWNoZWRCMWEoJ2Nsb3NlZCcpOworCisgICAgPC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262018</attachid>
            <date>2015-09-28 14:17:31 -0700</date>
            <delta_ts>2015-09-28 15:11:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-149591-20150928141709.patch</filename>
            <type>text/plain</type>
            <size>35991</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcwOGE5ZTE1ZWFiMThm
ZDM4N2ZlOTE4YjAzODk2N2RjMjhiYjJhOC4uNzk0OWI5YjAzNGEwZmNlODNlMjJkYTk2MWQxYTI0
MzdjODMxMzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTA5LTI3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHJlbGF0ZWROb2RlIHNob3Vs
ZCBiZSByZXRhcmdldGVkIHJlc3BlY3Rpbmcgc2xvdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFu
dHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV0YXJnZXRzIHJlbGF0ZWROb2Rl
IHdpdGggcmVzcGVjdCB0byBzaGFkb3cgYm91bmRhcmllcyBhZnRlciByMTkwMjE0IGFzIHNwZWNp
ZmllZCBpbgorICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVj
L3NoYWRvdy8jcmV0YXJnZXRpbmctcmVsYXRlZHRhcmdldAorCisgICAgICAgIE5haXZlbHkgaW1w
bGVtZW50aW5nIHRoZSBzcGVjJ2VkIGJlaGF2aW9yIGNhbiByZXN1bHQgaW4gTyhuXjIpIGJlaGF2
aW9yIHNpbmNlIHdlIG5lZWQgdG8gZmluZCB0aGUgY29tbW9uIHRyZWUgc2NvcGUKKyAgICAgICAg
YW5jZXN0b3IgZm9yIGVhY2ggdGFyZ2V0IGluIHRoZSBldmVudCBwYXRoLiBUaGlzIHBhdGNoIGF2
b2lkcyB0aGlzIGJ5IGltcGxlbWVudGluZyBhbiBPKDEpIGluY3JlbWVudGFsIHVwZGF0ZSBzdGVw
CisgICAgICAgIGZvciB3aGVuIHRhcmdldCdzIHRyZWUgc2NvcGUgY2hhbmdlcyBpbiB0aGUgZXZl
bnQgcGF0aC4gU2VlIHRoZSBkZXNjcmlwdGlvbiBmb3IgbW92ZVRvTmV3VHJlZVNjb3BlIGJlbG93
LgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9ldmVudC13aXRoLXJlbGF0ZWQtdGFy
Z2V0Lmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuaDogUmVwbGFjZWQgdG9Nb3Vz
ZU9yRm9jdXNFdmVudENvbnRleHQgYnkgZG93bmNhc3Q8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0
Pi4KKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcik6IFJlbW92ZWQgdGhlIGNvZGUgZm9yIHJlbGF0ZWRO
b2RlLiBUaGlzIGNsYXNzIGlzIG5vdyBvbmx5IHVzZWQgZm9yIHRvdWNoIGV2ZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50UGF0aCk6IEFkZGVkIG1fZXZlbnQgYXMgYSBtZW1iZXIgdmFyaWFi
bGUuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcik6IEFkZGVkLgor
CisgICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWROb2RlUmV0
YXJnZXRlcik6IERvZXMgdGhlIGluaXRpYWwgcmV0YXJnZXRpbmcgb2YgcmVsYXRlZE5vZGUuIFdo
ZW4gdGhlCisgICAgICAgIHRyZWUgc2NvcGUgb2YgcmVsYXRlZE5vZGUgYW5kIHRoZSB0YXJnZXQg
YXJlIHRoZSBzYW1lLCB3ZSBpbW1lZGlhdGVseSBleGl0IHdpdGhvdXQgY29sbGVjdGluZyBhbmNl
c3RvciB0cmVlIHNjb3BlcworICAgICAgICBvZiByZWxhdGVkTm9kZSBhcyBhbiBvcHRpbWl6YXRp
b24uIFdlIGFsc28gc3BlY2lhbCBjYXNlIHdoZW4gdGhlIHJlbGF0ZWROb2RlIGFuZCB0aGUgdGFy
Z2V0IGFyZSBpbiB0d28gZGlmZmVyZW50CisgICAgICAgIGRvY3VtZW50cyAocmVsYXRlZE5vZGUg
c2hvdWxkIGJlIG51bGxwdHIpIGFuZCB3aGVuIG9uZSBpcyBpbiBkb2N1bWVudCBhbmQgdGhlIG90
aGVyIG9uZSBpcyBub3QgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIChyZWxhdGVkTm9kZSBzaG91
bGQgYmUgdGhlIGhvc3Qgb2YgdGhlIG91dGVybW9zdCBzaGFkb3cgcm9vdCkuIE90aGVyd2lzZSB3
ZSBoYXZlIHRvIGRvIHRoZSByZWFsIHdvcmsgYnkgY29sbGVjdGluZworICAgICAgICBhbGwgdHJl
ZSBzY29wZSBhbmNlc3RvcnMgYW5kIHdhbGtpbmcgZG93bndhcmRzIGZyb20gdGhlIGRvY3VtZW50
IHRyZWUgc2NvcGUgKG5vdGUgdGFyZ2V0IGFuZCByZWxhdGVkTm9kZSBzaGFyZSB0aGUKKyAgICAg
ICAgc2FtZSBkb2N1bWVudCBzY29wZSBoZXJlIHNpbmNlIHdlIHdvdWxkIGhhdmUgZXhpdGVkIGVh
cmx5IG90aGVyd2lzZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRl
cjo6Y3VycmVudE5vZGUpOiBSZXR1cm5lZCByZWxhdGVkTm9kZSByZXRhcmdldGVkIGZvciB0aGUg
Y3VycmVudCB0cmVlIHNjb3BlLgorCisgICAgICAgIChXZWJDb3JlOjpSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6Om1vdmVUb05ld1RyZWVTY29wZSk6IE1vdmVzIHRvIGEgbmV3IHRyZWUgc2NvcGUuIElm
IHRoZSBvcmlnaW5hbCB0YXJnZXQgYW5kCisgICAgICAgIHJlbGF0ZWROb2RlIHdlcmUgaW4gZGlm
ZmVyZW50IHRyZWVzLCB0aGVyZSBpcyBub3RoaW5nIHRvIGJlIGRvbmUuIE5vdGUgdGhhdCB3ZSBj
YW4gb25seSBtb3ZlIG91dCBvZiBhIHNoYWRvdyByb290CisgICAgICAgIHRvIGl0cyBob3N0IG9y
IG1vdmUgaW50byBhIHNsb3Qgc28gbmV3VHJlZVNjb3BlIChjdXJyZW50IHRhcmdldCdzIHRyZWUg
c2NvcGUpIGFuZCBwcmV2aW91c1RyZWVTY29wZSAocHJldmlvdXMKKyAgICAgICAgdGFyZ2V0J3Mg
dHJlZSBzY29wZSkgbXVzdCBoYXZlIGEgY2hpbGQtcGFyZW50IHJlbGF0aW9uc2hpcC4KKworICAg
ICAgICBJZiBwcmV2aW91c1RyZWVTY29wZSBkaWQgbm90IGNvbnRhaW4gdGhlIHJldGFyZ2V0ZWQg
cmVsYXRlZE5vZGUsIHRoZW4gbmVpdGhlciBjYW4gaXRzIGNoaWxkIHNoYWRvdyB0cmVlcy4gVGh1
cywKKyAgICAgICAgdGhlcmUgaXMgbm90aGluZyB0byBiZSBkb25lIHdoZW4gbW92aW5nIGludG8g
YSBzbG90IGluIHRoaXMgY2FzZS4gSWYgd2UncmUgbW92aW5nIG91dCBvZiBwcmV2aW91c1RyZWVT
Y29wZSwgdGhlbgorICAgICAgICBuZXdUcmVlU2NvcGUgbWF5IGNvbnRhaW4gdGhlIHJldGFyZ2V0
ZWQgcmVsYXRlZE5vZGUgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCByZXF1aXJlIGFueSB3b3JrLiBT
byB3ZSBleGl0IGVhcmx5IGluCisgICAgICAgIGJvdGggY2FzZXMuCisKKyAgICAgICAgT3RoZXJ3
aXNlIChwcmV2aW91c1RyZWVTY29wZSBjb250YWluZWQgcmV0YXJnZXRlZCByZWxhdGVkTm9kZSks
IGlmIHdlJ3JlIG1vdmluZyBvdXQgb2YgYSBjaGlsZCBzaGFkb3cgcm9vdAorICAgICAgICAocHJl
dmlvdXNUcmVlU2NvcGUpIHRoZW4gcmVsYXRlZE5vZGUgc2hvdWxkIGFsc28gbW92ZSB0byBwcmV2
aW91c1RyZWVTY29wZSdzIHNoYWRvdyBob3N0IHNpbmNlIHByZXZpb3VzVHJlZVNjb3BlCisgICAg
ICAgIGlzIGEgZGlyZWN0LWNoaWxkIHNoYWRvdyB0cmVlIG9mIG5ld1RyZWVTY29wZSBhbmQgcHJl
dmlvdXNUcmVlU2NvcGUncyBzaGFkb3cgaG9zdCByZXNpZGVzIGluIG5ld1RyZWVTY29wZS4KKwor
ICAgICAgICBJZiB3ZSdyZSBtb3ZpbmcgaW50byBhIGNoaWxkIHNoYWRvdyByb290IHZpYSBhIHNs
b3QsIHRoZW4gdGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXM6IHJlbGF0ZWROb2RlIGlzIGlu
CisgICAgICAgIHByZXZpb3VzVHJlZVNjb3BlLCBuZXdUcmVlU2NvcGUgYW5kIGl0cyBjaGlsZCBz
aGFkb3cgdHJlZXMsIG9yIG5ld1RyZWVTY29wZSdzIHNpYmxpbmcgdHJlZSBzY29wZXMgYW5kIGl0
cyBjaGlsZHJlbi4KKyAgICAgICAgSWYgaXQgaXMgaW4gcHJldmlvdXNUcmVlU2NvcGUgKG1fbG93
ZXN0Q29tbW9uQW5jZXN0b3JJbmRleCBpcyB6ZXJvKSBvciBpbiBuZXdUcmVlU2NvcGUncyBzaWJs
aW5nLCB0aGVuCisgICAgICAgIHByZXZpb3VzVHJlZVNjb3BlIGlzIHRoZSBsb3dlc3QgY29tbW9u
IHRyZWUgc2NvcGUgYW5jZXN0b3Igc28gdGhlcmUgaXMgbm90aGluZyB0byBiZSBkb25lLiBJZiBy
ZWxhdGVkTm9kZSBpcyBpbgorICAgICAgICBuZXdUcmVlU2NvcGUsIHRoZW4gdGhlIHJldGFyZ2V0
ZWQgcmVsYXRlZE5vZGUgaXMgZWl0aGVyIHRoZSBzaGFkb3cgaG9zdCBvZiB0aGUgc2hhZG93IHRy
ZWUgdGhhdCBjb250YWlucworICAgICAgICByZWxhdGVkTm9kZSBvciByZWxhdGVkTm9kZSBpdHNl
bGYuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25z
aXN0ZW5jeSk6IEZpbmRzIHRoZSByZXRhcmdldGVkIHJlbGF0ZWROb2RlIGluIHRoZSBzaW1wbGVz
dCB3YXkgdG8gdmVyaWZ5CisgICAgICAgIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgYWxnb3JpdGht
LiBXZSBjYW4gZGlzYWJsZSB0aGlzIGNvbnNpc3RlbmN5IGNoZWNrIGlmIGl0IHNsb3dzIGRvd24g
ZGVidWcgYnVpbGRzIHRvbyBtdWNoLgorICAgICAgICAoV2ViQ29yZTo6UmVsYXRlZE5vZGVSZXRh
cmdldGVyOjpub2RlSW5Mb3dlc3RDb21tb25BbmNlc3Rvcik6IEZpbmRzIHRoZSAKKyAgICAgICAg
KFdlYkNvcmU6OlJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y29sbGVjdFRyZWVTY29wZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpzZXRSZWxhdGVkVGFyZ2V0KTogUmV3cml0dGVuIHVz
aW5nIFJlbGF0ZWROb2RlUmV0YXJnZXRlci4KKwogMjAxNS0wOS0yNSAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB1c2VyIG1lZGlhIHJl
cXVlc3QgaW50ZXJuYWwgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKaW5kZXggYWEwY2Zi
MjY3ZWExN2M1OTE4NTdiM2VkZWU4MmYxOTIyYzQ3ZGFkOC4uM2Y2MjQ2MGQ3ZjU4NTNmZTZjZjY3
NDU1MzEzY2Y5Y2JjMjMyYTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtNzYs
MTIgKzc2LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fcmVsYXRlZFRh
cmdldDsKIH07CiAKLWlubGluZSBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQmIHRvTW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0KEV2ZW50Q29udGV4dCYgZXZlbnRDb250ZXh0KQotewotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGV2ZW50Q29udGV4dC5pc01vdXNlT3JGb2N1c0V2
ZW50Q29udGV4dCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TW91c2VPckZvY3VzRXZlbnRD
b250ZXh0Jj4oZXZlbnRDb250ZXh0KTsKLX0KLQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgIVBMQVRGT1JNKElPUykKIGNsYXNzIFRvdWNoRXZlbnRDb250ZXh0IGZpbmFsIDogcHVibGlj
IEV2ZW50Q29udGV4dCB7CkBAIC0xNjIsNCArMTU2LDggQEAgaW5saW5lIHZvaWQgTW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0OjpzZXRSZWxhdGVkVGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHIKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dCkKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFdmVu
dENvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRXZl
bnRDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggM2M1
MjljMmU4YzEyZTE1NTgyMjQ2MTI1ZThiYjhlZWYzM2EwYTNmNS4uMGNkNDU5OTY0ZjY4OGFkNTli
ZjE5ZjVkNGM1MWM3MmU0NjJkZTE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hl
ci5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTEwMSwyNCArMTAxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUb3VjaExp
c3RzSW5FdmVudFBhdGgoY29uc3QgVG91Y2hMaXN0KiwgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNo
TGlzdFR5cGUpOwogI2VuZGlmCiAKKyAgICBFdmVudCYgbV9ldmVudDsKICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4sIDMyPiBtX3BhdGg7CiB9OwogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKKy8vIEZJWE1FOiBVc2UgUmVsYXRlZE5v
ZGVSZXRhcmdldGVyIGluc3RlYWQuCiBjbGFzcyBFdmVudFJlbGF0ZWROb2RlUmVzb2x2ZXIgewog
cHVibGljOgotICAgIEV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcihOb2RlJiByZWxhdGVkTm9kZSkK
LSAgICAgICAgOiBtX3JlbGF0ZWROb2RlKHJlbGF0ZWROb2RlKQotICAgICAgICAsIG1fcmVsYXRl
ZE5vZGVUcmVlU2NvcGUocmVsYXRlZE5vZGUudHJlZVNjb3BlKCkpCi0gICAgICAgICwgbV9yZWxh
dGVkTm9kZUluQ3VycmVudFRyZWVTY29wZShudWxscHRyKQotICAgICAgICAsIG1fY3VycmVudFRy
ZWVTY29wZShudWxscHRyKQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJ
T1MpCi0gICAgICAgICwgbV90b3VjaCgwKQotICAgICAgICAsIG1fdG91Y2hMaXN0VHlwZShUb3Vj
aEV2ZW50Q29udGV4dDo6Tm90VG91Y2hMaXN0KQotI2VuZGlmCi0gICAgewotICAgIH0KLQotI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgRXZlbnRSZWxhdGVk
Tm9kZVJlc29sdmVyKFRvdWNoJiB0b3VjaCwgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5
cGUgdG91Y2hMaXN0VHlwZSkKICAgICAgICAgOiBtX3JlbGF0ZWROb2RlKCp0b3VjaC50YXJnZXQo
KS0+dG9Ob2RlKCkpCiAgICAgICAgICwgbV9yZWxhdGVkTm9kZVRyZWVTY29wZShtX3JlbGF0ZWRO
b2RlLnRyZWVTY29wZSgpKQpAQCAtMTI5LDEyICsxMTksOSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBBU1NFUlQodG91Y2gudGFyZ2V0KCktPnRvTm9kZSgpKTsKICAgICB9Ci0jZW5kaWYKIAot
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgVG91Y2gqIHRv
dWNoKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaDsgfQogICAgIFRvdWNoRXZlbnRDb250ZXh0OjpU
b3VjaExpc3RUeXBlIHRvdWNoTGlzdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoTGlzdFR5
cGU7IH0KLSNlbmRpZgogCiAgICAgTm9kZSogbW92ZVRvUGFyZW50T3JTaGFkb3dIb3N0KE5vZGUm
IG5ld1RhcmdldCkKICAgICB7CkBAIC0xOTcsMTEgKzE4NCwxMCBAQCBwcml2YXRlOgogICAgIGNv
bnN0IFRyZWVTY29wZSYgbV9yZWxhdGVkTm9kZVRyZWVTY29wZTsKICAgICBOb2RlKiBtX3JlbGF0
ZWROb2RlSW5DdXJyZW50VHJlZVNjb3BlOwogICAgIFRyZWVTY29wZSogbV9jdXJyZW50VHJlZVNj
b3BlOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgVG91
Y2gqIG1fdG91Y2g7CiAgICAgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5cGUgbV90b3Vj
aExpc3RUeXBlOwotI2VuZGlmCiB9OworI2VuZGlmCiAKIGlubGluZSBFdmVudFRhcmdldCogZXZl
bnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoTm9kZSYgcmVmZXJlbmNlTm9kZSkKIHsKQEAg
LTQxNSw2ICs0MDEsNyBAQCBzdGF0aWMgTm9kZSogbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudChO
b2RlKiBub2RlKQogfQogCiBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQorICAgIDogbV9ldmVudChldmVudCkKIHsKICNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBWZWN0b3I8RXZlbnRUYXJnZXQqLCAxNj4gdGFyZ2V0U3RhY2s7CkBAIC01
MTMsMzAgKzUwMCwxNzAgQEAgYm9vbCBFdmVudFBhdGg6OnVwZGF0ZVRvdWNoTGlzdHMoY29uc3Qg
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIH0KICNlbmRpZgogCitjbGFzcyBSZWxhdGVkTm9kZVJl
dGFyZ2V0ZXIgeworcHVibGljOgorICAgIFJlbGF0ZWROb2RlUmV0YXJnZXRlcihOb2RlJiByZWxh
dGVkTm9kZSwgVHJlZVNjb3BlJiB0YXJnZXRUcmVlU2NvcGUpCisgICAgICAgIDogbV9yZWxhdGVk
Tm9kZShyZWxhdGVkTm9kZSkKKyAgICAgICAgLCBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSgmcmVs
YXRlZE5vZGUpCisgICAgeworICAgICAgICBUcmVlU2NvcGUqIGN1cnJlbnRUcmVlU2NvcGUgPSAm
bV9yZWxhdGVkTm9kZS50cmVlU2NvcGUoKTsKKyAgICAgICAgaWYgKExJS0VMWShjdXJyZW50VHJl
ZVNjb3BlID09ICZ0YXJnZXRUcmVlU2NvcGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICgmY3VycmVudFRyZWVTY29wZS0+ZG9jdW1lbnRTY29wZSgpICE9ICZ0YXJnZXRUcmVl
U2NvcGUuZG9jdW1lbnRTY29wZSgpKSB7CisgICAgICAgICAgICBtX2hhc0RpZmZlcmVudFRyZWVS
b290ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVsYXRlZE5v
ZGUuaW5Eb2N1bWVudCgpICE9IHRhcmdldFRyZWVTY29wZS5yb290Tm9kZSgpLmluRG9jdW1lbnQo
KSkgeworICAgICAgICAgICAgbV9oYXNEaWZmZXJlbnRUcmVlUm9vdCA9IHRydWU7CisgICAgICAg
ICAgICB3aGlsZSAobV9yZXRhcmdldGVkUmVsYXRlZE5vZGUtPmlzSW5TaGFkb3dUcmVlKCkpCisg
ICAgICAgICAgICAgICAgbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPSBkb3duY2FzdDxTaGFkb3dS
b290PihtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuaG9z
dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29sbGVjdFRy
ZWVTY29wZXMoKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbGxlY3QgdGhpcyB3
aGlsZSBjb25zdHJ1Y3RpbmcgdGhlIGV2ZW50IHBhdGguCisgICAgICAgIFZlY3RvcjxUcmVlU2Nv
cGUqLCA4PiB0YXJnZXRUcmVlU2NvcGVBbmNlc3RvcnM7CisgICAgICAgIGZvciAoVHJlZVNjb3Bl
KiBjdXJyZW50VHJlZVNjb3BlID0gJnRhcmdldFRyZWVTY29wZTsgY3VycmVudFRyZWVTY29wZTsg
Y3VycmVudFRyZWVTY29wZSA9IGN1cnJlbnRUcmVlU2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKQor
ICAgICAgICAgICAgdGFyZ2V0VHJlZVNjb3BlQW5jZXN0b3JzLmFwcGVuZChjdXJyZW50VHJlZVNj
b3BlKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXRhcmdldFRy
ZWVTY29wZUFuY2VzdG9ycy5pc0VtcHR5KCkpOworCisgICAgICAgIHVuc2lnbmVkIGkgPSBtX2Fu
Y2VzdG9yVHJlZVNjb3Blcy5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIGogPSB0YXJnZXRUcmVl
U2NvcGVBbmNlc3RvcnMuc2l6ZSgpOworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihtX2FuY2VzdG9yVHJlZVNjb3Blcy5sYXN0KCkgPT0gdGFyZ2V0VHJlZVNjb3BlQW5j
ZXN0b3JzLmxhc3QoKSk7CisgICAgICAgIHdoaWxlIChtX2FuY2VzdG9yVHJlZVNjb3Blc1tpIC0g
MV0gPT0gdGFyZ2V0VHJlZVNjb3BlQW5jZXN0b3JzW2ogLSAxXSkgeworICAgICAgICAgICAgaS0t
OworICAgICAgICAgICAgai0tOworICAgICAgICAgICAgaWYgKCFpIHx8ICFqKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9sb3dlc3RDb21tb25BbmNlc3Rv
ckluZGV4ID0gaTsKKyAgICAgICAgbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPSBub2RlSW5Mb3dl
c3RDb21tb25BbmNlc3RvcigpOworICAgIH0KKworICAgIE5vZGUqIGN1cnJlbnROb2RlKFRyZWVT
Y29wZSYgY3VycmVudFRyZWVTY29wZSkKKyAgICB7CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
Y3VycmVudFRyZWVTY29wZSk7CisgICAgICAgIHJldHVybiBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9k
ZTsKKyAgICB9CisKKyAgICB2b2lkIG1vdmVUb05ld1RyZWVTY29wZShUcmVlU2NvcGUqIHByZXZp
b3VzVHJlZVNjb3BlLCBUcmVlU2NvcGUmIG5ld1RyZWVTY29wZSkKKyAgICB7CisgICAgICAgIGlm
IChtX2hhc0RpZmZlcmVudFRyZWVSb290KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGF1dG8mIGN1cnJlbnRSZWxhdGVkTm9kZVNjb3BlID0gbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUt
PnRyZWVTY29wZSgpOworICAgICAgICBpZiAocHJldmlvdXNUcmVlU2NvcGUgIT0gJmN1cnJlbnRS
ZWxhdGVkTm9kZVNjb3BlKSB7CisgICAgICAgICAgICAvLyBjdXJyZW50UmVsYXRlZE5vZGUgaXMg
c3RpbGwgb3V0c2lkZSBvdXIgc2hhZG93IHRyZWUuIE5ldyB0cmVlIHNjb3BlIG1heSBjb250YWlu
IGN1cnJlbnRSZWxhdGVkTm9kZQorICAgICAgICAgICAgLy8gYnV0IHRoZXJlIGlzIG5vIG5lZWQg
dG8gcmUtdGFyZ2V0IGl0LiBNb3ZpbmcgaW50byBhIHNsb3QgKHRoZXJlYnkgYSBkZWVwZXIgc2hh
ZG93IHRyZWUpIGRvZXNuJ3QgbWF0dGVyLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBlbnRlcmVkU2xvdCA9IG5ld1RyZWVTY29wZS5wYXJlbnRUcmVlU2Nv
cGUoKSA9PSBwcmV2aW91c1RyZWVTY29wZTsKKyAgICAgICAgaWYgKGVudGVyZWRTbG90KSB7Cisg
ICAgICAgICAgICBpZiAobV9sb3dlc3RDb21tb25BbmNlc3RvckluZGV4KSB7CisgICAgICAgICAg
ICAgICAgaWYgKG1fYW5jZXN0b3JUcmVlU2NvcGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgY29sbGVjdFRyZWVTY29wZXMoKTsKKyAgICAgICAgICAgICAgICBib29sIHJlbGF0ZWRO
b2RlSXNJblNsb3QgPSBtX2FuY2VzdG9yVHJlZVNjb3Blc1ttX2xvd2VzdENvbW1vbkFuY2VzdG9y
SW5kZXggLSAxXSA9PSAmbmV3VHJlZVNjb3BlOworICAgICAgICAgICAgICAgIGlmIChyZWxhdGVk
Tm9kZUlzSW5TbG90KSB7CisgICAgICAgICAgICAgICAgICAgIG1fbG93ZXN0Q29tbW9uQW5jZXN0
b3JJbmRleC0tOworICAgICAgICAgICAgICAgICAgICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9
IG5vZGVJbkxvd2VzdENvbW1vbkFuY2VzdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCgmbmV3VHJlZVNjb3BlID09ICZtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZS0+dHJlZVNjb3BlKCkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IEFTU0VSVChtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9PSAmbV9yZWxhdGVkTm9kZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNUcmVlU2NvcGUtPnBhcmVu
dFRyZWVTY29wZSgpID09ICZuZXdUcmVlU2NvcGUpOworICAgICAgICAgICAgbV9sb3dlc3RDb21t
b25BbmNlc3RvckluZGV4Kys7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihtX2FuY2VzdG9yVHJlZVNjb3Blcy5pc0VtcHR5KCkgfHwgbV9sb3dlc3RDb21tb25B
bmNlc3RvckluZGV4IDwgbV9hbmNlc3RvclRyZWVTY29wZXMuc2l6ZSgpKTsKKyAgICAgICAgICAg
IG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gZG93bmNhc3Q8U2hhZG93Um9vdD4oY3VycmVudFJl
bGF0ZWROb2RlU2NvcGUucm9vdE5vZGUoKSkuaG9zdCgpOworICAgICAgICAgICAgQVNTRVJUKCZu
ZXdUcmVlU2NvcGUgPT0gJm1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlLT50cmVlU2NvcGUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koVHJlZVNjb3BlJiBj
dXJyZW50VHJlZVNjb3BlKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGZv
ciAoYXV0byogcmVsYXRlZE5vZGVTY29wZSA9ICZtX3JlbGF0ZWROb2RlLnRyZWVTY29wZSgpOyBy
ZWxhdGVkTm9kZVNjb3BlOyByZWxhdGVkTm9kZVNjb3BlID0gcmVsYXRlZE5vZGVTY29wZS0+cGFy
ZW50VHJlZVNjb3BlKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byogdGFyZ2V0U2NvcGUgPSAm
Y3VycmVudFRyZWVTY29wZTsgdGFyZ2V0U2NvcGU7IHRhcmdldFNjb3BlID0gdGFyZ2V0U2NvcGUt
PnBhcmVudFRyZWVTY29wZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNjb3BlID09
IHJlbGF0ZWROb2RlU2NvcGUpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCZtX3JldGFy
Z2V0ZWRSZWxhdGVkTm9kZS0+dHJlZVNjb3BlKCkgPT0gcmVsYXRlZE5vZGVTY29wZSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSk7Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oY3VycmVudFRyZWVTY29wZSk7CisjZW5kaWYKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTm9kZSogbm9kZUluTG93ZXN0Q29tbW9uQW5jZXN0b3IoKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2xvd2VzdENvbW1vbkFuY2VzdG9ySW5kZXgpCisgICAgICAg
ICAgICByZXR1cm4gJm1fcmVsYXRlZE5vZGU7CisgICAgICAgIGF1dG8mIHJvb3ROb2RlID0gbV9h
bmNlc3RvclRyZWVTY29wZXNbbV9sb3dlc3RDb21tb25BbmNlc3RvckluZGV4IC0gMV0tPnJvb3RO
b2RlKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxTaGFkb3dSb290Pihyb290Tm9kZSkuaG9z
dCgpOworICAgIH0KKworICAgIHZvaWQgY29sbGVjdFRyZWVTY29wZXMoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fYW5jZXN0b3JUcmVlU2NvcGVzLmlzRW1wdHkoKSk7CisgICAgICAgIGZvciAo
VHJlZVNjb3BlKiBjdXJyZW50VHJlZVNjb3BlID0gJm1fcmVsYXRlZE5vZGUudHJlZVNjb3BlKCk7
IGN1cnJlbnRUcmVlU2NvcGU7IGN1cnJlbnRUcmVlU2NvcGUgPSBjdXJyZW50VHJlZVNjb3BlLT5w
YXJlbnRUcmVlU2NvcGUoKSkKKyAgICAgICAgICAgIG1fYW5jZXN0b3JUcmVlU2NvcGVzLmFwcGVu
ZChjdXJyZW50VHJlZVNjb3BlKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIW1fYW5jZXN0b3JUcmVlU2NvcGVzLmlzRW1wdHkoKSk7CisgICAgfQorCisgICAgTm9k
ZSYgbV9yZWxhdGVkTm9kZTsKKyAgICBOb2RlKiBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZTsKKyAg
ICBWZWN0b3I8VHJlZVNjb3BlKiwgOD4gbV9hbmNlc3RvclRyZWVTY29wZXM7CisgICAgdW5zaWdu
ZWQgbV9sb3dlc3RDb21tb25BbmNlc3RvckluZGV4IHsgMCB9OworICAgIGJvb2wgbV9oYXNEaWZm
ZXJlbnRUcmVlUm9vdCB7IGZhbHNlIH07Cit9OworCiB2b2lkIEV2ZW50UGF0aDo6c2V0UmVsYXRl
ZFRhcmdldChOb2RlJiBvcmlnaW4sIEV2ZW50VGFyZ2V0JiByZWxhdGVkVGFyZ2V0KQogeworICAg
IFVOVVNFRF9QQVJBTShvcmlnaW4pOwogICAgIE5vZGUqIHJlbGF0ZWROb2RlID0gcmVsYXRlZFRh
cmdldC50b05vZGUoKTsKLSAgICBpZiAoIXJlbGF0ZWROb2RlKQorICAgIGlmICghcmVsYXRlZE5v
ZGUgfHwgbV9wYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXZlbnRSZWxh
dGVkTm9kZVJlc29sdmVyIHJlc29sdmVyKCpyZWxhdGVkTm9kZSk7CisgICAgUmVsYXRlZE5vZGVS
ZXRhcmdldGVyIHJldGFyZ2V0ZXIoKnJlbGF0ZWROb2RlLCBkb3duY2FzdDxNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQ+KCptX3BhdGhbMF0pLm5vZGUoKS0+dHJlZVNjb3BlKCkpOwogCiAgICAgYm9v
bCBvcmlnaW5Jc1JlbGF0ZWRUYXJnZXQgPSAmb3JpZ2luID09IHJlbGF0ZWROb2RlOworICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgYWRkIGEgbmV3IGZsYWcgb24gRXZlbnQgaW5zdGVhZC4KKyAgICBi
b29sIHNob3VsZFRyaW1FdmVudFBhdGggPSBtX2V2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2VvdmVyRXZlbnQKKyAgICAgICAgfHwgbV9ldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlbW92ZUV2ZW50CisgICAgICAgIHx8IG1fZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZW91dEV2ZW50OwogICAgIE5vZGUmIHJvb3ROb2RlSW5PcmlnaW5UcmVlU2NvcGUgPSBv
cmlnaW4udHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLQotICAgIHNpemVfdCBldmVudFBhdGhTaXpl
ID0gbV9wYXRoLnNpemUoKTsKLSAgICBzaXplX3QgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBldmVu
dFBhdGhTaXplKSB7Ci0gICAgICAgIE5vZGUqIGNvbnRleHROb2RlID0gbV9wYXRoW2ldLT5ub2Rl
KCk7Ci0gICAgICAgIE5vZGUqIGN1cnJlbnRSZWxhdGVkTm9kZSA9IHJlc29sdmVyLm1vdmVUb1Bh
cmVudE9yU2hhZG93SG9zdCgqY29udGV4dE5vZGUpOwotICAgICAgICBpZiAoIW9yaWdpbklzUmVs
YXRlZFRhcmdldCAmJiBtX3BhdGhbaV0tPnRhcmdldCgpID09IGN1cnJlbnRSZWxhdGVkTm9kZSkK
KyAgICBUcmVlU2NvcGUqIHByZXZpb3VzVHJlZVNjb3BlID0gbnVsbHB0cjsKKyAgICBzaXplX3Qg
b3JpZ2luYWxFdmVudFBhdGhTaXplID0gbV9wYXRoLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGNvbnRleHRJbmRleCA9IDA7IGNvbnRleHRJbmRleCA8IG9yaWdpbmFsRXZlbnRQYXRoU2l6ZTsg
Y29udGV4dEluZGV4KyspIHsKKyAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PE1vdXNl
T3JGb2N1c0V2ZW50Q29udGV4dD4oKm1fcGF0aFtjb250ZXh0SW5kZXhdKTsKKworICAgICAgICBU
cmVlU2NvcGUmIGN1cnJlbnRUcmVlU2NvcGUgPSBjb250ZXh0Lm5vZGUoKS0+dHJlZVNjb3BlKCk7
CisgICAgICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1RyZWVTY29wZSAmJiAmY3VycmVudFRyZWVT
Y29wZSAhPSBwcmV2aW91c1RyZWVTY29wZSkpCisgICAgICAgICAgICByZXRhcmdldGVyLm1vdmVU
b05ld1RyZWVTY29wZShwcmV2aW91c1RyZWVTY29wZSwgY3VycmVudFRyZWVTY29wZSk7CisKKyAg
ICAgICAgTm9kZSogY3VycmVudFJlbGF0ZWROb2RlID0gcmV0YXJnZXRlci5jdXJyZW50Tm9kZShj
dXJyZW50VHJlZVNjb3BlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZFRyaW1FdmVudFBh
dGggJiYgIW9yaWdpbklzUmVsYXRlZFRhcmdldCAmJiBjb250ZXh0LnRhcmdldCgpID09IGN1cnJl
bnRSZWxhdGVkTm9kZSkpIHsKKyAgICAgICAgICAgIG1fcGF0aC5zaHJpbmsoY29udGV4dEluZGV4
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0b01vdXNlT3JGb2N1c0V2ZW50Q29udGV4
dCgqbV9wYXRoW2ldKS5zZXRSZWxhdGVkVGFyZ2V0KGN1cnJlbnRSZWxhdGVkTm9kZSk7Ci0gICAg
ICAgIGkrKzsKLSAgICAgICAgaWYgKG9yaWdpbklzUmVsYXRlZFRhcmdldCAmJiAmcm9vdE5vZGVJ
bk9yaWdpblRyZWVTY29wZSA9PSBjb250ZXh0Tm9kZSkKKyAgICAgICAgfQorCisgICAgICAgIGNv
bnRleHQuc2V0UmVsYXRlZFRhcmdldChjdXJyZW50UmVsYXRlZE5vZGUpOworCisgICAgICAgIGlm
IChVTkxJS0VMWShzaG91bGRUcmltRXZlbnRQYXRoICYmIG9yaWdpbklzUmVsYXRlZFRhcmdldCAm
JiBjb250ZXh0Lm5vZGUoKSA9PSAmcm9vdE5vZGVJbk9yaWdpblRyZWVTY29wZSkpIHsKKyAgICAg
ICAgICAgIG1fcGF0aC5zaHJpbmsoY29udGV4dEluZGV4ICsgMSk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIHByZXZpb3VzVHJlZVNjb3BlID0gJmN1cnJlbnRUcmVl
U2NvcGU7CiAgICAgfQotICAgIG1fcGF0aC5zaHJpbmsoaSk7CiB9CiAKIGJvb2wgRXZlbnRQYXRo
OjpoYXNFdmVudExpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZjYwYmIzYTgyNjI4YzJkNjM3NmZmNDQ0YWMyMzRkODQxZjFiZDlmLi5iNjU0YTMx
MGIxZmI3MDhmMTczZThlNWVhZGQ5MDIxYzgzNGIyYWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTUtMDktMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
cmVsYXRlZE5vZGUgc2hvdWxkIGJlIHJldGFyZ2V0ZWQgcmVzcGVjdGluZyBzbG90cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVz
dGhhcm5lc3MuanMgdGVzdCBmb3IgcmV0YXJnZXRpbmcgcmVsYXRlZE5vZGUuCisKKyAgICAgICAg
KiBmYXN0L3NoYWRvdy1kb20vZXZlbnQtd2l0aC1yZWxhdGVkLXRhcmdldC5odG1sOiBBZGRlZC4K
KwogMjAxNS0wOS0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gR2FyZGVuaW5nOiBza2lwIG1lZGlhIHN0cmVhbSB0ZXN0
cyBmYWlsaW5nIGFmdGVyIHIxOTAyNjIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vZXZlbnQtd2l0aC1yZWxhdGVkLXRhcmdldC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtd2l0aC1yZWxhdGVkLXRhcmdldC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDZiMDNhMDI1NWZlMTY2NWM3ZTNkZWVhYzg0YTIxNDM0MWQwZWExNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC13aXRo
LXJlbGF0ZWQtdGFyZ2V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRmly
aW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWROb2RlIGF0IEIxIHdpdGggb3BlbiBtb2Rl
IHNoYWRvdyB0cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWRO
b2RlIGF0IEIxIHdpdGggY2xvc2VkIG1vZGUgc2hhZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4g
ZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgQjFiMSB3aXRoIG9wZW4gbW9kZSBzaGFk
b3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBh
dCBCMWIxIHdpdGggY2xvc2VkIG1vZGUgc2hhZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4gZXZl
bnQgYXQgQjFiMSB3aXRoIHJlbGF0ZWROb2RlIGF0IEIxYSB3aXRoIG9wZW4gbW9kZSBzaGFkb3cg
dHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBhdCBCMWIxIHdpdGggcmVsYXRlZE5vZGUgYXQg
QjFhIHdpdGggY2xvc2VkIG1vZGUgc2hhZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQg
YXQgQjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgRDEgd2l0aCBvcGVuIG1vZGUgc2hhZG93IHRyZWVz
IAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgRDEgd2l0
aCBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBhdCBEMSB3
aXRoIHJlbGF0ZWROb2RlIGF0IEIxYSB3aXRoIG9wZW4gbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNT
IEZpcmluZyBhbiBldmVudCBhdCBEMSB3aXRoIHJlbGF0ZWROb2RlIGF0IEIxYSB3aXRoIGNsb3Nl
ZCBtb2RlIHNoYWRvdyB0cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJl
bGF0ZWROb2RlIGF0IEExYSB3aXRoIG9wZW4gbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmlu
ZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBhdCBBMWEgd2l0aCBjbG9zZWQgbW9k
ZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxhdGVk
Tm9kZSBhdCBBMWEgd2l0aCBvcGVuIG1vZGUgc2hhZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4g
ZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgQTFhIHdpdGggY2xvc2VkIG1vZGUgc2hh
ZG93IHRyZWVzIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUg
YXQgQTFhIHdpdGggb3BlbiBtb2RlIHNoYWRvdyB0cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50
IGF0IEIxYSB3aXRoIHJlbGF0ZWROb2RlIGF0IEExYSB3aXRoIGNsb3NlZCBtb2RlIHNoYWRvdyB0
cmVlcyAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWROb2RlIGF0IEEx
YSB3aXRoIG9wZW4gbW9kZSBzaGFkb3cgdHJlZXMgCitQQVNTIEZpcmluZyBhbiBldmVudCBhdCBC
MWEgd2l0aCByZWxhdGVkTm9kZSBhdCBBMWEgd2l0aCBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZXMg
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC13aXRoLXJl
bGF0ZWQtdGFyZ2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtd2l0
aC1yZWxhdGVkLXRhcmdldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlYzcxMTMyMTI2NmQ5ZmZmYjMwZThk
OWY3MjQwNTAxYWIwYWIzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vZXZlbnQtd2l0aC1yZWxhdGVkLXRhcmdldC5odG1sCkBAIC0wLDAgKzEsMzQzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlNoYWRvdyBET006
IEZpcmluZyBhbiBldmVudCB3aXRoIHJlbGF0ZWRUYXJnZXQgaW5zaWRlIGEgc2hhZG93IHRyZWU8
L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJl
Zj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorICAgIDxtZXRhIG5hbWU9ImFzc2VydCIgY29u
dGVudD0iVGhlIHJldGFyZ2V0aW5nIGFsZ29yaXRobSBpcyB1c2VkIHRvIGRldGVybWluZSByZWxh
dGl2ZSB0YXJnZXRzIj4KKyAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdp
dGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNyZXRhcmdldGluZy1yZWxhdGVkdGFy
Z2V0Ij4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKyAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBp
ZD0ibG9nIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorCisgICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNo
RXZlbnRXaXRoTG9nKHNoYWRvdywgdGFyZ2V0LCBldmVudCkgeworICAgICAgICAgICAgdmFyIGV2
ZW50UGF0aCA9IFtdOworICAgICAgICAgICAgdmFyIHJlbGF0ZWRUYXJnZXRzID0gW107CisKKyAg
ICAgICAgICAgIHZhciBhdHRhY2hlZE5vZGVzID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBu
b2RlS2V5IGluIHNoYWRvdykgeworICAgICAgICAgICAgICAgIHZhciBzdGFydGluZ05vZGUgPSBz
aGFkb3dbbm9kZUtleV07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbm9kZSA9IHN0YXJ0aW5n
Tm9kZTsgbm9kZTsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoYXR0YWNoZWROb2Rlcy5pbmRleE9mKG5vZGUpID49IDApCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNoZWROb2Rlcy5wdXNo
KG5vZGUpOworICAgICAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQu
dHlwZSwgKGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRQ
YXRoLnB1c2godGhpcy5sYWJlbCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFy
Z2V0cy5wdXNoKGV2ZW50LnJlbGF0ZWRUYXJnZXQubGFiZWwpOworICAgICAgICAgICAgICAgICAg
ICB9KS5iaW5kKG5vZGUpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKworICAgICAgICAgICAgcmV0
dXJuIHtldmVudFBhdGg6IGV2ZW50UGF0aCwgcmVsYXRlZFRhcmdldHM6IHJlbGF0ZWRUYXJnZXRz
fTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgIC1TUjogU2hhZG93Um9vdCAgLVM6
IFNsb3QKKyAgICAgICAgQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEEtU1IKKyAg
ICAgICAgKyBCIC0tLS0tLS0tLS0tLSBCLVNSICAgICAgICAgICAgICsgQTEgLS0tIEExLVNSCisg
ICAgICAgICAgKyBDICAgICAgICAgICAgKyBCMSAtLS0gQjEtU1IgICArIEEyLVMgICArIEExYQor
ICAgICAgICAgICsgRCAtLS0gRC1TUiAgICsgQjFhICAgICsgQjFiIC0tLSBCMWItU1IKKyAgICAg
ICAgICAgICAgICAgICsgRDEgICAgICAgICAgICArIEIxYy1TICAgKyBCMWIxCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQjFiMgorICAgICAgICAqLworICAg
ICAgICBmdW5jdGlvbiBjcmVhdGVUZXN0VHJlZShtb2RlKSB7CisgICAgICAgICAgICB2YXIgbmFt
ZWROb2RlcyA9IHt9OworCisgICAgICAgICAgICBmdW5jdGlvbiBlbGVtZW50KG5hbWUpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZS5p
bmRleE9mKCctUycpID4gMCA/ICdzbG90JyA6ICdkaXYnKTsKKyAgICAgICAgICAgICAgICBlbGVt
ZW50LmxhYmVsID0gbmFtZTsKKyAgICAgICAgICAgICAgICBuYW1lZE5vZGVzW25hbWVdID0gZWxl
bWVudDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5n
dGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGFyZ3VtZW50c1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihpdGVtKSA9PSAnZnVuY3Rpb24nKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaXRlbShlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChpdGVtKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNoYWRvdyhuYW1lKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGNoaWxkcmVuID0gW107CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGNoaWxk
cmVuLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBlbGVtZW50
LmF0dGFjaFNoYWRvdyh7bW9kZTogbW9kZX0pOworICAgICAgICAgICAgICAgICAgICBzaGFkb3dS
b290LmxhYmVsID0gbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbmFtZWROb2Rlc1tuYW1lXSA9
IHNoYWRvd1Jvb3Q7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGNoaWxkIG9mIGNoaWxk
cmVuKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChjaGls
ZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
aG9zdCA9IGVsZW1lbnQoJ0EnLAorICAgICAgICAgICAgICAgIHNoYWRvdygnQS1TUicsCisgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0ExJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNo
YWRvdygnQTEtU1InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0ExYScp
KSksCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0EyLVMnKQorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICAgICAgZWxlbWVudCgnQicsCisgICAgICAgICAgICAgICAgICAgIHNo
YWRvdygnQi1TUicsCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCdCMScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93KCdCMS1TUicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0IxYicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaGFkb3coJ0IxYi1TUicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudCgnQjFiMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQoJ0IxYjInKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50KCdCMWMtUycpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtZW50KCdCMWEnKSkpLAorICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCdDJyksCisgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQoJ0QnLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hh
ZG93KCdELVNSJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCdEMScpKSkp
KTsKKworICAgICAgICAgICAgcmV0dXJuIG5hbWVkTm9kZXM7CisgICAgICAgIH0KKworICAgICAg
ICAvKgorICAgICAgICAtU1I6IFNoYWRvd1Jvb3QgIC1TOiBTbG90ICB0YXJnZXQ6ICh+KSAgcmVs
YXRlZFRhcmdldDogW35dICAqOiBpbmRpY2F0ZXMgc3RhcnQgIGRpZ2l0OiBldmVudCBwYXRoIG9y
ZGVyCisgICAgICAgIEEgKDgpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBLVNSICg3KQorICAgICAgICArIEIgKDUpIFs1LThdIC0tLSBCLVNSICg0KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgKyBBMSAtLS0tLS0tLSBBMS1TUgorICAgICAgICAgICsgQyAg
ICAgICAgICAgICArIEIxICgzKSBbKjsgMC00XSAtLS0gQjEtU1IgKDIpICAgKyBBMi1TICg2KSAg
ICArIEExYQorICAgICAgICAgICsgRCAtLS0gRC1TUiAgICAgICsgQjFhICgqOyAwKSAgICAgICAg
KyBCMWIgWzEsMl0gLS0tIEIxYi1TUgorICAgICAgICAgICAgICAgICAgKyBEMSAgICAgICAgICAg
ICAgICAgICAgICAgICAgKyBCMWMtUyAoMSkgICAgICsgQjFiMQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQjFiMgorICAg
ICAgICAqLworICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRBdEIxYVdpdGhCMWEobW9kZSkgewor
ICAgICAgICAgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGVz
ID0gY3JlYXRlVGVzdFRyZWUobW9kZSk7CisKKyAgICAgICAgICAgICAgICBsb2cgPSBkaXNwYXRj
aEV2ZW50V2l0aExvZyhub2Rlcywgbm9kZXMuQjFhLCBuZXcgTW91c2VFdmVudCgnZm9vJywge2J1
YmJsZXM6IHRydWUsIHJlbGF0ZWRUYXJnZXQ6IG5vZGVzLkIxfSkpOworCisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cuZXZlbnRQYXRoLAorICAgICAgICAgICAgICAgICAg
ICBbJ0IxYScsICdCMWMtUycsICdCMS1TUicsICdCMScsICdCLVNSJywgJ0InLCAnQTItUycsICdB
LVNSJywgJ0EnXSwgJ1RoZSBldmVudCBwYXRoIG11c3QgYmUgY29ycmVjdC4nKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5yZWxhdGVkVGFyZ2V0cywKKyAgICAgICAg
ICAgICAgICAgICAgWydCMScsICAnQjEnLCAgICAnQjEnLCAgICAnQjEnLCAnQjEnLCAgICdCJywg
J0InLCAgICAnQicsICAgICdCJ10sICdUaGUgcmVsYXRlZCB0YXJnZXRzIG11c3QgYmUgY29ycmVj
dC4nKTsKKworICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxh
dGVkTm9kZSBhdCBCMSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0cmVlcycpOworICAg
ICAgICB9CisKKyAgICAgICAgdGVzdEV2ZW50QXRCMWFXaXRoQjFhKCdvcGVuJyk7CisgICAgICAg
IHRlc3RFdmVudEF0QjFhV2l0aEIxYSgnY2xvc2VkJyk7CisKKyAgICAgICAgLyoKKyAgICAgICAg
LVNSOiBTaGFkb3dSb290ICAtUzogU2xvdCAgdGFyZ2V0OiAofikgIHJlbGF0ZWRUYXJnZXQ6IFt+
XSAgKjogaW5kaWNhdGVzIHN0YXJ0ICBkaWdpdDogZXZlbnQgcGF0aCBvcmRlcgorICAgICAgICBB
ICg4KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBLVNSICg3
KQorICAgICAgICArIEIgKDUpIFs1LThdIC0tLSBCLVNSICg0KSAgICAgICAgICAgICAgICAgICAg
ICAgICArIEExIC0tLS0tLSBBMS1TUgorICAgICAgICAgICsgQyAgICAgICAgICAgICArIEIxICgz
KSBbMCwzLTRdIC0tLSBCMS1TUiAoMikgICArIEEyLVMgKDYpICArIEExYQorICAgICAgICAgICsg
RCAtLS0gRC1TUiAgICAgICsgQjFhICgqOyAwKSAgICAgICArIEIxYiBbMSwyXSAtLS0gQjFiLVNS
CisgICAgICAgICAgICAgICAgICArIEQxICAgICAgICAgICAgICAgICAgICAgICAgICsgQjFjLVMg
KDEpICAgICArIEIxYjEgWypdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICArIEIxYjIKKyAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gdGVzdEV2ZW50QXRCMWFXaXRoQjFiMShtb2RlKSB7CisgICAgICAgICAgICB0ZXN0KGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPSBjcmVhdGVUZXN0VHJlZSht
b2RlKTsKKworICAgICAgICAgICAgICAgIGxvZyA9IGRpc3BhdGNoRXZlbnRXaXRoTG9nKG5vZGVz
LCBub2Rlcy5CMWEsIG5ldyBNb3VzZUV2ZW50KCdmb28nLCB7YnViYmxlczogdHJ1ZSwgcmVsYXRl
ZFRhcmdldDogbm9kZXMuQjFiMX0pKTsKKworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nLmV2ZW50UGF0aCwKKyAgICAgICAgICAgICAgICAgICAgWydCMWEnLCAnQjFjLVMn
LCAnQjEtU1InLCAnQjEnLCAnQi1TUicsICdCJywgJ0EyLVMnLCAnQS1TUicsICdBJ10sICdUaGUg
ZXZlbnQgcGF0aCBtdXN0IGJlIGNvcnJlY3QuJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2cucmVsYXRlZFRhcmdldHMsCisgICAgICAgICAgICAgICAgICAgIFsnQjEn
LCAgJ0IxYicsICAgJ0IxYicsICAgJ0IxJywgJ0IxJywgICAnQicsICdCJywgICAgJ0InLCAgICAn
QiddLCAnVGhlIHJlbGF0ZWQgdGFyZ2V0cyBtdXN0IGJlIGNvcnJlY3QuJyk7CisKKyAgICAgICAg
ICAgIH0sICdGaXJpbmcgYW4gZXZlbnQgYXQgQjFhIHdpdGggcmVsYXRlZE5vZGUgYXQgQjFiMSB3
aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0cmVlcycpOworICAgICAgICB9CisKKyAgICAg
ICAgdGVzdEV2ZW50QXRCMWFXaXRoQjFiMSgnb3BlbicpOworICAgICAgICB0ZXN0RXZlbnRBdEIx
YVdpdGhCMWIxKCdjbG9zZWQnKTsKKworICAgICAgICAvKgorICAgICAgICAtU1I6IFNoYWRvd1Jv
b3QgIC1TOiBTbG90ICB0YXJnZXQ6ICh+KSAgcmVsYXRlZFRhcmdldDogW35dICAqOiBpbmRpY2F0
ZXMgc3RhcnQgIGRpZ2l0OiBldmVudCBwYXRoIG9yZGVyCisgICAgICAgIEEgKDkpIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQS1TUiAoOCkK
KyAgICAgICAgKyBCICg2KSBbNi05XSAtLS0gQi1TUiAoNSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICArIEExIC0tLS0tLSBBMS1TUgorICAgICAgICAgICsgQyAgICAgICAgICAg
ICArIEIxICg0KSAtLS0tLS0tLS0gQjEtU1IgKDMpICAgICAgICAgICAgICAgICsgQTItUyAoNykg
ICsgQTFhCisgICAgICAgICAgKyBEIC0tLSBELVNSICAgICAgKyBCMWEgWyo7IDAtNV0gICArIEIx
YiAoMikgLS0tIEIxYi1TUiAoMSkKKyAgICAgICAgICAgICAgICAgICsgRDEgICAgICAgICAgICAg
ICAgICAgICAgICsgQjFjLVMgICAgICAgKyBCMWIxICgqOyAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEIxYjIKKyAgICAgICAg
Ki8KKyAgICAgICAgZnVuY3Rpb24gdGVzdEV2ZW50QXRCMWIxV2l0aEIxYShtb2RlKSB7CisgICAg
ICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPSBj
cmVhdGVUZXN0VHJlZShtb2RlKTsKKworICAgICAgICAgICAgICAgIGxvZyA9IGRpc3BhdGNoRXZl
bnRXaXRoTG9nKG5vZGVzLCBub2Rlcy5CMWIxLCBuZXcgTW91c2VFdmVudCgnZm9vJywge2J1YmJs
ZXM6IHRydWUsIHJlbGF0ZWRUYXJnZXQ6IG5vZGVzLkIxYX0pKTsKKworICAgICAgICAgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobG9nLmV2ZW50UGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
WydCMWIxJywgJ0IxYi1TUicsICdCMWInLCAnQjEtU1InLCAnQjEnLCAnQi1TUicsICdCJywgJ0Ey
LVMnLCAnQS1TUicsICdBJ10sICdUaGUgZXZlbnQgcGF0aCBtdXN0IGJlIGNvcnJlY3QuJyk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cucmVsYXRlZFRhcmdldHMsCisg
ICAgICAgICAgICAgICAgICAgIFsnQjFhJywgICdCMWEnLCAgICAnQjFhJywgJ0IxYScsICAgJ0Ix
YScsICdCMWEnLCAnQicsICdCJywgICAgJ0InLCAgICAnQiddLCAnVGhlIHJlbGF0ZWQgdGFyZ2V0
cyBtdXN0IGJlIGNvcnJlY3QuJyk7CisKKyAgICAgICAgICAgIH0sICdGaXJpbmcgYW4gZXZlbnQg
YXQgQjFiMSB3aXRoIHJlbGF0ZWROb2RlIGF0IEIxYSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNo
YWRvdyB0cmVlcycpOworICAgICAgICB9CisKKyAgICAgICAgdGVzdEV2ZW50QXRCMWIxV2l0aEIx
YSgnb3BlbicpOworICAgICAgICB0ZXN0RXZlbnRBdEIxYjFXaXRoQjFhKCdjbG9zZWQnKTsKKwor
ICAgICAgICAvKgorICAgICAgICAtU1I6IFNoYWRvd1Jvb3QgIC1TOiBTbG90ICB0YXJnZXQ6ICh+
KSAgcmVsYXRlZFRhcmdldDogW35dICAqOiBpbmRpY2F0ZXMgc3RhcnQgIGRpZ2l0OiBldmVudCBw
YXRoIG9yZGVyCisgICAgICAgIEEgKDgpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEEtU1IgKDcpCisgICAgICAgICsgQiAoNSkgLS0tLS0tLS0tLS0t
LS0gQi1TUiAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgICsgQTEgLS0tLS0tLS0gQTEtU1IK
KyAgICAgICAgICArIEMgICAgICAgICAgICAgICAgICArIEIxICgzKSBbKjsgMC00XSAtLS0gQjEt
U1IgKDIpICAgKyBBMi1TICg2KSAgICArIEExYQorICAgICAgICAgICsgRCBbMC04XSAtLS0gRC1T
UiAgICAgKyBCMWEgKCo7IDApICAgICAgICArIEIxYiAtLS0tLS0gQjFiLVNSCisgICAgICAgICAg
ICAgICAgICAgICAgICArIEQxIFsqXSAgICAgICAgICAgICAgICAgICAgICsgQjFjLVMgKDEpICAr
IEIxYjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgQjFiMgorICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiB0ZXN0
RXZlbnRBdEIxYVdpdGhEMShtb2RlKSB7CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPSBjcmVhdGVUZXN0VHJlZShtb2RlKTsKKworICAg
ICAgICAgICAgICAgIGxvZyA9IGRpc3BhdGNoRXZlbnRXaXRoTG9nKG5vZGVzLCBub2Rlcy5CMWEs
IG5ldyBNb3VzZUV2ZW50KCdmb28nLCB7YnViYmxlczogdHJ1ZSwgcmVsYXRlZFRhcmdldDogbm9k
ZXMuRDF9KSk7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5ldmVu
dFBhdGgsCisgICAgICAgICAgICAgICAgICAgIFsnQjFhJywgJ0IxYy1TJywgJ0IxLVNSJywgJ0Ix
JywgJ0ItU1InLCAnQicsICdBMi1TJywgJ0EtU1InLCAnQSddLCAnVGhlIGV2ZW50IHBhdGggbXVz
dCBiZSBjb3JyZWN0LicpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
LnJlbGF0ZWRUYXJnZXRzLAorICAgICAgICAgICAgICAgICAgICBbJ0QnLCAnRCcsICdEJywgJ0Qn
LCAnRCcsICdEJywgJ0QnLCAnRCcsICdEJ10sICdUaGUgcmVsYXRlZCB0YXJnZXRzIG11c3QgYmUg
Y29ycmVjdC4nKTsKKworICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0
aCByZWxhdGVkTm9kZSBhdCBEMSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0cmVlcycp
OworICAgICAgICB9CisKKyAgICAgICAgdGVzdEV2ZW50QXRCMWFXaXRoRDEoJ29wZW4nKTsKKyAg
ICAgICAgdGVzdEV2ZW50QXRCMWFXaXRoRDEoJ2Nsb3NlZCcpOworCisgICAgICAgIC8qCisgICAg
ICAgIC1TUjogU2hhZG93Um9vdCAgLVM6IFNsb3QgIHRhcmdldDogKH4pICByZWxhdGVkVGFyZ2V0
OiBbfl0gICo6IGluZGljYXRlcyBzdGFydCAgZGlnaXQ6IGV2ZW50IHBhdGggb3JkZXIKKyAgICAg
ICAgQSAoNikgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQS1TUiAoNSkKKyAg
ICAgICAgKyBCICgzKSBbMF0gLS0tLS0tLS0tLS0gQi1TUiAgICAgICAgICAgICAgKyBBMSAtLS0t
LS0gQTEtU1IKKyAgICAgICAgICArIEMgICAgICAgICAgICAgICAgICAgKyBCMSAtLS0tLSBCMS1T
UiAgKyBBMi1TICg0KSAgKyBBMWEKKyAgICAgICAgICArIEQgKDIpIC0tLSBELVNSICgxKSAgKyBC
MWEgWypdICArIEIxYiAtLS0gQjFiLVNSCisgICAgICAgICAgICAgICAgICAgICAgICArIEQxICgq
OyAwKSAgICAgICAgICsgQjFjLVMgICArIEIxYjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQjFiMgorICAgICAgICAqLworICAgICAgICBm
dW5jdGlvbiB0ZXN0RXZlbnRBdEQxV2l0aEIxYShtb2RlKSB7CisgICAgICAgICAgICB0ZXN0KGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPSBjcmVhdGVUZXN0VHJlZSht
b2RlKTsKKworICAgICAgICAgICAgICAgIGxvZyA9IGRpc3BhdGNoRXZlbnRXaXRoTG9nKG5vZGVz
LCBub2Rlcy5EMSwgbmV3IE1vdXNlRXZlbnQoJ2ZvbycsIHtidWJibGVzOiB0cnVlLCByZWxhdGVk
VGFyZ2V0OiBub2Rlcy5CMWF9KSk7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZy5ldmVudFBhdGgsCisgICAgICAgICAgICAgICAgICAgIFsnRDEnLCAnRC1TUicsICdE
JywgJ0InLCAnQTItUycsICdBLVNSJywgJ0EnXSwgJ1RoZSBldmVudCBwYXRoIG11c3QgYmUgY29y
cmVjdC4nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5yZWxhdGVk
VGFyZ2V0cywKKyAgICAgICAgICAgICAgICAgICAgWydCJywgJ0InLCAnQicsICdCJywgJ0InLCAn
QicsICdCJ10sICdUaGUgcmVsYXRlZCB0YXJnZXRzIG11c3QgYmUgY29ycmVjdC4nKTsKKworICAg
ICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBhdCBEMSB3aXRoIHJlbGF0ZWROb2RlIGF0IEIx
YSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0cmVlcycpOworICAgICAgICB9CisKKyAg
ICAgICAgdGVzdEV2ZW50QXREMVdpdGhCMWEoJ29wZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50QXRE
MVdpdGhCMWEoJ2Nsb3NlZCcpOworCisgICAgICAgIC8qCisgICAgICAgIC1TUjogU2hhZG93Um9v
dCAgLVM6IFNsb3QgIHRhcmdldDogKH4pICByZWxhdGVkVGFyZ2V0OiBbfl0gICo6IGluZGljYXRl
cyBzdGFydCAgZGlnaXQ6IGV2ZW50IHBhdGggb3JkZXIKKyAgICAgICAgQSAoOCkgWzAtNSw4XSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEEtU1IgKDcpCisgICAgICAg
ICsgQiAoNSkgIC0tLS0tLS0gQi1TUiAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
IEExIFs2LDddIC0tLSBBMS1TUgorICAgICAgICAgICsgQyAgICAgICAgICAgICsgQjEgKDMpIC0t
LS0tIEIxLVNSICgyKSAgICAgICAgICAgICAgKyBBMi1TICg2KSAgICAgKyBBMWEgWypdCisgICAg
ICAgICAgKyBEIC0tLSBELVNSICAgKyBCMWEgKCo7IDApICAgKyBCMWIgLS0tLS0tLSBCMWItU1IK
KyAgICAgICAgICAgICAgICAgICsgRDEgICAgICAgICAgICAgICAgICArIEIxYy1TICgxKSAgICsg
QjFiMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKyBCMWIyCisgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIHRlc3RFdmVudEF0QjFhV2l0
aEExYShtb2RlKSB7CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgbm9kZXMgPSBjcmVhdGVUZXN0VHJlZShtb2RlKTsKKworICAgICAgICAgICAgICAg
IGxvZyA9IGRpc3BhdGNoRXZlbnRXaXRoTG9nKG5vZGVzLCBub2Rlcy5CMWEsIG5ldyBNb3VzZUV2
ZW50KCdmb28nLCB7YnViYmxlczogdHJ1ZSwgcmVsYXRlZFRhcmdldDogbm9kZXMuQTFhfSkpOwor
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cuZXZlbnRQYXRoLAorICAg
ICAgICAgICAgICAgICAgICBbJ0IxYScsICdCMWMtUycsICdCMS1TUicsICdCMScsICdCLVNSJywg
J0InLCAnQTItUycsICdBLVNSJywgJ0EnXSwgJ1RoZSBldmVudCBwYXRoIG11c3QgYmUgY29ycmVj
dC4nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5yZWxhdGVkVGFy
Z2V0cywKKyAgICAgICAgICAgICAgICAgICAgWydBJywgICAnQScsICAgICAnQScsICAgICAnQScs
ICAgJ0EnLCAgICdBJywgJ0ExJywgICAnQTEnLCAgICdBJ10sICdUaGUgcmVsYXRlZCB0YXJnZXRz
IG11c3QgYmUgY29ycmVjdC4nKTsKKworICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBh
dCBCMWEgd2l0aCByZWxhdGVkTm9kZSBhdCBBMWEgd2l0aCAnICsgbW9kZSArICcgbW9kZSBzaGFk
b3cgdHJlZXMnKTsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3RFdmVudEF0QjFhV2l0aEExYSgn
b3BlbicpOworICAgICAgICB0ZXN0RXZlbnRBdEIxYVdpdGhBMWEoJ2Nsb3NlZCcpOworCisgICAg
ICAgIC8qCisgICAgICAgIC1TUjogU2hhZG93Um9vdCAgLVM6IFNsb3QgIHRhcmdldDogKH4pICBy
ZWxhdGVkVGFyZ2V0OiBbfl0gICo6IGluZGljYXRlcyBzdGFydCAgZGlnaXQ6IGV2ZW50IHBhdGgg
b3JkZXIKKyAgICAgICAgQSAoNCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQS1TUiAoMykKKyAgICAgICAgKyBCIFswLTRdICAtLS0tLSBCLVNSICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKyBBMSAoMikgLS0tIEExLVNSICgxKQorICAgICAgICAgICsgQyAgICAg
ICAgICAgICsgQjEgLS0tLS0tLSBCMS1TUiAgICAgICAgICAgICArIEEyLVMgICAgICAgKyBBMWEg
KCo7IDApCisgICAgICAgICAgKyBEIC0tLSBELVNSICAgICArIEIxYSBbKl0gICsgQjFiIC0tLSBC
MWItU1IKKyAgICAgICAgICAgICAgICAgICsgRDEgICAgICAgICAgICAgICAgKyBCMWMtUyAgICsg
QjFiMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBC
MWIyCisgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIHRlc3RFdmVudEF0QTFhV2l0aEIxYSht
b2RlKSB7CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2
YXIgbm9kZXMgPSBjcmVhdGVUZXN0VHJlZShtb2RlKTsKKworICAgICAgICAgICAgICAgIGxvZyA9
IGRpc3BhdGNoRXZlbnRXaXRoTG9nKG5vZGVzLCBub2Rlcy5BMWEsIG5ldyBNb3VzZUV2ZW50KCdm
b28nLCB7YnViYmxlczogdHJ1ZSwgcmVsYXRlZFRhcmdldDogbm9kZXMuQjFhfSkpOworCisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cuZXZlbnRQYXRoLAorICAgICAgICAg
ICAgICAgICAgICBbJ0ExYScsICdBMS1TUicsICdBMScsICdBLVNSJywgJ0EnXSwgJ1RoZSBldmVu
dCBwYXRoIG11c3QgYmUgY29ycmVjdC4nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZy5yZWxhdGVkVGFyZ2V0cywKKyAgICAgICAgICAgICAgICAgICAgWydCJywgJ0In
LCAnQicsICdCJywgJ0InXSwgJ1RoZSByZWxhdGVkIHRhcmdldHMgbXVzdCBiZSBjb3JyZWN0Licp
OworCisgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWRO
b2RlIGF0IEExYSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0cmVlcycpOworICAgICAg
ICB9CisKKyAgICAgICAgdGVzdEV2ZW50QXRBMWFXaXRoQjFhKCdvcGVuJyk7CisgICAgICAgIHRl
c3RFdmVudEF0QTFhV2l0aEIxYSgnY2xvc2VkJyk7CisKKyAgICAgICAgLyoKKyAgICAgICAgLVNS
OiBTaGFkb3dSb290ICAtUzogU2xvdCAgdGFyZ2V0OiAofikgIHJlbGF0ZWRUYXJnZXQ6IFt+XSAg
KjogaW5kaWNhdGVzIHN0YXJ0ICBkaWdpdDogZXZlbnQgcGF0aCBvcmRlcgorICAgICAgICBBICg4
KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBLVNSICg3KQorICAgICAgICAr
IEIgKDUpICAtLS0tLSBCLVNSICg0KSAgICAgICAgICAgICAgICAgICArIEEyLVMgKDYpCisgICAg
ICAgICAgKyBDICAgICAgICAgICsgQjEgKDMpIC0tLS0tIEIxLVNSICgyKQorICAgICAgICAgICsg
RCAtLS0gRC1TUiAgICsgQjFhICgqOyAwKSArIEIxYiAtLS0tLS0tIEIxYi1TUgorICAgICAgICAg
ICAgICAgICAgKyBEMSAgICAgICAgICAgICAgICArIEIxYy1TICgxKSAgICsgQjFiMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQjFiMgorICAg
ICAgICBBMSBbMC02XSAtLS0gQTEtU1IKKyAgICAgICAgICAgICAgICAgICArIEExYSBbKl0KKyAg
ICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gdGVzdEV2ZW50QXRCMWFXaXRoRGV0YWNoZWRBMWEo
bW9kZSkgeworICAgICAgICAgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
dmFyIG5vZGVzID0gY3JlYXRlVGVzdFRyZWUobW9kZSk7CisKKyAgICAgICAgICAgICAgICBub2Rl
c1snQS1TUiddLnJlbW92ZUNoaWxkKG5vZGVzLkExKTsKKyAgICAgICAgICAgICAgICBsb2cgPSBk
aXNwYXRjaEV2ZW50V2l0aExvZyhub2Rlcywgbm9kZXMuQjFhLCBuZXcgTW91c2VFdmVudCgnZm9v
Jywge2J1YmJsZXM6IHRydWUsIHJlbGF0ZWRUYXJnZXQ6IG5vZGVzLkExYX0pKTsKKworICAgICAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nLmV2ZW50UGF0aCwKKyAgICAgICAgICAg
ICAgICAgICAgWydCMWEnLCAnQjFjLVMnLCAnQjEtU1InLCAnQjEnLCAnQi1TUicsICdCJywgJ0Ey
LVMnLCAnQS1TUicsICdBJ10sICdUaGUgZXZlbnQgcGF0aCBtdXN0IGJlIGNvcnJlY3QuJyk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cucmVsYXRlZFRhcmdldHMsCisg
ICAgICAgICAgICAgICAgICAgIFsnQTEnLCAnQTEnLCAnQTEnLCAnQTEnLCAnQTEnLCAnQTEnLCAn
QTEnLCAnQTEnLCAnQTEnXSwgJ1RoZSByZWxhdGVkIHRhcmdldHMgbXVzdCBiZSBjb3JyZWN0Licp
OworCisgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGF0IEIxYSB3aXRoIHJlbGF0ZWRO
b2RlIGF0IEExYSB3aXRoICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyB0cmVlcycpOworICAgICAg
ICB9CisKKyAgICAgICAgdGVzdEV2ZW50QXRCMWFXaXRoRGV0YWNoZWRBMWEoJ29wZW4nKTsKKyAg
ICAgICAgdGVzdEV2ZW50QXRCMWFXaXRoRGV0YWNoZWRBMWEoJ2Nsb3NlZCcpOworCisgICAgICAg
IC8qCisgICAgICAgIC1TUjogU2hhZG93Um9vdCAgLVM6IFNsb3QgIHRhcmdldDogKH4pICByZWxh
dGVkVGFyZ2V0OiBbfl0gICo6IGluZGljYXRlcyBzdGFydCAgZGlnaXQ6IGV2ZW50IHBhdGggb3Jk
ZXIKKyAgICAgICAgQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBLVNSCisg
ICAgICAgICsgQiBbMC0zXSAgLS0tLS0gQi1TUiAgICAgICAgICAgICAgICAgKyBBMi1TCisgICAg
ICAgICAgKyBDICAgICAgICAgICAgKyBCMSAtLS0tLS0tLSBCMS1TUgorICAgICAgICAgICsgRCAt
LS0gRC1TUiAgICAgKyBCMWEgWypdICAgKyBCMWIgLS0tIEIxYi1TUgorICAgICAgICAgICAgICAg
ICAgKyBEMSAgICAgICAgICAgICAgICAgKyBCMWMtUyAgICsgQjFiMQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQjFiMgorICAgICAgICBBMSAoMikg
LS0tIEExLVNSICgxKQorICAgICAgICAgICAgICAgICAgICsgQTFhICgqOyAwKQorICAgICAgICAq
LworICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRBdEExYVdpdGhEZXRhY2hlZEIxYShtb2RlKSB7
CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm9k
ZXMgPSBjcmVhdGVUZXN0VHJlZShtb2RlKTsKKworICAgICAgICAgICAgICAgIG5vZGVzWydBLVNS
J10ucmVtb3ZlQ2hpbGQobm9kZXMuQTEpOworICAgICAgICAgICAgICAgIGxvZyA9IGRpc3BhdGNo
RXZlbnRXaXRoTG9nKG5vZGVzLCBub2Rlcy5BMWEsIG5ldyBNb3VzZUV2ZW50KCdmb28nLCB7YnVi
YmxlczogdHJ1ZSwgcmVsYXRlZFRhcmdldDogbm9kZXMuQjFhfSkpOworCisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cuZXZlbnRQYXRoLCAgICAgIFsnQTFhJywgJ0ExLVNS
JywgJ0ExJ10sICdUaGUgZXZlbnQgcGF0aCBtdXN0IGJlIGNvcnJlY3QuJyk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cucmVsYXRlZFRhcmdldHMsIFsnQicsICAgJ0In
LCAgICAgJ0InIF0sICdUaGUgcmVsYXRlZCB0YXJnZXRzIG11c3QgYmUgY29ycmVjdC4nKTsKKwor
ICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBhdCBCMWEgd2l0aCByZWxhdGVkTm9kZSBh
dCBBMWEgd2l0aCAnICsgbW9kZSArICcgbW9kZSBzaGFkb3cgdHJlZXMnKTsKKyAgICAgICAgfQor
CisgICAgICAgIHRlc3RFdmVudEF0QTFhV2l0aERldGFjaGVkQjFhKCdvcGVuJyk7CisgICAgICAg
IHRlc3RFdmVudEF0QTFhV2l0aERldGFjaGVkQjFhKCdjbG9zZWQnKTsKKworICAgIDwvc2NyaXB0
PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>