<?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>88324</bug_id>
          
          <creation_ts>2012-06-05 05:05:12 -0700</creation_ts>
          <short_desc>Web Inspector: serialize edge counts instead of indexes in heap snapshot</short_desc>
          <delta_ts>2012-06-05 10:08:47 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexei Filippov">alph</reporter>
          <assigned_to name="Alexei Filippov">alph</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>641440</commentid>
    <comment_count>0</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-05 05:05:12 -0700</bug_when>
    <thetext>That reduces the snapshot size and thus the transfer time is reduced by ~100ms or 8%.

Before:
RESULT heap-snapshot: transfer-snapshot= 1494 ms
RESULT heap-snapshot: full-summary-snapshot-time= 5827 ms

After:
RESULT heap-snapshot: transfer-snapshot= 1378 ms
RESULT heap-snapshot: _buildEdgeIndexes= 5 ms
RESULT heap-snapshot: full-summary-snapshot-time= 5587 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641442</commentid>
    <comment_count>1</comment_count>
      <attachid>145762</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-05 05:09:30 -0700</bug_when>
    <thetext>Created attachment 145762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641523</commentid>
    <comment_count>2</comment_count>
      <attachid>145762</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 07:28:56 -0700</bug_when>
    <thetext>Comment on attachment 145762
Patch

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

other

&gt; Source/WebCore/ChangeLog:4
&gt; +        Web Inspector: serialize edge counts instead of indexes in heap snapshot
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=88324

please write more detailed description for the patch

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:720
&gt; +            for (var nodeOrdinal = 0; nodeOrdinal &lt; nodeCount; ++nodeOrdinal) {
&gt; +                firstEdgeIndexes[nodeOrdinal] = nodes[nodeOrdinal * nodeFieldCount + nodeEdgesIndexOffset];

it&apos;d be simpler to use nodeFirstEdgeIndex instead of nodeOrdinal here.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:734
&gt; +            edgeIndex += nodes[nodeOrdinal * nodeFieldCount + nodeEdgeCountOffset] * edgeFieldCount;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641555</commentid>
    <comment_count>3</comment_count>
      <attachid>145762</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-05 08:03:41 -0700</bug_when>
    <thetext>Comment on attachment 145762
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:4
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=88324
&gt; 
&gt; please write more detailed description for the patch

ok

&gt;&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:720
&gt;&gt; +                firstEdgeIndexes[nodeOrdinal] = nodes[nodeOrdinal * nodeFieldCount + nodeEdgesIndexOffset];
&gt; 
&gt; it&apos;d be simpler to use nodeFirstEdgeIndex instead of nodeOrdinal here.

I need to iterate with nodeOrdinal anyway (it is used in lhs).
So I can&apos;t get rid of it and I don&apos;t see a point of introducing second index for iteration.

&gt;&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:734
&gt;&gt; +            edgeIndex += nodes[nodeOrdinal * nodeFieldCount + nodeEdgeCountOffset] * edgeFieldCount;
&gt; 
&gt; ditto

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641556</commentid>
    <comment_count>4</comment_count>
      <attachid>145799</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-05 08:04:43 -0700</bug_when>
    <thetext>Created attachment 145799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641612</commentid>
    <comment_count>5</comment_count>
      <attachid>145799</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 09:01:24 -0700</bug_when>
    <thetext>Comment on attachment 145799
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641630</commentid>
    <comment_count>6</comment_count>
      <attachid>145799</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 09:14:03 -0700</bug_when>
    <thetext>Comment on attachment 145799
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:216
&gt; -        this.edge.edgeIndex += this.edge._snapshot._edgeFieldsCount;
&gt; +        this.edge.edgeIndex += this.edge._snapshot._edgeFieldCount;

could you please extract this part of the change as a separate patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641640</commentid>
    <comment_count>7</comment_count>
      <attachid>145819</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-05 09:27:01 -0700</bug_when>
    <thetext>Created attachment 145819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641642</commentid>
    <comment_count>8</comment_count>
      <attachid>145799</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-05 09:28:32 -0700</bug_when>
    <thetext>Comment on attachment 145799
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:216
&gt;&gt; +        this.edge.edgeIndex += this.edge._snapshot._edgeFieldCount;
&gt; 
&gt; could you please extract this part of the change as a separate patch

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641671</commentid>
    <comment_count>9</comment_count>
      <attachid>145819</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 10:08:33 -0700</bug_when>
    <thetext>Comment on attachment 145819
Patch

Clearing flags on attachment: 145819

Committed r119498: &lt;http://trac.webkit.org/changeset/119498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641672</commentid>
    <comment_count>10</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 10:08:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145762</attachid>
            <date>2012-06-05 05:09:30 -0700</date>
            <delta_ts>2012-06-05 08:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88324-20120605160928.patch</filename>
            <type>text/plain</type>
            <size>36558</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU3YWIwZWE4YjBhMDNm
NTlhNmQxN2VhMmUxM2RhZTRlYjA1ZWVhNi4uMDRkZDMwZTg0MTFkMzI3NGY0NTcwNTlmZGRjZTc4
NGVjYjAzMjMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA2LTA1ICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzZXJpYWxpemUgZWRnZSBjb3VudHMgaW5zdGVhZCBvZiBpbmRleGVzIGluIGhlYXAgc25h
cHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RFZGdlSXRlcmF0b3IucHJvdG90eXBlLm5leHQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLmVkZ2VzQ291bnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLl9lZGdlSW5kZXhlc1N0
YXJ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5f
ZWRnZUluZGV4ZXNFbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUu
cHJvdG90eXBlLl9vcmRpbmFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RO
b2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUu
X2J1aWxkRWRnZUluZGV4ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX2J1aWxkUmV0YWluZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlLl9iZnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUuX2J1aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRQb3N0T3JkZXJJbmRleCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGREb21pbmF0b3JUcmVlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJrUGFnZU93bmVk
Tm9kZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX21h
cmtRdWVyaWFibGVIZWFwT2JqZWN0cyk6CisKIDIwMTItMDYtMDUgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgcjExOTQ3MC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5k
ZXggZjI3MDI4MjJmNmY3YTk2ZmFhYmRmMjY0ZGFmZmE3YzM0MTZmZWI0Mi4uNzIzNGE2YjZlYTI1
YjYyZGNjZDA3OGQzNWM2NTFiYmY3YTA1ODk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTIxMyw3ICsyMTMsNyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZUl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKIAogICAg
IG5leHQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZWRnZS5lZGdlSW5kZXggKz0g
dGhpcy5lZGdlLl9zbmFwc2hvdC5fZWRnZUZpZWxkc0NvdW50OworICAgICAgICB0aGlzLmVkZ2Uu
ZWRnZUluZGV4ICs9IHRoaXMuZWRnZS5fc25hcHNob3QuX2VkZ2VGaWVsZENvdW50OwogICAgIH0K
IH07CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5w
cm90b3R5cGUgPSB7CiAKICAgICBlZGdlc0NvdW50OiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICByZXR1cm4gKHRoaXMuX2VkZ2VJbmRleGVzRW5kKCkgLSB0aGlzLl9lZGdlSW5kZXhlc1N0YXJ0
KCkpIC8gdGhpcy5fc25hcHNob3QuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgcmV0dXJuICh0
aGlzLl9lZGdlSW5kZXhlc0VuZCgpIC0gdGhpcy5fZWRnZUluZGV4ZXNTdGFydCgpKSAvIHRoaXMu
X3NuYXBzaG90Ll9lZGdlRmllbGRDb3VudDsKICAgICB9LAogCiAgICAgZmxhZ3M6IGZ1bmN0aW9u
KCkKQEAgLTUzNSwxNCArNTM1LDE3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9lZGdlSW5kZXhlc1N0YXJ0OiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICB2YXIgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hvdDsKLSAgICAgICAgcmV0dXJuIHNu
YXBzaG90Ll9ub2Rlc1t0aGlzLm5vZGVJbmRleCArIHNuYXBzaG90Ll9maXJzdEVkZ2VJbmRleE9m
ZnNldF07CisgICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5fZmlyc3RFZGdlSW5kZXhlc1t0
aGlzLl9vcmRpbmFsKCldOwogICAgIH0sCiAKICAgICBfZWRnZUluZGV4ZXNFbmQ6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXMuX3NuYXBzaG90OwotICAgICAg
ICByZXR1cm4gc25hcHNob3QuX25vZGVzW3RoaXMuX25leHROb2RlSW5kZXgoKSArIHNuYXBzaG90
Ll9maXJzdEVkZ2VJbmRleE9mZnNldF0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90Ll9m
aXJzdEVkZ2VJbmRleGVzW3RoaXMuX29yZGluYWwoKSArIDFdOworICAgIH0sCisKKyAgICBfb3Jk
aW5hbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubm9kZUluZGV4IC8g
dGhpcy5fc25hcHNob3QuX25vZGVGaWVsZENvdW50OwogICAgIH0sCiAKICAgICBfbmV4dE5vZGVJ
bmRleDogZnVuY3Rpb24oKQpAQCAtNTYzLDcgKzU2Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3ROb2RlLnByb3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRl
cmF0b3IgPSBmdW5jdGlvbihub2RlKQogewogICAgIHRoaXMubm9kZSA9IG5vZGU7Ci0gICAgdGhp
cy5fbm9kZXNMZW5ndGggPSBub2RlLl9zbmFwc2hvdC5fcmVhbE5vZGVzTGVuZ3RoOworICAgIHRo
aXMuX25vZGVzTGVuZ3RoID0gbm9kZS5fc25hcHNob3QuX25vZGVzLmxlbmd0aDsKIH0KIAogV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvci5wcm90b3R5cGUgPSB7CkBAIC02NTUs
NyArNjU4LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX25vZGVOYW1lT2Zmc2V0ID0gbWV0YS5ub2RlX2ZpZWxkcy5pbmRleE9mKCJuYW1l
Iik7CiAgICAgICAgIHRoaXMuX25vZGVJZE9mZnNldCA9IG1ldGEubm9kZV9maWVsZHMuaW5kZXhP
ZigiaWQiKTsKICAgICAgICAgdGhpcy5fbm9kZVNlbGZTaXplT2Zmc2V0ID0gbWV0YS5ub2RlX2Zp
ZWxkcy5pbmRleE9mKCJzZWxmX3NpemUiKTsKLSAgICAgICAgdGhpcy5fZmlyc3RFZGdlSW5kZXhP
ZmZzZXQgPSBtZXRhLm5vZGVfZmllbGRzLmluZGV4T2YoImVkZ2VzX2luZGV4Iik7CisgICAgICAg
IHRoaXMuX25vZGVFZGdlQ291bnRPZmZzZXQgPSBtZXRhLm5vZGVfZmllbGRzLmluZGV4T2YoImVk
Z2VfY291bnQiKTsKICAgICAgICAgdGhpcy5fbm9kZUZpZWxkQ291bnQgPSBtZXRhLm5vZGVfZmll
bGRzLmxlbmd0aDsKIAogICAgICAgICB0aGlzLl9ub2RlVHlwZXMgPSBtZXRhLm5vZGVfdHlwZXNb
dGhpcy5fbm9kZVR5cGVPZmZzZXRdOwpAQCAtNjY1LDcgKzY2OCw3IEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9ub2RlQ29kZVR5cGUgPSB0
aGlzLl9ub2RlVHlwZXMuaW5kZXhPZigiY29kZSIpOwogICAgICAgICB0aGlzLl9ub2RlU3ludGhl
dGljVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5pbmRleE9mKCJzeW50aGV0aWMiKTsKIAotICAgICAg
ICB0aGlzLl9lZGdlRmllbGRzQ291bnQgPSBtZXRhLmVkZ2VfZmllbGRzLmxlbmd0aDsKKyAgICAg
ICAgdGhpcy5fZWRnZUZpZWxkQ291bnQgPSBtZXRhLmVkZ2VfZmllbGRzLmxlbmd0aDsKICAgICAg
ICAgdGhpcy5fZWRnZVR5cGVPZmZzZXQgPSBtZXRhLmVkZ2VfZmllbGRzLmluZGV4T2YoInR5cGUi
KTsKICAgICAgICAgdGhpcy5fZWRnZU5hbWVPZmZzZXQgPSBtZXRhLmVkZ2VfZmllbGRzLmluZGV4
T2YoIm5hbWVfb3JfaW5kZXgiKTsKICAgICAgICAgdGhpcy5fZWRnZVRvTm9kZU9mZnNldCA9IG1l
dGEuZWRnZV9maWVsZHMuaW5kZXhPZigidG9fbm9kZSIpOwpAQCAtNjg4LDE2ICs2OTEsMTAgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2aXNp
dGVkTWFya2VyOiAgICAgMHgxMDAwMCAgLy8gYml0czogMSwwMDAwLDAwMDAsMDAwMCwwMDAwCiAg
ICAgICAgIH07CiAKLSAgICAgICAgdGhpcy5fcmVhbE5vZGVzTGVuZ3RoID0gdGhpcy5fbm9kZXMu
bGVuZ3RoOwotICAgICAgICB0aGlzLm5vZGVDb3VudCA9IHRoaXMuX3JlYWxOb2Rlc0xlbmd0aCAv
IHRoaXMuX25vZGVGaWVsZENvdW50OwotICAgICAgICB0aGlzLl9lZGdlQ291bnQgPSB0aGlzLl9j
b250YWlubWVudEVkZ2VzLmxlbmd0aCAvIHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKLQotICAgICAg
ICAvLyBBZGQgYW4gZXh0cmEgbm9kZSBhbmQgbWFrZSBpdHMgZmlyc3QgZWRnZSBmaWVsZCBwb2lu
dCB0byB0aGUgZW5kIG9mIGVkZ2VzIGFycmF5LgotICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9u
b2RlczsKLSAgICAgICAgdGhpcy5fbm9kZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5fcmVhbE5v
ZGVzTGVuZ3RoICsgdGhpcy5fbm9kZUZpZWxkQ291bnQpOwotICAgICAgICB0aGlzLl9ub2Rlcy5z
ZXQobm9kZXMpOwotICAgICAgICB0aGlzLl9ub2Rlc1t0aGlzLl9yZWFsTm9kZXNMZW5ndGggKyB0
aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldF0gPSB0aGlzLl9jb250YWlubWVudEVkZ2VzLmxlbmd0
aDsKKyAgICAgICAgdGhpcy5ub2RlQ291bnQgPSB0aGlzLl9ub2Rlcy5sZW5ndGggLyB0aGlzLl9u
b2RlRmllbGRDb3VudDsKKyAgICAgICAgdGhpcy5fZWRnZUNvdW50ID0gdGhpcy5fY29udGFpbm1l
bnRFZGdlcy5sZW5ndGggLyB0aGlzLl9lZGdlRmllbGRDb3VudDsKIAorICAgICAgICB0aGlzLl9i
dWlsZEVkZ2VJbmRleGVzKCk7CiAgICAgICAgIHRoaXMuX21hcmtJbnZpc2libGVFZGdlcygpOwog
ICAgICAgICB0aGlzLl9idWlsZFJldGFpbmVycygpOwogICAgICAgICB0aGlzLl9jYWxjdWxhdGVG
bGFncygpOwpAQCAtNzA5LDYgKzcwNiwzNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYnVpbGREb21pbmF0ZWROb2RlcygpOwogICAgIH0s
CiAKKyAgICBfYnVpbGRFZGdlSW5kZXhlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8g
U3VwcG9ydCBmb3Igb2xkIHNlcmlhbGl6YXRpb24uCisgICAgICAgIGlmICh0aGlzLl9ub2RlRWRn
ZUNvdW50T2Zmc2V0ID09PSAtMSkgeworICAgICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9k
ZXM7CisgICAgICAgICAgICB2YXIgbm9kZUNvdW50ID0gdGhpcy5ub2RlQ291bnQ7CisgICAgICAg
ICAgICB2YXIgZmlyc3RFZGdlSW5kZXhlcyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4ZXMgPSBuZXcg
VWludDMyQXJyYXkobm9kZUNvdW50ICsgMSk7CisgICAgICAgICAgICB2YXIgbm9kZUZpZWxkQ291
bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgIHZhciBub2RlRWRnZXNJbmRl
eE9mZnNldCA9IHRoaXMuX21ldGFOb2RlLm5vZGVfZmllbGRzLmluZGV4T2YoImVkZ2VzX2luZGV4
Iik7CisgICAgICAgICAgICBmaXJzdEVkZ2VJbmRleGVzW25vZGVDb3VudF0gPSB0aGlzLl9jb250
YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAgICAgICAgIGZvciAodmFyIG5vZGVPcmRpbmFsID0g
MDsgbm9kZU9yZGluYWwgPCBub2RlQ291bnQ7ICsrbm9kZU9yZGluYWwpIHsKKyAgICAgICAgICAg
ICAgICBmaXJzdEVkZ2VJbmRleGVzW25vZGVPcmRpbmFsXSA9IG5vZGVzW25vZGVPcmRpbmFsICog
bm9kZUZpZWxkQ291bnQgKyBub2RlRWRnZXNJbmRleE9mZnNldF07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgbm9kZXMgPSB0aGlz
Ll9ub2RlczsKKyAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OworICAgICAg
ICB2YXIgZmlyc3RFZGdlSW5kZXhlcyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4ZXMgPSBuZXcgVWlu
dDMyQXJyYXkobm9kZUNvdW50ICsgMSk7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRo
aXMuX25vZGVGaWVsZENvdW50OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9l
ZGdlRmllbGRDb3VudDsKKyAgICAgICAgdmFyIG5vZGVFZGdlQ291bnRPZmZzZXQgPSB0aGlzLl9u
b2RlRWRnZUNvdW50T2Zmc2V0OworICAgICAgICBmaXJzdEVkZ2VJbmRleGVzW25vZGVDb3VudF0g
PSB0aGlzLl9jb250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgbm9kZU9y
ZGluYWwgPSAwLCBlZGdlSW5kZXggPSAwOyBub2RlT3JkaW5hbCA8IG5vZGVDb3VudDsgKytub2Rl
T3JkaW5hbCkgeworICAgICAgICAgICAgZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF0gPSBl
ZGdlSW5kZXg7CisgICAgICAgICAgICBlZGdlSW5kZXggKz0gbm9kZXNbbm9kZU9yZGluYWwgKiBu
b2RlRmllbGRDb3VudCArIG5vZGVFZGdlQ291bnRPZmZzZXRdICogZWRnZUZpZWxkQ291bnQ7Cisg
ICAgICAgIH0KKyAgICB9LAorCiAgICAgX2J1aWxkUmV0YWluZXJzOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICB2YXIgcmV0YWluaW5nTm9kZXMgPSB0aGlzLl9yZXRhaW5pbmdOb2RlcyA9IG5l
dyBVaW50MzJBcnJheSh0aGlzLl9lZGdlQ291bnQpOwpAQCAtNzE4LDM0ICs3NDQsMzMgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmaXJzdFJl
dGFpbmVySW5kZXggPSB0aGlzLl9maXJzdFJldGFpbmVySW5kZXggPSBuZXcgVWludDMyQXJyYXko
dGhpcy5ub2RlQ291bnQgKyAxKTsKIAogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRo
aXMuX2NvbnRhaW5tZW50RWRnZXM7Ci0gICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0aGlz
Ll9lZGdlRmllbGRzQ291bnQ7CisgICAgICAgIHZhciBlZGdlRmllbGRDb3VudCA9IHRoaXMuX2Vk
Z2VGaWVsZENvdW50OwogICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmll
bGRDb3VudDsKICAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2Rl
T2Zmc2V0OwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKLSAgICAgICAgdmFyIGZp
cnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZzZXQ7CisgICAgICAg
IHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhlczsKKyAgICAgICAg
dmFyIG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OwogCi0gICAgICAgIGZvciAodmFyIHRvTm9k
ZUZpZWxkSW5kZXggPSBlZGdlVG9Ob2RlT2Zmc2V0LCBsID0gY29udGFpbm1lbnRFZGdlcy5sZW5n
dGg7IHRvTm9kZUZpZWxkSW5kZXggPCBsOyB0b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVsZHND
b3VudCkgeworICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gZWRnZVRvTm9kZU9m
ZnNldCwgbCA9IGNvbnRhaW5tZW50RWRnZXMubGVuZ3RoOyB0b05vZGVGaWVsZEluZGV4IDwgbDsg
dG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmllbGRDb3VudCkgewogICAgICAgICAgICAgdmFyIHRv
Tm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XTsKICAgICAgICAg
ICAgIGlmICh0b05vZGVJbmRleCAlIG5vZGVGaWVsZENvdW50KQogICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiSW52YWxpZCB0b05vZGVJbmRleCAiICsgdG9Ob2RlSW5kZXgpOwogICAg
ICAgICAgICAgKytmaXJzdFJldGFpbmVySW5kZXhbdG9Ob2RlSW5kZXggLyBub2RlRmllbGRDb3Vu
dF07CiAgICAgICAgIH0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGZpcnN0VW51c2VkUmV0YWlu
ZXJTbG90ID0gMCwgbCA9IHRoaXMubm9kZUNvdW50OyBpIDwgbDsgaSsrKSB7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBmaXJzdFVudXNlZFJldGFpbmVyU2xvdCA9IDA7IGkgPCBub2RlQ291bnQ7
IGkrKykgewogICAgICAgICAgICAgdmFyIHJldGFpbmVyc0NvdW50ID0gZmlyc3RSZXRhaW5lcklu
ZGV4W2ldOwogICAgICAgICAgICAgZmlyc3RSZXRhaW5lckluZGV4W2ldID0gZmlyc3RVbnVzZWRS
ZXRhaW5lclNsb3Q7CiAgICAgICAgICAgICByZXRhaW5pbmdOb2Rlc1tmaXJzdFVudXNlZFJldGFp
bmVyU2xvdF0gPSByZXRhaW5lcnNDb3VudDsKICAgICAgICAgICAgIGZpcnN0VW51c2VkUmV0YWlu
ZXJTbG90ICs9IHJldGFpbmVyc0NvdW50OwogICAgICAgICB9Ci0gICAgICAgIGZpcnN0UmV0YWlu
ZXJJbmRleFt0aGlzLm5vZGVDb3VudF0gPSByZXRhaW5pbmdOb2Rlcy5sZW5ndGg7CisgICAgICAg
IGZpcnN0UmV0YWluZXJJbmRleFtub2RlQ291bnRdID0gcmV0YWluaW5nTm9kZXMubGVuZ3RoOwog
Ci0gICAgICAgIHZhciBzcmNOb2RlSW5kZXggPSAwOwotICAgICAgICB2YXIgbmV4dE5vZGVGaXJz
dEVkZ2VJbmRleCA9IG5vZGVzW2ZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKLSAgICAgICAgdmFyIG5v
ZGVzTGVuZ3RoID0gdGhpcy5fcmVhbE5vZGVzTGVuZ3RoOwotICAgICAgICB3aGlsZSAoc3JjTm9k
ZUluZGV4IDwgbm9kZXNMZW5ndGgpIHsKKyAgICAgICAgdmFyIG5leHROb2RlRmlyc3RFZGdlSW5k
ZXggPSBmaXJzdEVkZ2VJbmRleGVzWzBdOworICAgICAgICBmb3IgKHZhciBzcmNOb2RlT3JkaW5h
bCA9IDA7IHNyY05vZGVPcmRpbmFsIDwgbm9kZUNvdW50OyArK3NyY05vZGVPcmRpbmFsKSB7CiAg
ICAgICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXggPSBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4Owot
ICAgICAgICAgICAgdmFyIG5leHROb2RlSW5kZXggPSBzcmNOb2RlSW5kZXggKyBub2RlRmllbGRD
b3VudDsKLSAgICAgICAgICAgIG5leHROb2RlRmlyc3RFZGdlSW5kZXggPSBub2Rlc1tuZXh0Tm9k
ZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgZm9yICh2YXIgZWRn
ZUluZGV4ID0gZmlyc3RFZGdlSW5kZXg7IGVkZ2VJbmRleCA8IG5leHROb2RlRmlyc3RFZGdlSW5k
ZXg7IGVkZ2VJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgIG5leHROb2Rl
Rmlyc3RFZGdlSW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW3NyY05vZGVPcmRpbmFsICsgMV07Cisg
ICAgICAgICAgICB2YXIgc3JjTm9kZUluZGV4ID0gc3JjTm9kZU9yZGluYWwgKiBub2RlRmllbGRD
b3VudDsKKyAgICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4OyBl
ZGdlSW5kZXggPCBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxk
Q291bnQpIHsKICAgICAgICAgICAgICAgICB2YXIgdG9Ob2RlSW5kZXggPSBjb250YWlubWVudEVk
Z2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOwogICAgICAgICAgICAgICAgIGlmICh0
b05vZGVJbmRleCAlIG5vZGVGaWVsZENvdW50KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkludmFsaWQgdG9Ob2RlSW5kZXggIiArIHRvTm9kZUluZGV4KTsKQEAgLTc1NCw3
ICs3NzksNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICByZXRhaW5pbmdOb2Rlc1tuZXh0VW51c2VkUmV0YWluZXJTbG90SW5kZXhdID0g
c3JjTm9kZUluZGV4OwogICAgICAgICAgICAgICAgIHJldGFpbmluZ0VkZ2VzW25leHRVbnVzZWRS
ZXRhaW5lclNsb3RJbmRleF0gPSBlZGdlSW5kZXg7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBzcmNOb2RlSW5kZXggPSBuZXh0Tm9kZUluZGV4OwogICAgICAgICB9CiAgICAgfSwKIApAQCAt
OTEwLDEwICs5MzQsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7
CiAgICAgX2JmczogZnVuY3Rpb24obm9kZXNUb1Zpc2l0LCBub2Rlc1RvVmlzaXRMZW5ndGgsIGRp
c3RhbmNlcykKICAgICB7CiAgICAgICAgIC8vIFBlbG9hZCBmaWVsZHMgaW50byBsb2NhbCB2YXJp
YWJsZXMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3Vu
dCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKLSAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMg
PSB0aGlzLl9jb250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0
aGlzLl9lZGdlRmllbGRDb3VudDsKICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5f
bm9kZUZpZWxkQ291bnQ7Ci0gICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleE9mZnNldCA9IHRoaXMu
X2ZpcnN0RWRnZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRo
aXMuX2NvbnRhaW5tZW50RWRnZXM7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhp
cy5fZmlyc3RFZGdlSW5kZXhlczsKICAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlz
Ll9lZGdlVG9Ob2RlT2Zmc2V0OwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAg
ICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OwpAQCAtOTI0LDkgKzk0OCw5IEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFy
IG5vZGVJbmRleCA9IG5vZGVzVG9WaXNpdFtpbmRleCsrXTsgLy8gc2hpZnQgZ2VuZXJhdGVzIHRv
byBtdWNoIGdhcmJhZ2UuCiAgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXgg
LyBub2RlRmllbGRDb3VudDsKICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IGRpc3RhbmNlc1tu
b2RlT3JkaW5hbF0gKyAxOwotICAgICAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ID0gbm9kZXNb
bm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgdmFyIGVkZ2Vz
RW5kID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRD
b3VudF07Ci0gICAgICAgICAgICBmb3IgKHZhciBlZGdlVG9Ob2RlSW5kZXggPSBmaXJzdEVkZ2VJ
bmRleCArIGVkZ2VUb05vZGVPZmZzZXQ7IGVkZ2VUb05vZGVJbmRleCA8IGVkZ2VzRW5kOyBlZGdl
VG9Ob2RlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICB2YXIgZmlyc3RF
ZGdlSW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW25vZGVPcmRpbmFsXTsKKyAgICAgICAgICAgIHZh
ciBlZGdlc0VuZCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGVkZ2VUb05vZGVJbmRleCA9IGZpcnN0RWRnZUluZGV4ICsgZWRnZVRvTm9k
ZU9mZnNldDsgZWRnZVRvTm9kZUluZGV4IDwgZWRnZXNFbmQ7IGVkZ2VUb05vZGVJbmRleCArPSBl
ZGdlRmllbGRDb3VudCkgewogICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9IGNv
bnRhaW5tZW50RWRnZXNbZWRnZVRvTm9kZUluZGV4XTsKICAgICAgICAgICAgICAgICB2YXIgY2hp
bGROb2RlT3JkaW5hbCA9IGNoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAg
ICAgICAgICAgaWYgKGRpc3RhbmNlc1tjaGlsZE5vZGVPcmRpbmFsXSkKQEAgLTk0Niw3ICs5NzAs
NyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFy
IGNsYXNzSW5kZXhlcyA9IFtdOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAg
ICAgICAgdmFyIGZsYWdzID0gdGhpcy5fZmxhZ3M7Ci0gICAgICAgIHZhciBub2Rlc0xlbmd0aCA9
IHRoaXMuX3JlYWxOb2Rlc0xlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVzTGVuZ3RoID0gbm9kZXMu
bGVuZ3RoOwogICAgICAgICB2YXIgbm9kZU5hdGl2ZVR5cGUgPSB0aGlzLl9ub2RlTmF0aXZlVHlw
ZTsKICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CiAg
ICAgICAgIHZhciBzZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldDsKQEAg
LTEwNjYsMTMgKzEwOTAsMTMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50Owog
ICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIG5vZGVDb3VudCA9
IHRoaXMubm9kZUNvdW50OwotICAgICAgICB2YXIgcm9vdE5vZGVJbmRleCA9IHRoaXMuX3Jvb3RO
b2RlSW5kZXg7CisgICAgICAgIHZhciByb290Tm9kZU9yZGluYWwgPSB0aGlzLl9yb290Tm9kZUlu
ZGV4IC8gbm9kZUZpZWxkQ291bnQ7CiAKLSAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRo
aXMuX2VkZ2VGaWVsZHNDb3VudDsKLSAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlz
Ll9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9l
ZGdlRmllbGRDb3VudDsKICAgICAgICAgdmFyIGVkZ2VUeXBlT2Zmc2V0ID0gdGhpcy5fZWRnZVR5
cGVPZmZzZXQ7CisgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9k
ZU9mZnNldDsKICAgICAgICAgdmFyIGVkZ2VTaG9ydGN1dFR5cGUgPSB0aGlzLl9lZGdlU2hvcnRj
dXRUeXBlOwotICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSB0aGlzLl9maXJzdEVk
Z2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ZXMgPSB0aGlzLl9maXJz
dEVkZ2VJbmRleGVzOwogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRh
aW5tZW50RWRnZXM7CiAgICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzTGVuZ3RoID0gdGhpcy5f
Y29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CiAKQEAgLTEwODgsMzAgKzExMTIsMjkgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBncmV5ID0gMTsK
ICAgICAgICAgdmFyIGJsYWNrID0gMjsKIAotICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zp
c2l0TGVuZ3RoKytdID0gdGhpcy5fcm9vdE5vZGVJbmRleDsKLSAgICAgICAgcGFpbnRlZFt0aGlz
Ll9yb290Tm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnRdID0gZ3JleTsKKyAgICAgICAgbm9kZXNU
b1Zpc2l0W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IHJvb3ROb2RlT3JkaW5hbDsKKyAgICAgICAg
cGFpbnRlZFtyb290Tm9kZU9yZGluYWxdID0gZ3JleTsKIAogICAgICAgICB3aGlsZSAobm9kZXNU
b1Zpc2l0TGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gbm9kZXNUb1Zpc2l0
W25vZGVzVG9WaXNpdExlbmd0aCAtIDFdOwotICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0g
bm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwg
PSBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoIC0gMV07CiAgICAgICAgICAgICBpZiAo
cGFpbnRlZFtub2RlT3JkaW5hbF0gPT09IGdyZXkpIHsKICAgICAgICAgICAgICAgICBwYWludGVk
W25vZGVPcmRpbmFsXSA9IGJsYWNrOwogICAgICAgICAgICAgICAgIHZhciBub2RlRmxhZyA9IGZs
YWdzW25vZGVPcmRpbmFsXSAmIGZsYWc7Ci0gICAgICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUlu
ZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAgICAg
ICAgICAgIHZhciBlbmRFZGdlSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRl
eE9mZnNldCArIG5vZGVGaWVsZENvdW50XTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBlZGdl
SW5kZXggPSBiZWdpbkVkZ2VJbmRleDsgZWRnZUluZGV4IDwgZW5kRWRnZUluZGV4OyBlZGdlSW5k
ZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlSW5k
ZXggIT09IHJvb3ROb2RlSW5kZXggJiYgY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdl
VHlwZU9mZnNldF0gPT09IGVkZ2VTaG9ydGN1dFR5cGUpCisgICAgICAgICAgICAgICAgdmFyIGJl
Z2luRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CisgICAgICAgICAg
ICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAx
XTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBiZWdpbkVkZ2VJbmRleDsg
ZWRnZUluZGV4IDwgZW5kRWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkQ291bnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVPcmRpbmFsICE9PSByb290Tm9kZU9yZGluYWwg
JiYgY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldF0gPT09IGVkZ2VT
aG9ydGN1dFR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICAgICAgdmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5k
ZXggKyBlZGdlVG9Ob2RlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9k
ZU9yZGluYWwgPSBjaGlsZE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OwogICAgICAgICAgICAg
ICAgICAgICB2YXIgY2hpbGROb2RlRmxhZyA9IGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdICYgZmxh
ZzsKICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHNraXBwaW5nIHRoZSBlZGdlcyBmcm9t
IG5vbi1wYWdlLW93bmVkIG5vZGVzIHRvIHBhZ2Utb3duZWQgbm9kZXMuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSB0aGUgZG9taW5hdG9ycyBmb3IgdGhlIG9iamVjdHMgdGhhdCBh
bHNvIHdlcmUgcmV0YWluZWQgYnkgZGVidWdnZXIgd291bGQgYmUgYWZmZWN0ZWQuCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlSW5kZXggIT09IHJvb3ROb2RlSW5kZXggJiYgY2hpbGROb2Rl
RmxhZyAmJiAhbm9kZUZsYWcpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlT3JkaW5hbCAh
PT0gcm9vdE5vZGVPcmRpbmFsICYmIGNoaWxkTm9kZUZsYWcgJiYgIW5vZGVGbGFnKQogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGFp
bnRlZFtjaGlsZE5vZGVPcmRpbmFsXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRl
ZFtjaGlsZE5vZGVPcmRpbmFsXSA9IGdyZXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2Rl
c1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gY2hpbGROb2RlSW5kZXg7CisgICAgICAg
ICAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gY2hp
bGROb2RlT3JkaW5hbDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTQxLDExICsxMTY0LDExIEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZmlyc3RSZXRhaW5lcklu
ZGV4ID0gdGhpcy5fZmlyc3RSZXRhaW5lckluZGV4OwogICAgICAgICB2YXIgcmV0YWluaW5nTm9k
ZXMgPSB0aGlzLl9yZXRhaW5pbmdOb2RlczsKICAgICAgICAgdmFyIHJldGFpbmluZ0VkZ2VzID0g
dGhpcy5fcmV0YWluaW5nRWRnZXM7Ci0gICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0aGlz
Ll9lZGdlRmllbGRzQ291bnQ7Ci0gICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5f
ZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gdGhpcy5fZWRn
ZUZpZWxkQ291bnQ7CiAgICAgICAgIHZhciBlZGdlVHlwZU9mZnNldCA9IHRoaXMuX2VkZ2VUeXBl
T2Zmc2V0OworICAgICAgICB2YXIgZWRnZVRvTm9kZU9mZnNldCA9IHRoaXMuX2VkZ2VUb05vZGVP
ZmZzZXQ7CiAgICAgICAgIHZhciBlZGdlU2hvcnRjdXRUeXBlID0gdGhpcy5fZWRnZVNob3J0Y3V0
VHlwZTsKLSAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdl
SW5kZXhPZmZzZXQ7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RF
ZGdlSW5kZXhlczsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlu
bWVudEVkZ2VzOwogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IHRoaXMuX2Nv
bnRhaW5tZW50RWRnZXMubGVuZ3RoOwogICAgICAgICB2YXIgcm9vdE5vZGVJbmRleCA9IHRoaXMu
X3Jvb3ROb2RlSW5kZXg7CkBAIC0xMTY2LDEyICsxMTg5LDEyIEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYWZmZWN0ZWQgPSBuZXcgVWludDhB
cnJheShub2Rlc0NvdW50KTsKIAogICAgICAgICB7IC8vIE1hcmsgdGhlIHJvb3QgZGlyZWN0IGNo
aWxkcmVuIGFzIGFmZmVjdGVkLgotICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHRoaXMuX3Jv
b3ROb2RlSW5kZXg7Ci0gICAgICAgICAgICB2YXIgYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9
IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZz
ZXQ7Ci0gICAgICAgICAgICB2YXIgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2Rl
SW5kZXggKyBub2RlRmllbGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAg
ICAgIHZhciBub2RlT3JkaW5hbCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3Vu
dDsKKyAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gZmlyc3RFZGdl
SW5kZXhlc1tub2RlT3JkaW5hbF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAgdmFy
IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbCAr
IDFdOwogICAgICAgICAgICAgZm9yICh2YXIgdG9Ob2RlRmllbGRJbmRleCA9IGJlZ2luRWRnZVRv
Tm9kZUZpZWxkSW5kZXg7CiAgICAgICAgICAgICAgICAgIHRvTm9kZUZpZWxkSW5kZXggPCBlbmRF
ZGdlVG9Ob2RlRmllbGRJbmRleDsKLSAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCAr
PSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCAr
PSBlZGdlRmllbGRDb3VudCkgewogICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFs
ID0gY29udGFpbm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XSAvIG5vZGVGaWVsZENvdW50Owog
ICAgICAgICAgICAgICAgIGFmZmVjdGVkW25vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4W2NoaWxk
Tm9kZU9yZGluYWxdXSA9IDE7CiAgICAgICAgICAgICB9CkBAIC0xMjI3LDEyICsxMjUwLDExIEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
ICAgICBkb21pbmF0b3JzW3Bvc3RPcmRlckluZGV4XSA9IG5ld0RvbWluYXRvckluZGV4OwogICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZU9yZGluYWwgPSBwb3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbFtwb3N0T3JkZXJJbmRleF07Ci0g
ICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IG5vZGVPcmRpbmFsICogbm9kZUZpZWxkQ291
bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rl
c1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdlVG9Ob2RlT2Zmc2V0Owot
ICAgICAgICAgICAgICAgICAgICBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25vZGVJ
bmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdOworICAgICAgICAg
ICAgICAgICAgICBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tu
b2RlT3JkaW5hbF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBlbmRF
ZGdlVG9Ob2RlRmllbGRJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdG9Ob2RlRmllbGRJbmRleCA9IGJlZ2luRWRn
ZVRvTm9kZUZpZWxkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJ
bmRleCA8IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAg
IHRvTm9kZUZpZWxkSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmllbGRDb3VudCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjb250YWlubWVudEVkZ2VzW3Rv
Tm9kZUZpZWxkSW5kZXhdIC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBhZmZlY3RlZFtub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtjaGlsZE5vZGVPcmRpbmFsXV0g
PSAxOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMzY1LDkgKzEzODcsOSBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVkZ2VTaG9ydGN1
dFR5cGUgPSB0aGlzLl9lZGdlU2hvcnRjdXRUeXBlOwogICAgICAgICB2YXIgZWRnZVRvTm9kZU9m
ZnNldCA9IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQ7CiAgICAgICAgIHZhciBlZGdlVHlwZU9mZnNl
dCA9IHRoaXMuX2VkZ2VUeXBlT2Zmc2V0OwotICAgICAgICB2YXIgZWRnZUZpZWxkc0NvdW50ID0g
dGhpcy5fZWRnZUZpZWxkc0NvdW50OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlz
Ll9lZGdlRmllbGRDb3VudDsKICAgICAgICAgdmFyIGVkZ2VXZWFrVHlwZSA9IHRoaXMuX2VkZ2VX
ZWFrVHlwZTsKLSAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RF
ZGdlSW5kZXhPZmZzZXQ7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmly
c3RFZGdlSW5kZXhlczsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250
YWlubWVudEVkZ2VzOwogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IGNvbnRh
aW5tZW50RWRnZXMubGVuZ3RoOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKQEAg
LTEzODMsMjYgKzE0MDUsMjQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXkobm9kZXNDb3Vu
dCk7CiAgICAgICAgIHZhciBub2Rlc1RvVmlzaXRMZW5ndGggPSAwOwogCi0gICAgICAgIGZvciAo
dmFyIGVkZ2VJbmRleCA9IG5vZGVzW3RoaXMuX3Jvb3ROb2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRl
eE9mZnNldF0sIGVuZEVkZ2VJbmRleCA9IG5vZGVzW3RoaXMuX3Jvb3ROb2RlSW5kZXggKyBub2Rl
RmllbGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgdmFyIHJvb3ROb2Rl
T3JkaW5hbCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAg
Zm9yICh2YXIgZWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tyb290Tm9kZU9yZGluYWxdLCBl
bmRFZGdlSW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW3Jvb3ROb2RlT3JkaW5hbCArIDFdOwogICAg
ICAgICAgICAgIGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsKLSAgICAgICAgICAgICBlZGdlSW5k
ZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICAgZWRnZUluZGV4ICs9IGVkZ2VG
aWVsZENvdW50KSB7CiAgICAgICAgICAgICBpZiAoY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXgg
KyBlZGdlVHlwZU9mZnNldF0gPT09IGVkZ2VTaG9ydGN1dFR5cGUpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgbm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2Rl
T2Zmc2V0XTsKLSAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3Ro
KytdID0gbm9kZUluZGV4OwotICAgICAgICAgICAgICAgIGZsYWdzW25vZGVJbmRleCAvIG5vZGVG
aWVsZENvdW50XSB8PSB2aXNpdGVkTWFya2VyOworICAgICAgICAgICAgICAgIHZhciBub2RlT3Jk
aW5hbCA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF0gLyBu
b2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0
TGVuZ3RoKytdID0gbm9kZU9yZGluYWw7CisgICAgICAgICAgICAgICAgZmxhZ3Nbbm9kZU9yZGlu
YWxdIHw9IHZpc2l0ZWRNYXJrZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICB3aGlsZSAobm9kZXNUb1Zpc2l0TGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZUluZGV4
ID0gbm9kZXNUb1Zpc2l0Wy0tbm9kZXNUb1Zpc2l0TGVuZ3RoXTsKLSAgICAgICAgICAgIHZhciBu
b2RlT3JkaW5hbCA9IG5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgdmFy
IG5vZGVPcmRpbmFsID0gbm9kZXNUb1Zpc2l0Wy0tbm9kZXNUb1Zpc2l0TGVuZ3RoXTsKICAgICAg
ICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOwogICAgICAgICAgICAgZmxhZ3Nbbm9k
ZU9yZGluYWxdICY9IHZpc2l0ZWRNYXJrZXJNYXNrOwotICAgICAgICAgICAgdmFyIGJlZ2luRWRn
ZUluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAg
ICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVPcmRpbmFsIDwgbm9kZXNDb3VudCAtIDEKLSAg
ICAgICAgICAgICAgICA/IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsg
bm9kZUZpZWxkQ291bnRdCi0gICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzTGVuZ3Ro
OwotICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJ
bmRleCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAg
ICAgICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5h
bF07CisgICAgICAgICAgICB2YXIgZW5kRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2Rl
T3JkaW5hbCArIDFdOworICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdl
SW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZENv
dW50KSB7CiAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRF
ZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICB2YXIg
Y2hpbGROb2RlT3JkaW5hbCA9IGNoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CiAgICAg
ICAgICAgICAgICAgaWYgKGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdICYgbWFya2VyQW5kRmxhZykK
QEAgLTE0MTAsNyArMTQzMCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIHZhciB0eXBlID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5k
ZXggKyBlZGdlVHlwZU9mZnNldF07CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IGVkZ2VX
ZWFrVHlwZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
bm9kZXNUb1Zpc2l0W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IGNoaWxkTm9kZUluZGV4OworICAg
ICAgICAgICAgICAgIG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgrK10gPSBjaGlsZE5v
ZGVPcmRpbmFsOwogICAgICAgICAgICAgICAgIGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdIHw9IHZp
c2l0ZWRNYXJrZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0MjcsMzcgKzE0NDcs
MzcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBpbnZpc2libGVFZGdlVHlwZSA9IHRoaXMuX2VkZ2VJbnZpc2libGVUeXBlOwogICAgICAgICB2
YXIgZWRnZVRvTm9kZU9mZnNldCA9IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQ7CiAgICAgICAgIHZh
ciBlZGdlVHlwZU9mZnNldCA9IHRoaXMuX2VkZ2VUeXBlT2Zmc2V0OwotICAgICAgICB2YXIgZWRn
ZUZpZWxkc0NvdW50ID0gdGhpcy5fZWRnZUZpZWxkc0NvdW50OworICAgICAgICB2YXIgZWRnZUZp
ZWxkQ291bnQgPSB0aGlzLl9lZGdlRmllbGRDb3VudDsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50
RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlz
Ll9ub2RlczsKICAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OwogICAgICAg
ICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKLSAgICAgICAgdmFy
IGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZzZXQ7CisgICAg
ICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhlczsKIAogICAg
ICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKICAgICAgICAgdmFyIGxpc3QgPSBbXTsKIAog
ICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5yb290Tm9kZSgpLmVkZ2VzKCk7IGl0ZXIuaGFz
TmV4dCgpOyBpdGVyLm5leHQoKSkgewogICAgICAgICAgICAgaWYgKGl0ZXIuZWRnZS5ub2RlKCku
aXNXaW5kb3coKSkKLSAgICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlci5lZGdlLm5vZGUoKS5u
b2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGxpc3QucHVzaChpdGVyLmVkZ2Uubm9kZSgpLm5v
ZGVJbmRleCAvIG5vZGVGaWVsZENvdW50KTsKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlIChs
aXN0Lmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IGxpc3QucG9wKCk7Ci0g
ICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsK
KyAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IGxpc3QucG9wKCk7CiAgICAgICAgICAgICBp
ZiAoZmxhZ3Nbbm9kZU9yZGluYWxdICYgZmxhZykKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOwotICAgICAgICAgICAgdmFy
IGJlZ2luRWRnZUluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRd
OwotICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0
RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdOwotICAgICAgICAgICAgZm9yICh2YXIg
ZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsgZWRn
ZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUlu
ZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CisgICAgICAgICAgICB2YXIgZW5k
RWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbCArIDFdOworICAgICAgICAg
ICAgZm9yICh2YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVk
Z2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZENvdW50KSB7CiAgICAgICAgICAgICAgICAg
dmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9O
b2RlT2Zmc2V0XTsKLSAgICAgICAgICAgICAgICBpZiAoZmxhZ3NbY2hpbGROb2RlSW5kZXggLyBu
b2RlRmllbGRDb3VudF0gJiBmbGFnKQorICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRp
bmFsID0gY2hpbGROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBp
ZiAoZmxhZ3NbY2hpbGROb2RlT3JkaW5hbF0gJiBmbGFnKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGNvbnRhaW5tZW50RWRnZXNbZWRn
ZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdOwogICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBo
aWRkZW5FZGdlVHlwZSB8fCB0eXBlID09PSBpbnZpc2libGVFZGdlVHlwZSB8fCB0eXBlID09PSBp
bnRlcm5hbEVkZ2VUeXBlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICBsaXN0LnB1c2goY2hpbGROb2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGxpc3Qu
cHVzaChjaGlsZE5vZGVPcmRpbmFsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNDhhMzQ5ZTYxNDcyMjlhNThiOTJlODU4ODM2MDQ1YzEwODNkNTUzNy4uZWE2Yjdm
N2U0ZGQyNjFlODE5MTFjMWJkMWE5ODAxYTE3MDI0MzE2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTA2LTA1ICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBzZXJpYWxpemUgZWRnZSBjb3VudHMgaW5zdGVhZCBvZiBp
bmRleGVzIGluIGhlYXAgc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5q
czoKKyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LmNy
ZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25h
cHNob3RUZXN0Lkluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1Jhdyk6CisgICAg
ICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3QuSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFw
U25hcHNob3RNb2NrV2l0aERPTSk6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRl
c3QuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sOgor
CiAyMDEyLTA2LTA1ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVyIHIxMTk0NjkuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3Rl
ZC50eHQKaW5kZXggODQ3MTZmNmE4N2M2MDcwN2NhZTQzNTNmOTRhMGI1MmU0M2NjY2I3Ni4uZWJh
ZTc3NjQ4OGM1MGEyZGYyZDQ4ZmM4MTBjNTQ5ZjgxMTVlMzg4YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4
dApAQCAtMTMsNiArMTMsOCBAQCBSdW5uaW5nOiBoZWFwU25hcHNob3ROb2RlQW5kRWRnZVRlc3QK
IAogUnVubmluZzogaGVhcFNuYXBzaG90U2ltcGxlVGVzdAogCitSdW5uaW5nOiBoZWFwU25hcHNo
b3RDb250YWlubWVudEVkZ2VJbmRleGVzVGVzdAorCiBSdW5uaW5nOiBoZWFwU25hcHNob3RQb3N0
T3JkZXJJbmRleFRlc3QKIAogUnVubmluZzogaGVhcFNuYXBzaG90RG9taW5hdG9yc1RyZWVUZXN0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hv
dC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qt
dGVzdC5qcwppbmRleCAyYTdlNGNlNmM5OTkxZjMwMTc2NzQyN2NhOTgxMTFiZTZmYjQxOTBhLi4z
OTMxMmU3MWQyNzRhNmU4MzM4MjRmNTc0ZDU1ZmFlMTA0Mzc1ODMxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKQEAgLTYs
MTEgKzYsOSBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QgPSBm
dW5jdGlvbigpCiAgICAgICAgIF9yb290Tm9kZUluZGV4OiAwLAogICAgICAgICBfbm9kZVR5cGVP
ZmZzZXQ6IDAsCiAgICAgICAgIF9ub2RlTmFtZU9mZnNldDogMSwKLSAgICAgICAgX2VkZ2VzQ291
bnRPZmZzZXQ6IDIsCi0gICAgICAgIF9maXJzdEVkZ2VJbmRleE9mZnNldDogMiwKLSAgICAgICAg
X2ZpcnN0RWRnZU9mZnNldDogMywKKyAgICAgICAgX25vZGVFZGdlQ291bnRPZmZzZXQ6IDIsCiAg
ICAgICAgIF9ub2RlRmllbGRDb3VudDogMywKLSAgICAgICAgX2VkZ2VGaWVsZHNDb3VudDogMywK
KyAgICAgICAgX2VkZ2VGaWVsZENvdW50OiAzLAogICAgICAgICBfZWRnZVR5cGVPZmZzZXQ6IDAs
CiAgICAgICAgIF9lZGdlTmFtZU9mZnNldDogMSwKICAgICAgICAgX2VkZ2VUb05vZGVPZmZzZXQ6
IDIsCkBAIC0zMCwxMyArMjgsMTIgQEAgSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RN
b2NrT2JqZWN0ID0gZnVuY3Rpb24oKQogICAgICAgICAvLyAgICAgICAgIC0+IEIgKDYpIC1iZC0g
RCAoMTIpCiAgICAgICAgIC8vCiAgICAgICAgIF9ub2RlczogWwotICAgICAgICAgICAgMCwgMCwg
MCwgICAgLy8gIDA6IHJvb3QKLSAgICAgICAgICAgIDEsIDEsIDYsICAgIC8vICAzOiBBCi0gICAg
ICAgICAgICAxLCAyLCAxMiwgICAvLyAgNjogQgotICAgICAgICAgICAgMSwgMywgMTgsICAgLy8g
IDk6IEMKLSAgICAgICAgICAgIDEsIDQsIDIxLCAgIC8vIDEyOiBECi0gICAgICAgICAgICAxLCA1
LCAyMSwgICAvLyAxNTogRQotICAgICAgICAgICAgMCwgMCwgMjFdLCAgLy8gMTg6IChleHRyYSBu
b2RlKQorICAgICAgICAgICAgMCwgMCwgMiwgICAgLy8gIDA6IHJvb3QKKyAgICAgICAgICAgIDEs
IDEsIDIsICAgIC8vICAzOiBBCisgICAgICAgICAgICAxLCAyLCAyLCAgICAvLyAgNjogQgorICAg
ICAgICAgICAgMSwgMywgMSwgICAgLy8gIDk6IEMKKyAgICAgICAgICAgIDEsIDQsIDAsICAgIC8v
IDEyOiBECisgICAgICAgICAgICAxLCA1LCAwXSwgICAvLyAxNTogRQogICAgICAgICBfY29udGFp
bm1lbnRFZGdlczogWwogICAgICAgICAgICAgMiwgIDYsIDMsICAgLy8gIDA6IHNob3J0Y3V0ICdh
JyB0byBub2RlICdBJwogICAgICAgICAgICAgMSwgIDcsIDYsICAgLy8gIDM6IHByb3BlcnR5ICdi
JyB0byBub2RlICdCJwpAQCAtNDUsNyArNDIsOCBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBT
bmFwc2hvdE1vY2tPYmplY3QgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAxLCAgOSwgOSwgICAv
LyAxMjogcHJvcGVydHkgJ2JjJyB0byBub2RlICdDJwogICAgICAgICAgICAgMSwgMTAsIDEyLCAg
Ly8gMTU6IHByb3BlcnR5ICdiZCcgdG8gbm9kZSAnRCcKICAgICAgICAgICAgIDEsIDExLCAxNV0s
IC8vIDE4OiBwcm9wZXJ0eSAnY2UnIHRvIG5vZGUgJ0UnCi0gICAgICAgIF9zdHJpbmdzOiBbIiIs
ICJBIiwgIkIiLCAiQyIsICJEIiwgIkUiLCAiYSIsICJiIiwgImFjIiwgImJjIiwgImJkIiwgImNl
Il0KKyAgICAgICAgX3N0cmluZ3M6IFsiIiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJhIiwg
ImIiLCAiYWMiLCAiYmMiLCAiYmQiLCAiY2UiXSwKKyAgICAgICAgX2ZpcnN0RWRnZUluZGV4ZXM6
IFswLCA2LCAxMiwgMTgsIDIxLCAyMSwgMjFdCiAgICAgfTsKIH07CiAKQEAgLTY2LDcgKzY0LDcg
QEAgSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrUmF3ID0gZnVuY3Rpb24oKQog
ICAgIHJldHVybiB7CiAgICAgICAgIHNuYXBzaG90OiB7CiAgICAgICAgICAgICBtZXRhOiB7Ci0g
ICAgICAgICAgICAgICAgbm9kZV9maWVsZHM6IFsidHlwZSIsICJuYW1lIiwgImlkIiwgInNlbGZf
c2l6ZSIsICJyZXRhaW5lZF9zaXplIiwgImRvbWluYXRvciIsICJlZGdlc19pbmRleCJdLAorICAg
ICAgICAgICAgICAgIG5vZGVfZmllbGRzOiBbInR5cGUiLCAibmFtZSIsICJpZCIsICJzZWxmX3Np
emUiLCAicmV0YWluZWRfc2l6ZSIsICJkb21pbmF0b3IiLCAiZWRnZV9jb3VudCJdLAogICAgICAg
ICAgICAgICAgIG5vZGVfdHlwZXM6IFtbImhpZGRlbiIsICJvYmplY3QiXSwgIiIsICIiLCAiIiwg
IiIsICIiLCAiIl0sCiAgICAgICAgICAgICAgICAgZWRnZV9maWVsZHM6IFsidHlwZSIsICJuYW1l
X29yX2luZGV4IiwgInRvX25vZGUiXSwKICAgICAgICAgICAgICAgICBlZGdlX3R5cGVzOiBbWyJl
bGVtZW50IiwgInByb3BlcnR5IiwgInNob3J0Y3V0Il0sICIiLCAiIl0KQEAgLTc0LDEyICs3Miwx
MiBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcgPSBmdW5jdGlvbigp
CiAgICAgICAgICAgICBub2RlX2NvdW50OiA2LAogICAgICAgICAgICAgZWRnZV9jb3VudDogN30s
CiAgICAgICAgIG5vZGVzOiBbCi0gICAgICAgICAgICAwLCAwLCAxLCAwLCAyMCwgIDAsICAwLCAv
LyByb290ICgwKQotICAgICAgICAgICAgMSwgMSwgMiwgMiwgIDIsICAwLCAgNiwgLy8gQSAoNykK
LSAgICAgICAgICAgIDEsIDIsIDMsIDMsICA4LCAgMCwgMTIsIC8vIEIgKDE0KQotICAgICAgICAg
ICAgMSwgMywgNCwgNCwgMTAsICAwLCAxOCwgLy8gQyAoMjEpCi0gICAgICAgICAgICAxLCA0LCA1
LCA1LCAgNSwgMTQsIDIxLCAvLyBEICgyOCkKLSAgICAgICAgICAgIDEsIDUsIDYsIDYsICA2LCAy
MSwgMjFdLC8vIEUgKDM1KQorICAgICAgICAgICAgMCwgMCwgMSwgMCwgMjAsICAwLCAyLCAgLy8g
cm9vdCAoMCkKKyAgICAgICAgICAgIDEsIDEsIDIsIDIsICAyLCAgMCwgMiwgIC8vIEEgKDcpCisg
ICAgICAgICAgICAxLCAyLCAzLCAzLCAgOCwgIDAsIDIsICAvLyBCICgxNCkKKyAgICAgICAgICAg
IDEsIDMsIDQsIDQsIDEwLCAgMCwgMSwgIC8vIEMgKDIxKQorICAgICAgICAgICAgMSwgNCwgNSwg
NSwgIDUsIDE0LCAwLCAgLy8gRCAoMjgpCisgICAgICAgICAgICAxLCA1LCA2LCA2LCAgNiwgMjEs
IDBdLCAvLyBFICgzNSkKICAgICAgICAgZWRnZXM6IFsKICAgICAgICAgICAgIC8vIHJvb3Qgbm9k
ZSBlZGdlcwogICAgICAgICAgICAgMiwgIDYsICA3LCAvLyBzaG9ydGN1dCAnYScgdG8gbm9kZSAn
QScKQEAgLTExNiw3ICsxMTQsNyBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1v
Y2tXaXRoRE9NID0gZnVuY3Rpb24oKQogICAgIHJldHVybiBJbnNwZWN0b3JUZXN0Ll9wb3N0cHJv
Y2Vzc0hlYXBTbmFwc2hvdE1vY2soewogICAgICAgICBzbmFwc2hvdDogewogICAgICAgICAgICAg
bWV0YTogewotICAgICAgICAgICAgICAgIG5vZGVfZmllbGRzOiBbInR5cGUiLCAibmFtZSIsICJp
ZCIsICJlZGdlc19pbmRleCJdLAorICAgICAgICAgICAgICAgIG5vZGVfZmllbGRzOiBbInR5cGUi
LCAibmFtZSIsICJpZCIsICJlZGdlX2NvdW50Il0sCiAgICAgICAgICAgICAgICAgbm9kZV90eXBl
czogW1siaGlkZGVuIiwgIm9iamVjdCJdLCAiIiwgIiIsICIiXSwKICAgICAgICAgICAgICAgICBl
ZGdlX2ZpZWxkczogWyJ0eXBlIiwgIm5hbWVfb3JfaW5kZXgiLCAidG9fbm9kZSJdLAogICAgICAg
ICAgICAgICAgIGVkZ2VfdHlwZXM6IFtbImVsZW1lbnQiLCAiaGlkZGVuIiwgImludGVybmFsIl0s
ICIiLCAiIl0KQEAgLTEzNywxOSArMTM1LDE5IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNu
YXBzaG90TW9ja1dpdGhET00gPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAvLyAgICB8ICAgICAg
ICAgICAgICAgICAgIHYKICAgICAgICAgICAgIC8vICAgIHwtLS0tLT5GLS0tPkcgICAgICAgTQog
ICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8qIChyb290KSAqLyAgICAwLCAgMCwgIDEsICAw
LAotICAgICAgICAgICAgLyogV2luZG93ICovICAgIDEsIDExLCAgMiwgMTIsCi0gICAgICAgICAg
ICAvKiBXaW5kb3cgKi8gICAgMSwgMTEsICAzLCAxOCwKLSAgICAgICAgICAgIC8qIEUgKi8gICAg
ICAgICAxLCAgNSwgIDQsIDI3LAotICAgICAgICAgICAgLyogRiAqLyAgICAgICAgIDEsICA2LCAg
NSwgMjcsCi0gICAgICAgICAgICAvKiBBICovICAgICAgICAgMSwgIDEsICA2LCAzMCwKLSAgICAg
ICAgICAgIC8qIEIgKi8gICAgICAgICAxLCAgMiwgIDcsIDMwLAotICAgICAgICAgICAgLyogRCAq
LyAgICAgICAgIDEsICA0LCAgOCwgMzMsCi0gICAgICAgICAgICAvKiBIICovICAgICAgICAgMSwg
IDgsICA5LCAzOSwKLSAgICAgICAgICAgIC8qIEcgKi8gICAgICAgICAxLCAgNywgMTAsIDM5LAot
ICAgICAgICAgICAgLyogQyAqLyAgICAgICAgIDEsICAzLCAxMSwgMzksCi0gICAgICAgICAgICAv
KiBOICovICAgICAgICAgMSwgMTAsIDEyLCAzOSwKLSAgICAgICAgICAgIC8qIE0gKi8gICAgICAg
ICAxLCAgOSwgMTMsIDM5CisgICAgICAgICAgICAvKiAocm9vdCkgKi8gICAgMCwgIDAsICAxLCA0
LAorICAgICAgICAgICAgLyogV2luZG93ICovICAgIDEsIDExLCAgMiwgMiwKKyAgICAgICAgICAg
IC8qIFdpbmRvdyAqLyAgICAxLCAxMSwgIDMsIDMsCisgICAgICAgICAgICAvKiBFICovICAgICAg
ICAgMSwgIDUsICA0LCAwLAorICAgICAgICAgICAgLyogRiAqLyAgICAgICAgIDEsICA2LCAgNSwg
MSwKKyAgICAgICAgICAgIC8qIEEgKi8gICAgICAgICAxLCAgMSwgIDYsIDAsCisgICAgICAgICAg
ICAvKiBCICovICAgICAgICAgMSwgIDIsICA3LCAxLAorICAgICAgICAgICAgLyogRCAqLyAgICAg
ICAgIDEsICA0LCAgOCwgMiwKKyAgICAgICAgICAgIC8qIEggKi8gICAgICAgICAxLCAgOCwgIDks
IDAsCisgICAgICAgICAgICAvKiBHICovICAgICAgICAgMSwgIDcsIDEwLCAwLAorICAgICAgICAg
ICAgLyogQyAqLyAgICAgICAgIDEsICAzLCAxMSwgMCwKKyAgICAgICAgICAgIC8qIE4gKi8gICAg
ICAgICAxLCAxMCwgMTIsIDAsCisgICAgICAgICAgICAvKiBNICovICAgICAgICAgMSwgIDksIDEz
LCAwCiAgICAgICAgICAgICBdLAogICAgICAgICBlZGdlczogWwogICAgICAgICAgICAgLyogZnJv
bSAocm9vdCkgKi8gIDAsICAxLCAgNCwgMCwgMiwgIDgsIDAsIDMsIDEyLCAwLCA0LCAxNiwKQEAg
LTQ2MCw5ICs0NTgsOSBAQCBJbnNwZWN0b3JUZXN0LkhlYXBOb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgLy8gYW5kIGV2ZW4gaWRzIGJhc2VkIG9uIGEgaGFzaCBmb3IgbmF0aXZlIERPTU9iamVj
dCBncm91cHMuCiAgICAgICAgIHJhd1NuYXBzaG90Lm5vZGVzLnB1c2godGhpcy5faWQgfHwgdGhp
cy5fb3JkaW5hbCAqIDIgKyAxKTsKICAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlz
Ll9zZWxmU2l6ZSk7Ci0gICAgICAgIHJhd1NuYXBzaG90Lm5vZGVzLnB1c2goMCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmV0YWluZWRfc2l6ZQotICAgICAgICByYXdTbmFwc2hvdC5ub2Rl
cy5wdXNoKDApOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbWluYXRvcgotICAgICAgICBy
YXdTbmFwc2hvdC5ub2Rlcy5wdXNoKHJhd1NuYXBzaG90LmVkZ2VzLmxlbmd0aCk7IC8vIGVkZ2Vz
X2luZGV4CisgICAgICAgIHJhd1NuYXBzaG90Lm5vZGVzLnB1c2goMCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHJldGFpbmVkX3NpemUKKyAgICAgICAgcmF3U25hcHNob3Qubm9k
ZXMucHVzaCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9taW5hdG9yCisg
ICAgICAgIHJhd1NuYXBzaG90Lm5vZGVzLnB1c2goT2JqZWN0LmtleXModGhpcy5fZWRnZXMpLmxl
bmd0aCk7IC8vIGVkZ2VfY291bnQKIAogICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMuX2VkZ2Vz
KQogICAgICAgICAgICAgdGhpcy5fZWRnZXNbaV0uX3NlcmlhbGl6ZShyYXdTbmFwc2hvdCk7CkBA
IC01MjgsNyArNTI2LDcgQEAgSW5zcGVjdG9yVGVzdC5IZWFwU25hcHNob3RCdWlsZGVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIHJhd1NuYXBzaG90ID0gewogICAgICAgICAgICAgInNuYXBz
aG90IjogewogICAgICAgICAgICAgICAgICJtZXRhIjogewotICAgICAgICAgICAgICAgICAgICAi
bm9kZV9maWVsZHMiOiBbInR5cGUiLCJuYW1lIiwiaWQiLCJzZWxmX3NpemUiLCJyZXRhaW5lZF9z
aXplIiwiZG9taW5hdG9yIiwiZWRnZXNfaW5kZXgiXSwKKyAgICAgICAgICAgICAgICAgICAgIm5v
ZGVfZmllbGRzIjogWyJ0eXBlIiwibmFtZSIsImlkIiwic2VsZl9zaXplIiwicmV0YWluZWRfc2l6
ZSIsImRvbWluYXRvciIsImVkZ2VfY291bnQiXSwKICAgICAgICAgICAgICAgICAgICAgIm5vZGVf
dHlwZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZXNBcnJheSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXggZDgzNWM4ZmI5MmFlYjNl
NmQ3MDBmYTUwYjJhNjA2NTkyNDNmZjBhOC4uOTdiYzgxNTY4MjRhODljNTA2YmE4ZThkODFjOTdl
ZGM4OTExMzliZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC5odG1sCkBAIC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgdmFyIHNuYXBzaG90ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2Nr
T2JqZWN0KCk7CiAgICAgICAgICAgICB2YXIgbm9kZVJvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGUoc25hcHNob3QsIHNuYXBzaG90Ll9yb290Tm9kZUluZGV4KTsKICAgICAg
ICAgICAgIHZhciBlZGdlc1Jvb3QgPSBub2RlUm9vdC5yYXdFZGdlcygpOwotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobm9kZVJvb3QuZWRnZXNDb3VudCgpICogc25hcHNo
b3QuX2VkZ2VGaWVsZHNDb3VudCwgZWRnZXNSb290Lmxlbmd0aCwgInJhd0VkZ2VzIGxlbmd0aCIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobm9kZVJvb3QuZWRnZXND
b3VudCgpICogc25hcHNob3QuX2VkZ2VGaWVsZENvdW50LCBlZGdlc1Jvb3QubGVuZ3RoLCAicmF3
RWRnZXMgbGVuZ3RoIik7CiAgICAgICAgICAgICB2YXIgZWRnZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZShzbmFwc2hvdCwgZWRnZXNSb290KTsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJzaG9ydGN1dCIsIGVkZ2UudHlwZSgpLCAiZWRnZSB0eXBl
Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiYSIsIGVkZ2UubmFt
ZSgpLCAiZWRnZSBuYW1lIik7CkBAIC05NSw2ICs5NSwxNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwKIAorICAgICAgICBmdW5jdGlvbiBoZWFwU25h
cHNob3RDb250YWlubWVudEVkZ2VJbmRleGVzVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0
b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2YXIgYWN0dWFs
ID0gc25hcHNob3QuX2ZpcnN0RWRnZUluZGV4ZXM7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWQg
PSBbMCwgNiwgMTIsIDE4LCAyMSwgMjEsIDIxXTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmxlbmd0aCwgYWN0dWFsLmxlbmd0aCwgIkVkZ2UgaW5kZXhl
cyBzaXplIik7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkW2ldLCBhY3R1YWxbaV0sICJFZGdlIGluZGV4ZXMiKTsKKyAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgfSwKKwogICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RQb3N0T3JkZXJJbmRl
eFRlc3QobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RN
b2NrKCkpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBjZjdhZGM3YjJjMTA0MWRkMWJlZWY1ZmFmNzZkMTZk
ZWUzNzRhMTc2Li43OTI4Y2JmZTNlZTVmMGJjZGM4NGI2MTAzMTMzMTgzYjFhMDkzYWU2IDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTA1ICBBbGV4ZWkgRmlsaXBwb3Yg
IDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzZXJpYWxp
emUgZWRnZSBjb3VudHMgaW5zdGVhZCBvZiBpbmRleGVzIGluIGhlYXAgc25hcHNob3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MzI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVh
cC1zbmFwc2hvdC1wZXJmb3JtYW5jZS10ZXN0LmpzOgorCiAyMDEyLTA2LTA0ICBBbGV4ZWkgRmls
aXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
cGVlZCB1cCBfY2FsY3VsYXRlUmV0YWluZWRTaXplcyBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1wZXJmb3JtYW5jZS10ZXN0Lmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1wZXJmb3JtYW5jZS10
ZXN0LmpzCmluZGV4IGJmYmNjOTcxYjZmZWIyZGZkMWYyYmU2MWE3YjQzNGM5ZmEyNGY4ZTYuLjUx
NmRiYjQ1NzJkMDY3MmFjYjJmMTlkMjZmOGI4NDc5MTM0YjFmMWEgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QtcGVyZm9ybWFuY2UtdGVzdC5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZvcm1hbmNl
LXRlc3QuanMKQEAgLTEsNSArMSw2IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBJbnNwZWN0
b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSwgIl9idWlsZEVkZ2VJbmRleGVzIik7CiAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rp
b24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGRSZXRhaW5lcnMi
KTsKICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSwgIl9idWlsZERvbWluYXRlZE5vZGVzIik7CiAgICAgSW5zcGVjdG9y
VGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUs
ICJfY2FsY3VsYXRlRmxhZ3MiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145799</attachid>
            <date>2012-06-05 08:04:43 -0700</date>
            <delta_ts>2012-06-05 09:28:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88324-20120605190441.patch</filename>
            <type>text/plain</type>
            <size>37982</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE0NzY0M2JiNzUyZDg5
YTk4YmZlZDFhZjdiYjVkZmNkNWU1MWM1Ny4uYWQwMzZhM2ViY2M1OTQxYzk0YTNkNDA3OTVlNDQ2
MTA1NjhkYzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA2LTA1ICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzZXJpYWxpemUgZWRnZSBjb3VudHMgaW5zdGVhZCBvZiBpbmRleGVzIGluIGhlYXAgc25h
cHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
MzI0CisKKyAgICAgICAgVGhlIHNlcmlhbGl6ZWQgbm9kZSBzdHJ1Y3R1cmUgY3VycmVudGx5IGhv
bGRzIGFuIGluZGV4CisgICAgICAgIG9mIGl0cyBmaXJzdCBjb250YWlubWVudCBlZGdlIGluIHRo
ZSBlZGdlcyBhcnJheS4KKyAgICAgICAgVGhlIGluZGV4IGNhbiBiZSBxdWl0ZSBiaWcgKHVwIHRv
IDcgZGlnaXRzIGZvciBsYXJnZSBzbmFwc2hvdHMpLgorICAgICAgICBUaGUgcGF0Y2ggY2hhbmdl
cyB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQgdG8gcGFzcworICAgICAgICBub2RlIGNvbnRhaW5t
ZW50IGVkZ2UgY291bnQgaW5zdGVhZC4gRm9yIG1vc3Qgbm9kZXMgdGhlIGNvdW50CisgICAgICAg
IGlzIGp1c3QgYSBzaW5nbGUgZGlnaXQgbnVtYmVyLgorICAgICAgICBUaGlzIHJlZHVjZXMgc2Vy
aWFsaXplZCBzbmFwc2hvdCBzaXplIGFuZCB0aGVyZWZvcmUgaXRzIHRyYW5zZmVyIHRpbWUuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RFZGdlSXRlcmF0b3IucHJvdG90eXBlLm5leHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLmVkZ2VzQ291bnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLl9lZGdlSW5kZXhlc1N0YXJ0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5fZWRnZUlu
ZGV4ZXNFbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90
eXBlLl9vcmRpbmFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRl
cmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2lu
aXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxk
RWRnZUluZGV4ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkUmV0YWluZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLl9iZnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX2J1aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90LnByb3RvdHlwZS5fYnVpbGRQb3N0T3JkZXJJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGREb21pbmF0b3JUcmVlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJrUGFnZU93bmVkTm9kZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX21hcmtRdWVy
aWFibGVIZWFwT2JqZWN0cyk6CisKIDIwMTItMDYtMDUgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZ2dyZWdhdGUgYWxsIGV2
ZW50cyBiZWZvcmUgZmlyc3QgZnJhbWUgaW50byBhIGZha2UgZnJhbWUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggZjI3MDI4
MjJmNmY3YTk2ZmFhYmRmMjY0ZGFmZmE3YzM0MTZmZWI0Mi4uNzIzNGE2YjZlYTI1YjYyZGNjZDA3
OGQzNWM2NTFiYmY3YTA1ODk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTIxMyw3ICsyMTMsNyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RWRnZUl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKIAogICAgIG5leHQ6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZWRnZS5lZGdlSW5kZXggKz0gdGhpcy5lZGdl
Ll9zbmFwc2hvdC5fZWRnZUZpZWxkc0NvdW50OworICAgICAgICB0aGlzLmVkZ2UuZWRnZUluZGV4
ICs9IHRoaXMuZWRnZS5fc25hcHNob3QuX2VkZ2VGaWVsZENvdW50OwogICAgIH0KIH07CiAKQEAg
LTQ0NSw3ICs0NDUsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUg
PSB7CiAKICAgICBlZGdlc0NvdW50OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4g
KHRoaXMuX2VkZ2VJbmRleGVzRW5kKCkgLSB0aGlzLl9lZGdlSW5kZXhlc1N0YXJ0KCkpIC8gdGhp
cy5fc25hcHNob3QuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgcmV0dXJuICh0aGlzLl9lZGdl
SW5kZXhlc0VuZCgpIC0gdGhpcy5fZWRnZUluZGV4ZXNTdGFydCgpKSAvIHRoaXMuX3NuYXBzaG90
Ll9lZGdlRmllbGRDb3VudDsKICAgICB9LAogCiAgICAgZmxhZ3M6IGZ1bmN0aW9uKCkKQEAgLTUz
NSwxNCArNTM1LDE3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZSA9
IHsKIAogICAgIF9lZGdlSW5kZXhlc1N0YXJ0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2
YXIgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hvdDsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90Ll9u
b2Rlc1t0aGlzLm5vZGVJbmRleCArIHNuYXBzaG90Ll9maXJzdEVkZ2VJbmRleE9mZnNldF07Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5fZmlyc3RFZGdlSW5kZXhlc1t0aGlzLl9vcmRp
bmFsKCldOwogICAgIH0sCiAKICAgICBfZWRnZUluZGV4ZXNFbmQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXMuX3NuYXBzaG90OwotICAgICAgICByZXR1cm4g
c25hcHNob3QuX25vZGVzW3RoaXMuX25leHROb2RlSW5kZXgoKSArIHNuYXBzaG90Ll9maXJzdEVk
Z2VJbmRleE9mZnNldF0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90Ll9maXJzdEVkZ2VJ
bmRleGVzW3RoaXMuX29yZGluYWwoKSArIDFdOworICAgIH0sCisKKyAgICBfb3JkaW5hbDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubm9kZUluZGV4IC8gdGhpcy5fc25h
cHNob3QuX25vZGVGaWVsZENvdW50OwogICAgIH0sCiAKICAgICBfbmV4dE5vZGVJbmRleDogZnVu
Y3Rpb24oKQpAQCAtNTYzLDcgKzU2Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rl
LnByb3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IgPSBm
dW5jdGlvbihub2RlKQogewogICAgIHRoaXMubm9kZSA9IG5vZGU7Ci0gICAgdGhpcy5fbm9kZXNM
ZW5ndGggPSBub2RlLl9zbmFwc2hvdC5fcmVhbE5vZGVzTGVuZ3RoOworICAgIHRoaXMuX25vZGVz
TGVuZ3RoID0gbm9kZS5fc25hcHNob3QuX25vZGVzLmxlbmd0aDsKIH0KIAogV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvci5wcm90b3R5cGUgPSB7CkBAIC02NTUsNyArNjU4LDcg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X25vZGVOYW1lT2Zmc2V0ID0gbWV0YS5ub2RlX2ZpZWxkcy5pbmRleE9mKCJuYW1lIik7CiAgICAg
ICAgIHRoaXMuX25vZGVJZE9mZnNldCA9IG1ldGEubm9kZV9maWVsZHMuaW5kZXhPZigiaWQiKTsK
ICAgICAgICAgdGhpcy5fbm9kZVNlbGZTaXplT2Zmc2V0ID0gbWV0YS5ub2RlX2ZpZWxkcy5pbmRl
eE9mKCJzZWxmX3NpemUiKTsKLSAgICAgICAgdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSBt
ZXRhLm5vZGVfZmllbGRzLmluZGV4T2YoImVkZ2VzX2luZGV4Iik7CisgICAgICAgIHRoaXMuX25v
ZGVFZGdlQ291bnRPZmZzZXQgPSBtZXRhLm5vZGVfZmllbGRzLmluZGV4T2YoImVkZ2VfY291bnQi
KTsKICAgICAgICAgdGhpcy5fbm9kZUZpZWxkQ291bnQgPSBtZXRhLm5vZGVfZmllbGRzLmxlbmd0
aDsKIAogICAgICAgICB0aGlzLl9ub2RlVHlwZXMgPSBtZXRhLm5vZGVfdHlwZXNbdGhpcy5fbm9k
ZVR5cGVPZmZzZXRdOwpAQCAtNjY1LDcgKzY2OCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9ub2RlQ29kZVR5cGUgPSB0aGlzLl9ub2Rl
VHlwZXMuaW5kZXhPZigiY29kZSIpOwogICAgICAgICB0aGlzLl9ub2RlU3ludGhldGljVHlwZSA9
IHRoaXMuX25vZGVUeXBlcy5pbmRleE9mKCJzeW50aGV0aWMiKTsKIAotICAgICAgICB0aGlzLl9l
ZGdlRmllbGRzQ291bnQgPSBtZXRhLmVkZ2VfZmllbGRzLmxlbmd0aDsKKyAgICAgICAgdGhpcy5f
ZWRnZUZpZWxkQ291bnQgPSBtZXRhLmVkZ2VfZmllbGRzLmxlbmd0aDsKICAgICAgICAgdGhpcy5f
ZWRnZVR5cGVPZmZzZXQgPSBtZXRhLmVkZ2VfZmllbGRzLmluZGV4T2YoInR5cGUiKTsKICAgICAg
ICAgdGhpcy5fZWRnZU5hbWVPZmZzZXQgPSBtZXRhLmVkZ2VfZmllbGRzLmluZGV4T2YoIm5hbWVf
b3JfaW5kZXgiKTsKICAgICAgICAgdGhpcy5fZWRnZVRvTm9kZU9mZnNldCA9IG1ldGEuZWRnZV9m
aWVsZHMuaW5kZXhPZigidG9fbm9kZSIpOwpAQCAtNjg4LDE2ICs2OTEsMTAgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2aXNpdGVkTWFya2Vy
OiAgICAgMHgxMDAwMCAgLy8gYml0czogMSwwMDAwLDAwMDAsMDAwMCwwMDAwCiAgICAgICAgIH07
CiAKLSAgICAgICAgdGhpcy5fcmVhbE5vZGVzTGVuZ3RoID0gdGhpcy5fbm9kZXMubGVuZ3RoOwot
ICAgICAgICB0aGlzLm5vZGVDb3VudCA9IHRoaXMuX3JlYWxOb2Rlc0xlbmd0aCAvIHRoaXMuX25v
ZGVGaWVsZENvdW50OwotICAgICAgICB0aGlzLl9lZGdlQ291bnQgPSB0aGlzLl9jb250YWlubWVu
dEVkZ2VzLmxlbmd0aCAvIHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKLQotICAgICAgICAvLyBBZGQg
YW4gZXh0cmEgbm9kZSBhbmQgbWFrZSBpdHMgZmlyc3QgZWRnZSBmaWVsZCBwb2ludCB0byB0aGUg
ZW5kIG9mIGVkZ2VzIGFycmF5LgotICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKLSAg
ICAgICAgdGhpcy5fbm9kZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5fcmVhbE5vZGVzTGVuZ3Ro
ICsgdGhpcy5fbm9kZUZpZWxkQ291bnQpOwotICAgICAgICB0aGlzLl9ub2Rlcy5zZXQobm9kZXMp
OwotICAgICAgICB0aGlzLl9ub2Rlc1t0aGlzLl9yZWFsTm9kZXNMZW5ndGggKyB0aGlzLl9maXJz
dEVkZ2VJbmRleE9mZnNldF0gPSB0aGlzLl9jb250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAg
ICAgdGhpcy5ub2RlQ291bnQgPSB0aGlzLl9ub2Rlcy5sZW5ndGggLyB0aGlzLl9ub2RlRmllbGRD
b3VudDsKKyAgICAgICAgdGhpcy5fZWRnZUNvdW50ID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5s
ZW5ndGggLyB0aGlzLl9lZGdlRmllbGRDb3VudDsKIAorICAgICAgICB0aGlzLl9idWlsZEVkZ2VJ
bmRleGVzKCk7CiAgICAgICAgIHRoaXMuX21hcmtJbnZpc2libGVFZGdlcygpOwogICAgICAgICB0
aGlzLl9idWlsZFJldGFpbmVycygpOwogICAgICAgICB0aGlzLl9jYWxjdWxhdGVGbGFncygpOwpA
QCAtNzA5LDYgKzcwNiwzNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fYnVpbGREb21pbmF0ZWROb2RlcygpOwogICAgIH0sCiAKKyAgICBf
YnVpbGRFZGdlSW5kZXhlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gU3VwcG9ydCBm
b3Igb2xkIHNlcmlhbGl6YXRpb24uCisgICAgICAgIGlmICh0aGlzLl9ub2RlRWRnZUNvdW50T2Zm
c2V0ID09PSAtMSkgeworICAgICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7CisgICAg
ICAgICAgICB2YXIgbm9kZUNvdW50ID0gdGhpcy5ub2RlQ291bnQ7CisgICAgICAgICAgICB2YXIg
Zmlyc3RFZGdlSW5kZXhlcyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4ZXMgPSBuZXcgVWludDMyQXJy
YXkobm9kZUNvdW50ICsgMSk7CisgICAgICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlz
Ll9ub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgIHZhciBub2RlRWRnZXNJbmRleE9mZnNldCA9
IHRoaXMuX21ldGFOb2RlLm5vZGVfZmllbGRzLmluZGV4T2YoImVkZ2VzX2luZGV4Iik7CisgICAg
ICAgICAgICBmaXJzdEVkZ2VJbmRleGVzW25vZGVDb3VudF0gPSB0aGlzLl9jb250YWlubWVudEVk
Z2VzLmxlbmd0aDsKKyAgICAgICAgICAgIGZvciAodmFyIG5vZGVPcmRpbmFsID0gMDsgbm9kZU9y
ZGluYWwgPCBub2RlQ291bnQ7ICsrbm9kZU9yZGluYWwpIHsKKyAgICAgICAgICAgICAgICBmaXJz
dEVkZ2VJbmRleGVzW25vZGVPcmRpbmFsXSA9IG5vZGVzW25vZGVPcmRpbmFsICogbm9kZUZpZWxk
Q291bnQgKyBub2RlRWRnZXNJbmRleE9mZnNldF07CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsK
KyAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OworICAgICAgICB2YXIgZmly
c3RFZGdlSW5kZXhlcyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4ZXMgPSBuZXcgVWludDMyQXJyYXko
bm9kZUNvdW50ICsgMSk7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVG
aWVsZENvdW50OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9lZGdlRmllbGRD
b3VudDsKKyAgICAgICAgdmFyIG5vZGVFZGdlQ291bnRPZmZzZXQgPSB0aGlzLl9ub2RlRWRnZUNv
dW50T2Zmc2V0OworICAgICAgICBmaXJzdEVkZ2VJbmRleGVzW25vZGVDb3VudF0gPSB0aGlzLl9j
b250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgbm9kZU9yZGluYWwgPSAw
LCBlZGdlSW5kZXggPSAwOyBub2RlT3JkaW5hbCA8IG5vZGVDb3VudDsgKytub2RlT3JkaW5hbCkg
eworICAgICAgICAgICAgZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF0gPSBlZGdlSW5kZXg7
CisgICAgICAgICAgICBlZGdlSW5kZXggKz0gbm9kZXNbbm9kZU9yZGluYWwgKiBub2RlRmllbGRD
b3VudCArIG5vZGVFZGdlQ291bnRPZmZzZXRdICogZWRnZUZpZWxkQ291bnQ7CisgICAgICAgIH0K
KyAgICB9LAorCiAgICAgX2J1aWxkUmV0YWluZXJzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICB2YXIgcmV0YWluaW5nTm9kZXMgPSB0aGlzLl9yZXRhaW5pbmdOb2RlcyA9IG5ldyBVaW50MzJB
cnJheSh0aGlzLl9lZGdlQ291bnQpOwpAQCAtNzE4LDM0ICs3NDQsMzMgQEAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmaXJzdFJldGFpbmVySW5k
ZXggPSB0aGlzLl9maXJzdFJldGFpbmVySW5kZXggPSBuZXcgVWludDMyQXJyYXkodGhpcy5ub2Rl
Q291bnQgKyAxKTsKIAogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRh
aW5tZW50RWRnZXM7Ci0gICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0aGlzLl9lZGdlRmll
bGRzQ291bnQ7CisgICAgICAgIHZhciBlZGdlRmllbGRDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZENv
dW50OwogICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsK
ICAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0Owog
ICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKLSAgICAgICAgdmFyIGZpcnN0RWRnZUlu
ZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZzZXQ7CisgICAgICAgIHZhciBmaXJz
dEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhlczsKKyAgICAgICAgdmFyIG5vZGVD
b3VudCA9IHRoaXMubm9kZUNvdW50OwogCi0gICAgICAgIGZvciAodmFyIHRvTm9kZUZpZWxkSW5k
ZXggPSBlZGdlVG9Ob2RlT2Zmc2V0LCBsID0gY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7IHRvTm9k
ZUZpZWxkSW5kZXggPCBsOyB0b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgewor
ICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gZWRnZVRvTm9kZU9mZnNldCwgbCA9
IGNvbnRhaW5tZW50RWRnZXMubGVuZ3RoOyB0b05vZGVGaWVsZEluZGV4IDwgbDsgdG9Ob2RlRmll
bGRJbmRleCArPSBlZGdlRmllbGRDb3VudCkgewogICAgICAgICAgICAgdmFyIHRvTm9kZUluZGV4
ID0gY29udGFpbm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XTsKICAgICAgICAgICAgIGlmICh0
b05vZGVJbmRleCAlIG5vZGVGaWVsZENvdW50KQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiSW52YWxpZCB0b05vZGVJbmRleCAiICsgdG9Ob2RlSW5kZXgpOwogICAgICAgICAgICAg
KytmaXJzdFJldGFpbmVySW5kZXhbdG9Ob2RlSW5kZXggLyBub2RlRmllbGRDb3VudF07CiAgICAg
ICAgIH0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGZpcnN0VW51c2VkUmV0YWluZXJTbG90ID0g
MCwgbCA9IHRoaXMubm9kZUNvdW50OyBpIDwgbDsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkg
PSAwLCBmaXJzdFVudXNlZFJldGFpbmVyU2xvdCA9IDA7IGkgPCBub2RlQ291bnQ7IGkrKykgewog
ICAgICAgICAgICAgdmFyIHJldGFpbmVyc0NvdW50ID0gZmlyc3RSZXRhaW5lckluZGV4W2ldOwog
ICAgICAgICAgICAgZmlyc3RSZXRhaW5lckluZGV4W2ldID0gZmlyc3RVbnVzZWRSZXRhaW5lclNs
b3Q7CiAgICAgICAgICAgICByZXRhaW5pbmdOb2Rlc1tmaXJzdFVudXNlZFJldGFpbmVyU2xvdF0g
PSByZXRhaW5lcnNDb3VudDsKICAgICAgICAgICAgIGZpcnN0VW51c2VkUmV0YWluZXJTbG90ICs9
IHJldGFpbmVyc0NvdW50OwogICAgICAgICB9Ci0gICAgICAgIGZpcnN0UmV0YWluZXJJbmRleFt0
aGlzLm5vZGVDb3VudF0gPSByZXRhaW5pbmdOb2Rlcy5sZW5ndGg7CisgICAgICAgIGZpcnN0UmV0
YWluZXJJbmRleFtub2RlQ291bnRdID0gcmV0YWluaW5nTm9kZXMubGVuZ3RoOwogCi0gICAgICAg
IHZhciBzcmNOb2RlSW5kZXggPSAwOwotICAgICAgICB2YXIgbmV4dE5vZGVGaXJzdEVkZ2VJbmRl
eCA9IG5vZGVzW2ZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKLSAgICAgICAgdmFyIG5vZGVzTGVuZ3Ro
ID0gdGhpcy5fcmVhbE5vZGVzTGVuZ3RoOwotICAgICAgICB3aGlsZSAoc3JjTm9kZUluZGV4IDwg
bm9kZXNMZW5ndGgpIHsKKyAgICAgICAgdmFyIG5leHROb2RlRmlyc3RFZGdlSW5kZXggPSBmaXJz
dEVkZ2VJbmRleGVzWzBdOworICAgICAgICBmb3IgKHZhciBzcmNOb2RlT3JkaW5hbCA9IDA7IHNy
Y05vZGVPcmRpbmFsIDwgbm9kZUNvdW50OyArK3NyY05vZGVPcmRpbmFsKSB7CiAgICAgICAgICAg
ICB2YXIgZmlyc3RFZGdlSW5kZXggPSBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4OwotICAgICAgICAg
ICAgdmFyIG5leHROb2RlSW5kZXggPSBzcmNOb2RlSW5kZXggKyBub2RlRmllbGRDb3VudDsKLSAg
ICAgICAgICAgIG5leHROb2RlRmlyc3RFZGdlSW5kZXggPSBub2Rlc1tuZXh0Tm9kZUluZGV4ICsg
Zmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0g
Zmlyc3RFZGdlSW5kZXg7IGVkZ2VJbmRleCA8IG5leHROb2RlRmlyc3RFZGdlSW5kZXg7IGVkZ2VJ
bmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgIG5leHROb2RlRmlyc3RFZGdl
SW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW3NyY05vZGVPcmRpbmFsICsgMV07CisgICAgICAgICAg
ICB2YXIgc3JjTm9kZUluZGV4ID0gc3JjTm9kZU9yZGluYWwgKiBub2RlRmllbGRDb3VudDsKKyAg
ICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4OyBlZGdlSW5kZXgg
PCBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkQ291bnQpIHsK
ICAgICAgICAgICAgICAgICB2YXIgdG9Ob2RlSW5kZXggPSBjb250YWlubWVudEVkZ2VzW2VkZ2VJ
bmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOwogICAgICAgICAgICAgICAgIGlmICh0b05vZGVJbmRl
eCAlIG5vZGVGaWVsZENvdW50KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkludmFsaWQgdG9Ob2RlSW5kZXggIiArIHRvTm9kZUluZGV4KTsKQEAgLTc1NCw3ICs3NzksNiBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICByZXRhaW5pbmdOb2Rlc1tuZXh0VW51c2VkUmV0YWluZXJTbG90SW5kZXhdID0gc3JjTm9kZUlu
ZGV4OwogICAgICAgICAgICAgICAgIHJldGFpbmluZ0VkZ2VzW25leHRVbnVzZWRSZXRhaW5lclNs
b3RJbmRleF0gPSBlZGdlSW5kZXg7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzcmNOb2Rl
SW5kZXggPSBuZXh0Tm9kZUluZGV4OwogICAgICAgICB9CiAgICAgfSwKIApAQCAtOTEwLDEwICs5
MzQsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgX2Jm
czogZnVuY3Rpb24obm9kZXNUb1Zpc2l0LCBub2Rlc1RvVmlzaXRMZW5ndGgsIGRpc3RhbmNlcykK
ICAgICB7CiAgICAgICAgIC8vIFBlbG9hZCBmaWVsZHMgaW50byBsb2NhbCB2YXJpYWJsZXMgZm9y
IGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMu
X2VkZ2VGaWVsZHNDb3VudDsKLSAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9j
b250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9lZGdl
RmllbGRDb3VudDsKICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxk
Q291bnQ7Ci0gICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleE9mZnNldCA9IHRoaXMuX2ZpcnN0RWRn
ZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRh
aW5tZW50RWRnZXM7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RF
ZGdlSW5kZXhlczsKICAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9O
b2RlT2Zmc2V0OwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFy
IG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OwpAQCAtOTI0LDkgKzk0OCw5IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIG5vZGVJbmRl
eCA9IG5vZGVzVG9WaXNpdFtpbmRleCsrXTsgLy8gc2hpZnQgZ2VuZXJhdGVzIHRvbyBtdWNoIGdh
cmJhZ2UuCiAgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmll
bGRDb3VudDsKICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IGRpc3RhbmNlc1tub2RlT3JkaW5h
bF0gKyAxOwotICAgICAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ID0gbm9kZXNbbm9kZUluZGV4
ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgdmFyIGVkZ2VzRW5kID0gbm9k
ZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF07Ci0g
ICAgICAgICAgICBmb3IgKHZhciBlZGdlVG9Ob2RlSW5kZXggPSBmaXJzdEVkZ2VJbmRleCArIGVk
Z2VUb05vZGVPZmZzZXQ7IGVkZ2VUb05vZGVJbmRleCA8IGVkZ2VzRW5kOyBlZGdlVG9Ob2RlSW5k
ZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXgg
PSBmaXJzdEVkZ2VJbmRleGVzW25vZGVPcmRpbmFsXTsKKyAgICAgICAgICAgIHZhciBlZGdlc0Vu
ZCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGVkZ2VUb05vZGVJbmRleCA9IGZpcnN0RWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldDsg
ZWRnZVRvTm9kZUluZGV4IDwgZWRnZXNFbmQ7IGVkZ2VUb05vZGVJbmRleCArPSBlZGdlRmllbGRD
b3VudCkgewogICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9IGNvbnRhaW5tZW50
RWRnZXNbZWRnZVRvTm9kZUluZGV4XTsKICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlT3Jk
aW5hbCA9IGNoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAgICAgICAg
aWYgKGRpc3RhbmNlc1tjaGlsZE5vZGVPcmRpbmFsXSkKQEAgLTk0Niw3ICs5NzAsNyBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNsYXNzSW5k
ZXhlcyA9IFtdOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFy
IGZsYWdzID0gdGhpcy5fZmxhZ3M7Ci0gICAgICAgIHZhciBub2Rlc0xlbmd0aCA9IHRoaXMuX3Jl
YWxOb2Rlc0xlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoOwog
ICAgICAgICB2YXIgbm9kZU5hdGl2ZVR5cGUgPSB0aGlzLl9ub2RlTmF0aXZlVHlwZTsKICAgICAg
ICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgIHZh
ciBzZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldDsKQEAgLTEwNjYsMTMg
KzEwOTAsMTMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50OwogICAgICAgICB2
YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9k
ZUNvdW50OwotICAgICAgICB2YXIgcm9vdE5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7
CisgICAgICAgIHZhciByb290Tm9kZU9yZGluYWwgPSB0aGlzLl9yb290Tm9kZUluZGV4IC8gbm9k
ZUZpZWxkQ291bnQ7CiAKLSAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VG
aWVsZHNDb3VudDsKLSAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9O
b2RlT2Zmc2V0OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9lZGdlRmllbGRD
b3VudDsKICAgICAgICAgdmFyIGVkZ2VUeXBlT2Zmc2V0ID0gdGhpcy5fZWRnZVR5cGVPZmZzZXQ7
CisgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9kZU9mZnNldDsK
ICAgICAgICAgdmFyIGVkZ2VTaG9ydGN1dFR5cGUgPSB0aGlzLl9lZGdlU2hvcnRjdXRUeXBlOwot
ICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9m
ZnNldDsKKyAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ZXMgPSB0aGlzLl9maXJzdEVkZ2VJbmRl
eGVzOwogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRn
ZXM7CiAgICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzTGVuZ3RoID0gdGhpcy5fY29udGFpbm1l
bnRFZGdlcy5sZW5ndGg7CiAKQEAgLTEwODgsMzAgKzExMTIsMjkgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBncmV5ID0gMTsKICAgICAgICAg
dmFyIGJsYWNrID0gMjsKIAotICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3Ro
KytdID0gdGhpcy5fcm9vdE5vZGVJbmRleDsKLSAgICAgICAgcGFpbnRlZFt0aGlzLl9yb290Tm9k
ZUluZGV4IC8gbm9kZUZpZWxkQ291bnRdID0gZ3JleTsKKyAgICAgICAgbm9kZXNUb1Zpc2l0W25v
ZGVzVG9WaXNpdExlbmd0aCsrXSA9IHJvb3ROb2RlT3JkaW5hbDsKKyAgICAgICAgcGFpbnRlZFty
b290Tm9kZU9yZGluYWxdID0gZ3JleTsKIAogICAgICAgICB3aGlsZSAobm9kZXNUb1Zpc2l0TGVu
Z3RoKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gbm9kZXNUb1Zpc2l0W25vZGVzVG9W
aXNpdExlbmd0aCAtIDFdOwotICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gbm9kZUluZGV4
IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2Rlc1Rv
VmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoIC0gMV07CiAgICAgICAgICAgICBpZiAocGFpbnRlZFtu
b2RlT3JkaW5hbF0gPT09IGdyZXkpIHsKICAgICAgICAgICAgICAgICBwYWludGVkW25vZGVPcmRp
bmFsXSA9IGJsYWNrOwogICAgICAgICAgICAgICAgIHZhciBub2RlRmxhZyA9IGZsYWdzW25vZGVP
cmRpbmFsXSAmIGZsYWc7Ci0gICAgICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0gbm9k
ZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgICAgIHZh
ciBlbmRFZGdlSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldCAr
IG5vZGVGaWVsZENvdW50XTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBi
ZWdpbkVkZ2VJbmRleDsgZWRnZUluZGV4IDwgZW5kRWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRn
ZUZpZWxkc0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlSW5kZXggIT09IHJv
b3ROb2RlSW5kZXggJiYgY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNl
dF0gPT09IGVkZ2VTaG9ydGN1dFR5cGUpCisgICAgICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUlu
ZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CisgICAgICAgICAgICAgICAgdmFy
IGVuZEVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBiZWdpbkVkZ2VJbmRleDsgZWRnZUluZGV4
IDwgZW5kRWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGVPcmRpbmFsICE9PSByb290Tm9kZU9yZGluYWwgJiYgY29udGFp
bm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldF0gPT09IGVkZ2VTaG9ydGN1dFR5
cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAg
ICAgdmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdl
VG9Ob2RlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwg
PSBjaGlsZE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OwogICAgICAgICAgICAgICAgICAgICB2
YXIgY2hpbGROb2RlRmxhZyA9IGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdICYgZmxhZzsKICAgICAg
ICAgICAgICAgICAgICAgLy8gV2UgYXJlIHNraXBwaW5nIHRoZSBlZGdlcyBmcm9tIG5vbi1wYWdl
LW93bmVkIG5vZGVzIHRvIHBhZ2Utb3duZWQgbm9kZXMuCiAgICAgICAgICAgICAgICAgICAgIC8v
IE90aGVyd2lzZSB0aGUgZG9taW5hdG9ycyBmb3IgdGhlIG9iamVjdHMgdGhhdCBhbHNvIHdlcmUg
cmV0YWluZWQgYnkgZGVidWdnZXIgd291bGQgYmUgYWZmZWN0ZWQuCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlSW5kZXggIT09IHJvb3ROb2RlSW5kZXggJiYgY2hpbGROb2RlRmxhZyAmJiAh
bm9kZUZsYWcpCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlT3JkaW5hbCAhPT0gcm9vdE5v
ZGVPcmRpbmFsICYmIGNoaWxkTm9kZUZsYWcgJiYgIW5vZGVGbGFnKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGFpbnRlZFtjaGls
ZE5vZGVPcmRpbmFsXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRlZFtjaGlsZE5v
ZGVPcmRpbmFsXSA9IGdyZXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRb
bm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gY2hpbGROb2RlSW5kZXg7CisgICAgICAgICAgICAgICAg
ICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gY2hpbGROb2RlT3Jk
aW5hbDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC0xMTQxLDExICsxMTY0LDExIEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZmlyc3RSZXRhaW5lckluZGV4ID0gdGhp
cy5fZmlyc3RSZXRhaW5lckluZGV4OwogICAgICAgICB2YXIgcmV0YWluaW5nTm9kZXMgPSB0aGlz
Ll9yZXRhaW5pbmdOb2RlczsKICAgICAgICAgdmFyIHJldGFpbmluZ0VkZ2VzID0gdGhpcy5fcmV0
YWluaW5nRWRnZXM7Ci0gICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0aGlzLl9lZGdlRmll
bGRzQ291bnQ7Ci0gICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9k
ZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gdGhpcy5fZWRnZUZpZWxkQ291
bnQ7CiAgICAgICAgIHZhciBlZGdlVHlwZU9mZnNldCA9IHRoaXMuX2VkZ2VUeXBlT2Zmc2V0Owor
ICAgICAgICB2YXIgZWRnZVRvTm9kZU9mZnNldCA9IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQ7CiAg
ICAgICAgIHZhciBlZGdlU2hvcnRjdXRUeXBlID0gdGhpcy5fZWRnZVNob3J0Y3V0VHlwZTsKLSAg
ICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZz
ZXQ7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhl
czsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2Vz
OwogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IHRoaXMuX2NvbnRhaW5tZW50
RWRnZXMubGVuZ3RoOwogICAgICAgICB2YXIgcm9vdE5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2Rl
SW5kZXg7CkBAIC0xMTY2LDEyICsxMTg5LDEyIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlID0gewogICAgICAgICB2YXIgYWZmZWN0ZWQgPSBuZXcgVWludDhBcnJheShub2Rl
c0NvdW50KTsKIAogICAgICAgICB7IC8vIE1hcmsgdGhlIHJvb3QgZGlyZWN0IGNoaWxkcmVuIGFz
IGFmZmVjdGVkLgotICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5k
ZXg7Ci0gICAgICAgICAgICB2YXIgYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25v
ZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZzZXQ7Ci0gICAg
ICAgICAgICB2YXIgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBu
b2RlRmllbGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAgIHZhciBu
b2RlT3JkaW5hbCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAg
ICAgICAgIHZhciBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tu
b2RlT3JkaW5hbF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAgdmFyIGVuZEVkZ2VU
b05vZGVGaWVsZEluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbCArIDFdOwogICAg
ICAgICAgICAgZm9yICh2YXIgdG9Ob2RlRmllbGRJbmRleCA9IGJlZ2luRWRnZVRvTm9kZUZpZWxk
SW5kZXg7CiAgICAgICAgICAgICAgICAgIHRvTm9kZUZpZWxkSW5kZXggPCBlbmRFZGdlVG9Ob2Rl
RmllbGRJbmRleDsKLSAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmll
bGRzQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmll
bGRDb3VudCkgewogICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY29udGFp
bm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XSAvIG5vZGVGaWVsZENvdW50OwogICAgICAgICAg
ICAgICAgIGFmZmVjdGVkW25vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4W2NoaWxkTm9kZU9yZGlu
YWxdXSA9IDE7CiAgICAgICAgICAgICB9CkBAIC0xMjI3LDEyICsxMjUwLDExIEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBkb21p
bmF0b3JzW3Bvc3RPcmRlckluZGV4XSA9IG5ld0RvbWluYXRvckluZGV4OwogICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbm9kZU9yZGluYWwg
PSBwb3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbFtwb3N0T3JkZXJJbmRleF07Ci0gICAgICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCA9IG5vZGVPcmRpbmFsICogbm9kZUZpZWxkQ291bnQ7Ci0gICAg
ICAgICAgICAgICAgICAgIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5k
ZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OwotICAgICAgICAg
ICAgICAgICAgICBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZp
cnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdOworICAgICAgICAgICAgICAgICAg
ICBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5h
bF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBlbmRFZGdlVG9Ob2Rl
RmllbGRJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsKICAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgdG9Ob2RlRmllbGRJbmRleCA9IGJlZ2luRWRnZVRvTm9kZUZp
ZWxkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCA8IGVu
ZEVkZ2VUb05vZGVGaWVsZEluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAgIHRvTm9kZUZp
ZWxkSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
dG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmllbGRDb3VudCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjb250YWlubWVudEVkZ2VzW3RvTm9kZUZpZWxk
SW5kZXhdIC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3Rl
ZFtub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtjaGlsZE5vZGVPcmRpbmFsXV0gPSAxOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC0xMzY1LDkgKzEzODcsOSBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVkZ2VTaG9ydGN1dFR5cGUgPSB0
aGlzLl9lZGdlU2hvcnRjdXRUeXBlOwogICAgICAgICB2YXIgZWRnZVRvTm9kZU9mZnNldCA9IHRo
aXMuX2VkZ2VUb05vZGVPZmZzZXQ7CiAgICAgICAgIHZhciBlZGdlVHlwZU9mZnNldCA9IHRoaXMu
X2VkZ2VUeXBlT2Zmc2V0OwotICAgICAgICB2YXIgZWRnZUZpZWxkc0NvdW50ID0gdGhpcy5fZWRn
ZUZpZWxkc0NvdW50OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSB0aGlzLl9lZGdlRmll
bGRDb3VudDsKICAgICAgICAgdmFyIGVkZ2VXZWFrVHlwZSA9IHRoaXMuX2VkZ2VXZWFrVHlwZTsK
LSAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhP
ZmZzZXQ7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RFZGdlSW5k
ZXhlczsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVk
Z2VzOwogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IGNvbnRhaW5tZW50RWRn
ZXMubGVuZ3RoOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKQEAgLTEzODMsMjYg
KzE0MDUsMjQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXkobm9kZXNDb3VudCk7CiAgICAg
ICAgIHZhciBub2Rlc1RvVmlzaXRMZW5ndGggPSAwOwogCi0gICAgICAgIGZvciAodmFyIGVkZ2VJ
bmRleCA9IG5vZGVzW3RoaXMuX3Jvb3ROb2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0s
IGVuZEVkZ2VJbmRleCA9IG5vZGVzW3RoaXMuX3Jvb3ROb2RlSW5kZXggKyBub2RlRmllbGRDb3Vu
dCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgdmFyIHJvb3ROb2RlT3JkaW5hbCA9
IHRoaXMuX3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgZm9yICh2YXIg
ZWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tyb290Tm9kZU9yZGluYWxdLCBlbmRFZGdlSW5k
ZXggPSBmaXJzdEVkZ2VJbmRleGVzW3Jvb3ROb2RlT3JkaW5hbCArIDFdOwogICAgICAgICAgICAg
IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsKLSAgICAgICAgICAgICBlZGdlSW5kZXggKz0gZWRn
ZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICAgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZENvdW50
KSB7CiAgICAgICAgICAgICBpZiAoY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlw
ZU9mZnNldF0gPT09IGVkZ2VTaG9ydGN1dFR5cGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgbm9k
ZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0XTsK
LSAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gbm9k
ZUluZGV4OwotICAgICAgICAgICAgICAgIGZsYWdzW25vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50
XSB8PSB2aXNpdGVkTWFya2VyOworICAgICAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IGNv
bnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF0gLyBub2RlRmllbGRD
b3VudDsKKyAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytd
ID0gbm9kZU9yZGluYWw7CisgICAgICAgICAgICAgICAgZmxhZ3Nbbm9kZU9yZGluYWxdIHw9IHZp
c2l0ZWRNYXJrZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAo
bm9kZXNUb1Zpc2l0TGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gbm9kZXNU
b1Zpc2l0Wy0tbm9kZXNUb1Zpc2l0TGVuZ3RoXTsKLSAgICAgICAgICAgIHZhciBub2RlT3JkaW5h
bCA9IG5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgdmFyIG5vZGVPcmRp
bmFsID0gbm9kZXNUb1Zpc2l0Wy0tbm9kZXNUb1Zpc2l0TGVuZ3RoXTsKICAgICAgICAgICAgIGZs
YWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOwogICAgICAgICAgICAgZmxhZ3Nbbm9kZU9yZGluYWxd
ICY9IHZpc2l0ZWRNYXJrZXJNYXNrOwotICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0g
bm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgdmFy
IGVuZEVkZ2VJbmRleCA9IG5vZGVPcmRpbmFsIDwgbm9kZXNDb3VudCAtIDEKLSAgICAgICAgICAg
ICAgICA/IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxk
Q291bnRdCi0gICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzTGVuZ3RoOwotICAgICAg
ICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVu
ZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAg
dmFyIGJlZ2luRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CisgICAg
ICAgICAgICB2YXIgZW5kRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbCAr
IDFdOworICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVk
Z2VJbmRleCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZENvdW50KSB7CiAg
ICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdl
SW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2Rl
T3JkaW5hbCA9IGNoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAgICAg
ICAgaWYgKGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdICYgbWFya2VyQW5kRmxhZykKQEAgLTE0MTAs
NyArMTQzMCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgICAgIHZhciB0eXBlID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdl
VHlwZU9mZnNldF07CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IGVkZ2VXZWFrVHlwZSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbm9kZXNUb1Zp
c2l0W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IGNoaWxkTm9kZUluZGV4OworICAgICAgICAgICAg
ICAgIG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgrK10gPSBjaGlsZE5vZGVPcmRpbmFs
OwogICAgICAgICAgICAgICAgIGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdIHw9IHZpc2l0ZWRNYXJr
ZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0MjcsMzcgKzE0NDcsMzcgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBpbnZpc2li
bGVFZGdlVHlwZSA9IHRoaXMuX2VkZ2VJbnZpc2libGVUeXBlOwogICAgICAgICB2YXIgZWRnZVRv
Tm9kZU9mZnNldCA9IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQ7CiAgICAgICAgIHZhciBlZGdlVHlw
ZU9mZnNldCA9IHRoaXMuX2VkZ2VUeXBlT2Zmc2V0OwotICAgICAgICB2YXIgZWRnZUZpZWxkc0Nv
dW50ID0gdGhpcy5fZWRnZUZpZWxkc0NvdW50OworICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQg
PSB0aGlzLl9lZGdlRmllbGRDb3VudDsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0
aGlzLl9jb250YWlubWVudEVkZ2VzOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsK
ICAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OwogICAgICAgICB2YXIgbm9k
ZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKLSAgICAgICAgdmFyIGZpcnN0RWRn
ZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZzZXQ7CisgICAgICAgIHZhciBm
aXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhlczsKIAogICAgICAgICB2YXIg
ZmxhZ3MgPSB0aGlzLl9mbGFnczsKICAgICAgICAgdmFyIGxpc3QgPSBbXTsKIAogICAgICAgICBm
b3IgKHZhciBpdGVyID0gdGhpcy5yb290Tm9kZSgpLmVkZ2VzKCk7IGl0ZXIuaGFzTmV4dCgpOyBp
dGVyLm5leHQoKSkgewogICAgICAgICAgICAgaWYgKGl0ZXIuZWRnZS5ub2RlKCkuaXNXaW5kb3co
KSkKLSAgICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlci5lZGdlLm5vZGUoKS5ub2RlSW5kZXgp
OworICAgICAgICAgICAgICAgIGxpc3QucHVzaChpdGVyLmVkZ2Uubm9kZSgpLm5vZGVJbmRleCAv
IG5vZGVGaWVsZENvdW50KTsKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlIChsaXN0Lmxlbmd0
aCkgewotICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IGxpc3QucG9wKCk7Ci0gICAgICAgICAg
ICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAg
ICAgIHZhciBub2RlT3JkaW5hbCA9IGxpc3QucG9wKCk7CiAgICAgICAgICAgICBpZiAoZmxhZ3Nb
bm9kZU9yZGluYWxdICYgZmxhZykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIGZsYWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOwotICAgICAgICAgICAgdmFyIGJlZ2luRWRn
ZUluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwotICAgICAg
ICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4
T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdOwotICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4
ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9
IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0gZmly
c3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CisgICAgICAgICAgICB2YXIgZW5kRWRnZUluZGV4
ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbCArIDFdOworICAgICAgICAgICAgZm9yICh2
YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsg
ZWRnZUluZGV4ICs9IGVkZ2VGaWVsZENvdW50KSB7CiAgICAgICAgICAgICAgICAgdmFyIGNoaWxk
Tm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0
XTsKLSAgICAgICAgICAgICAgICBpZiAoZmxhZ3NbY2hpbGROb2RlSW5kZXggLyBub2RlRmllbGRD
b3VudF0gJiBmbGFnKQorICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY2hp
bGROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3Nb
Y2hpbGROb2RlT3JkaW5hbF0gJiBmbGFnKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsg
ZWRnZVR5cGVPZmZzZXRdOwogICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBoaWRkZW5FZGdl
VHlwZSB8fCB0eXBlID09PSBpbnZpc2libGVFZGdlVHlwZSB8fCB0eXBlID09PSBpbnRlcm5hbEVk
Z2VUeXBlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBs
aXN0LnB1c2goY2hpbGROb2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGxpc3QucHVzaChjaGls
ZE5vZGVPcmRpbmFsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDVlYmZiN2ZlNzM1ZWFkZGZkNzU1YTNlMWQ1MTJkMmFjMTdkMmY1My4uNWRjN2NlYWFhMGMyNzM3
YTdlNGYyZWYxNjU5NjcxOWEyMjYwZTdhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA2
LTA1ICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBzZXJpYWxpemUgZWRnZSBjb3VudHMgaW5zdGVhZCBvZiBpbmRleGVzIGlu
IGhlYXAgc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4MzI0CisKKyAgICAgICAgVGhlIHNlcmlhbGl6ZWQgbm9kZSBzdHJ1Y3R1cmUgY3Vy
cmVudGx5IGhvbGRzIGFuIGluZGV4CisgICAgICAgIG9mIGl0cyBmaXJzdCBjb250YWlubWVudCBl
ZGdlIGluIHRoZSBlZGdlcyBhcnJheS4KKyAgICAgICAgVGhlIGluZGV4IGNhbiBiZSBxdWl0ZSBi
aWcgKHVwIHRvIDcgZGlnaXRzIGZvciBsYXJnZSBzbmFwc2hvdHMpLgorICAgICAgICBUaGUgcGF0
Y2ggY2hhbmdlcyB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQgdG8gcGFzcworICAgICAgICBub2Rl
IGNvbnRhaW5tZW50IGVkZ2UgY291bnQgaW5zdGVhZC4gRm9yIG1vc3Qgbm9kZXMgdGhlIGNvdW50
CisgICAgICAgIGlzIGp1c3QgYSBzaW5nbGUgZGlnaXQgbnVtYmVyLgorICAgICAgICBUaGlzIHJl
ZHVjZXMgc2VyaWFsaXplZCBzbmFwc2hvdCBzaXplIGFuZCB0aGVyZWZvcmUgaXRzIHRyYW5zZmVy
IHRpbWUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoKKyAgICAgICAgKGlu
aXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hv
dE1vY2tPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RUZXN0Lkluc3Bl
Y3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1Jhdyk6CisgICAgICAgIChpbml0aWFsaXpl
X0hlYXBTbmFwc2hvdFRlc3QuSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrV2l0
aERPTSk6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3QuKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA2LTA1ICBS
b2IgQnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBIaXQgQVNTRVJUIHdoZW4g
ZWRpdGluZyBhdHRyaWJ1dGUgdmFsdWUgaW4gRWxlbWVudCBpbiBTVkcgRG9jdW1lbnQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4
cGVjdGVkLnR4dAppbmRleCA4NDcxNmY2YTg3YzYwNzA3Y2FlNDM1M2Y5NGEwYjUyZTQzY2NjYjc2
Li5lYmFlNzc2NDg4YzUwYTJkZjJkNDhmYzgxMGM1NDlmODExNWUzODhiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0
ZWQudHh0CkBAIC0xMyw2ICsxMyw4IEBAIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdE5vZGVBbmRFZGdl
VGVzdAogCiBSdW5uaW5nOiBoZWFwU25hcHNob3RTaW1wbGVUZXN0CiAKK1J1bm5pbmc6IGhlYXBT
bmFwc2hvdENvbnRhaW5tZW50RWRnZUluZGV4ZXNUZXN0CisKIFJ1bm5pbmc6IGhlYXBTbmFwc2hv
dFBvc3RPcmRlckluZGV4VGVzdAogCiBSdW5uaW5nOiBoZWFwU25hcHNob3REb21pbmF0b3JzVHJl
ZVRlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNu
YXBzaG90LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC10ZXN0LmpzCmluZGV4IDJhN2U0Y2U2Yzk5OTFmMzAxNzY3NDI3Y2E5ODExMWJlNmZiNDE5
MGEuLjM5MzEyZTcxZDI3NGE2ZTgzMzgyNGY1NzRkNTVmYWUxMDQzNzU4MzEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwpA
QCAtNiwxMSArNiw5IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVj
dCA9IGZ1bmN0aW9uKCkKICAgICAgICAgX3Jvb3ROb2RlSW5kZXg6IDAsCiAgICAgICAgIF9ub2Rl
VHlwZU9mZnNldDogMCwKICAgICAgICAgX25vZGVOYW1lT2Zmc2V0OiAxLAotICAgICAgICBfZWRn
ZXNDb3VudE9mZnNldDogMiwKLSAgICAgICAgX2ZpcnN0RWRnZUluZGV4T2Zmc2V0OiAyLAotICAg
ICAgICBfZmlyc3RFZGdlT2Zmc2V0OiAzLAorICAgICAgICBfbm9kZUVkZ2VDb3VudE9mZnNldDog
MiwKICAgICAgICAgX25vZGVGaWVsZENvdW50OiAzLAotICAgICAgICBfZWRnZUZpZWxkc0NvdW50
OiAzLAorICAgICAgICBfZWRnZUZpZWxkQ291bnQ6IDMsCiAgICAgICAgIF9lZGdlVHlwZU9mZnNl
dDogMCwKICAgICAgICAgX2VkZ2VOYW1lT2Zmc2V0OiAxLAogICAgICAgICBfZWRnZVRvTm9kZU9m
ZnNldDogMiwKQEAgLTMwLDEzICsyOCwxMiBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFw
c2hvdE1vY2tPYmplY3QgPSBmdW5jdGlvbigpCiAgICAgICAgIC8vICAgICAgICAgLT4gQiAoNikg
LWJkLSBEICgxMikKICAgICAgICAgLy8KICAgICAgICAgX25vZGVzOiBbCi0gICAgICAgICAgICAw
LCAwLCAwLCAgICAvLyAgMDogcm9vdAotICAgICAgICAgICAgMSwgMSwgNiwgICAgLy8gIDM6IEEK
LSAgICAgICAgICAgIDEsIDIsIDEyLCAgIC8vICA2OiBCCi0gICAgICAgICAgICAxLCAzLCAxOCwg
ICAvLyAgOTogQwotICAgICAgICAgICAgMSwgNCwgMjEsICAgLy8gMTI6IEQKLSAgICAgICAgICAg
IDEsIDUsIDIxLCAgIC8vIDE1OiBFCi0gICAgICAgICAgICAwLCAwLCAyMV0sICAvLyAxODogKGV4
dHJhIG5vZGUpCisgICAgICAgICAgICAwLCAwLCAyLCAgICAvLyAgMDogcm9vdAorICAgICAgICAg
ICAgMSwgMSwgMiwgICAgLy8gIDM6IEEKKyAgICAgICAgICAgIDEsIDIsIDIsICAgIC8vICA2OiBC
CisgICAgICAgICAgICAxLCAzLCAxLCAgICAvLyAgOTogQworICAgICAgICAgICAgMSwgNCwgMCwg
ICAgLy8gMTI6IEQKKyAgICAgICAgICAgIDEsIDUsIDBdLCAgIC8vIDE1OiBFCiAgICAgICAgIF9j
b250YWlubWVudEVkZ2VzOiBbCiAgICAgICAgICAgICAyLCAgNiwgMywgICAvLyAgMDogc2hvcnRj
dXQgJ2EnIHRvIG5vZGUgJ0EnCiAgICAgICAgICAgICAxLCAgNywgNiwgICAvLyAgMzogcHJvcGVy
dHkgJ2InIHRvIG5vZGUgJ0InCkBAIC00NSw3ICs0Miw4IEBAIEluc3BlY3RvclRlc3QuY3JlYXRl
SGVhcFNuYXBzaG90TW9ja09iamVjdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIDEsICA5LCA5
LCAgIC8vIDEyOiBwcm9wZXJ0eSAnYmMnIHRvIG5vZGUgJ0MnCiAgICAgICAgICAgICAxLCAxMCwg
MTIsICAvLyAxNTogcHJvcGVydHkgJ2JkJyB0byBub2RlICdEJwogICAgICAgICAgICAgMSwgMTEs
IDE1XSwgLy8gMTg6IHByb3BlcnR5ICdjZScgdG8gbm9kZSAnRScKLSAgICAgICAgX3N0cmluZ3M6
IFsiIiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJhIiwgImIiLCAiYWMiLCAiYmMiLCAiYmQi
LCAiY2UiXQorICAgICAgICBfc3RyaW5nczogWyIiLCAiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwg
ImEiLCAiYiIsICJhYyIsICJiYyIsICJiZCIsICJjZSJdLAorICAgICAgICBfZmlyc3RFZGdlSW5k
ZXhlczogWzAsIDYsIDEyLCAxOCwgMjEsIDIxLCAyMV0KICAgICB9OwogfTsKIApAQCAtNjYsNyAr
NjQsNyBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcgPSBmdW5jdGlv
bigpCiAgICAgcmV0dXJuIHsKICAgICAgICAgc25hcHNob3Q6IHsKICAgICAgICAgICAgIG1ldGE6
IHsKLSAgICAgICAgICAgICAgICBub2RlX2ZpZWxkczogWyJ0eXBlIiwgIm5hbWUiLCAiaWQiLCAi
c2VsZl9zaXplIiwgInJldGFpbmVkX3NpemUiLCAiZG9taW5hdG9yIiwgImVkZ2VzX2luZGV4Il0s
CisgICAgICAgICAgICAgICAgbm9kZV9maWVsZHM6IFsidHlwZSIsICJuYW1lIiwgImlkIiwgInNl
bGZfc2l6ZSIsICJyZXRhaW5lZF9zaXplIiwgImRvbWluYXRvciIsICJlZGdlX2NvdW50Il0sCiAg
ICAgICAgICAgICAgICAgbm9kZV90eXBlczogW1siaGlkZGVuIiwgIm9iamVjdCJdLCAiIiwgIiIs
ICIiLCAiIiwgIiIsICIiXSwKICAgICAgICAgICAgICAgICBlZGdlX2ZpZWxkczogWyJ0eXBlIiwg
Im5hbWVfb3JfaW5kZXgiLCAidG9fbm9kZSJdLAogICAgICAgICAgICAgICAgIGVkZ2VfdHlwZXM6
IFtbImVsZW1lbnQiLCAicHJvcGVydHkiLCAic2hvcnRjdXQiXSwgIiIsICIiXQpAQCAtNzQsMTIg
KzcyLDEyIEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1JhdyA9IGZ1bmN0
aW9uKCkKICAgICAgICAgICAgIG5vZGVfY291bnQ6IDYsCiAgICAgICAgICAgICBlZGdlX2NvdW50
OiA3fSwKICAgICAgICAgbm9kZXM6IFsKLSAgICAgICAgICAgIDAsIDAsIDEsIDAsIDIwLCAgMCwg
IDAsIC8vIHJvb3QgKDApCi0gICAgICAgICAgICAxLCAxLCAyLCAyLCAgMiwgIDAsICA2LCAvLyBB
ICg3KQotICAgICAgICAgICAgMSwgMiwgMywgMywgIDgsICAwLCAxMiwgLy8gQiAoMTQpCi0gICAg
ICAgICAgICAxLCAzLCA0LCA0LCAxMCwgIDAsIDE4LCAvLyBDICgyMSkKLSAgICAgICAgICAgIDEs
IDQsIDUsIDUsICA1LCAxNCwgMjEsIC8vIEQgKDI4KQotICAgICAgICAgICAgMSwgNSwgNiwgNiwg
IDYsIDIxLCAyMV0sLy8gRSAoMzUpCisgICAgICAgICAgICAwLCAwLCAxLCAwLCAyMCwgIDAsIDIs
ICAvLyByb290ICgwKQorICAgICAgICAgICAgMSwgMSwgMiwgMiwgIDIsICAwLCAyLCAgLy8gQSAo
NykKKyAgICAgICAgICAgIDEsIDIsIDMsIDMsICA4LCAgMCwgMiwgIC8vIEIgKDE0KQorICAgICAg
ICAgICAgMSwgMywgNCwgNCwgMTAsICAwLCAxLCAgLy8gQyAoMjEpCisgICAgICAgICAgICAxLCA0
LCA1LCA1LCAgNSwgMTQsIDAsICAvLyBEICgyOCkKKyAgICAgICAgICAgIDEsIDUsIDYsIDYsICA2
LCAyMSwgMF0sIC8vIEUgKDM1KQogICAgICAgICBlZGdlczogWwogICAgICAgICAgICAgLy8gcm9v
dCBub2RlIGVkZ2VzCiAgICAgICAgICAgICAyLCAgNiwgIDcsIC8vIHNob3J0Y3V0ICdhJyB0byBu
b2RlICdBJwpAQCAtMTE2LDcgKzExNCw3IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBz
aG90TW9ja1dpdGhET00gPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuX3Bv
c3Rwcm9jZXNzSGVhcFNuYXBzaG90TW9jayh7CiAgICAgICAgIHNuYXBzaG90OiB7CiAgICAgICAg
ICAgICBtZXRhOiB7Ci0gICAgICAgICAgICAgICAgbm9kZV9maWVsZHM6IFsidHlwZSIsICJuYW1l
IiwgImlkIiwgImVkZ2VzX2luZGV4Il0sCisgICAgICAgICAgICAgICAgbm9kZV9maWVsZHM6IFsi
dHlwZSIsICJuYW1lIiwgImlkIiwgImVkZ2VfY291bnQiXSwKICAgICAgICAgICAgICAgICBub2Rl
X3R5cGVzOiBbWyJoaWRkZW4iLCAib2JqZWN0Il0sICIiLCAiIiwgIiJdLAogICAgICAgICAgICAg
ICAgIGVkZ2VfZmllbGRzOiBbInR5cGUiLCAibmFtZV9vcl9pbmRleCIsICJ0b19ub2RlIl0sCiAg
ICAgICAgICAgICAgICAgZWRnZV90eXBlczogW1siZWxlbWVudCIsICJoaWRkZW4iLCAiaW50ZXJu
YWwiXSwgIiIsICIiXQpAQCAtMTM3LDE5ICsxMzUsMTkgQEAgSW5zcGVjdG9yVGVzdC5jcmVhdGVI
ZWFwU25hcHNob3RNb2NrV2l0aERPTSA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIC8vICAgIHwg
ICAgICAgICAgICAgICAgICAgdgogICAgICAgICAgICAgLy8gICAgfC0tLS0tPkYtLS0+RyAgICAg
ICBNCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgLyogKHJvb3QpICovICAgIDAsICAwLCAg
MSwgIDAsCi0gICAgICAgICAgICAvKiBXaW5kb3cgKi8gICAgMSwgMTEsICAyLCAxMiwKLSAgICAg
ICAgICAgIC8qIFdpbmRvdyAqLyAgICAxLCAxMSwgIDMsIDE4LAotICAgICAgICAgICAgLyogRSAq
LyAgICAgICAgIDEsICA1LCAgNCwgMjcsCi0gICAgICAgICAgICAvKiBGICovICAgICAgICAgMSwg
IDYsICA1LCAyNywKLSAgICAgICAgICAgIC8qIEEgKi8gICAgICAgICAxLCAgMSwgIDYsIDMwLAot
ICAgICAgICAgICAgLyogQiAqLyAgICAgICAgIDEsICAyLCAgNywgMzAsCi0gICAgICAgICAgICAv
KiBEICovICAgICAgICAgMSwgIDQsICA4LCAzMywKLSAgICAgICAgICAgIC8qIEggKi8gICAgICAg
ICAxLCAgOCwgIDksIDM5LAotICAgICAgICAgICAgLyogRyAqLyAgICAgICAgIDEsICA3LCAxMCwg
MzksCi0gICAgICAgICAgICAvKiBDICovICAgICAgICAgMSwgIDMsIDExLCAzOSwKLSAgICAgICAg
ICAgIC8qIE4gKi8gICAgICAgICAxLCAxMCwgMTIsIDM5LAotICAgICAgICAgICAgLyogTSAqLyAg
ICAgICAgIDEsICA5LCAxMywgMzkKKyAgICAgICAgICAgIC8qIChyb290KSAqLyAgICAwLCAgMCwg
IDEsIDQsCisgICAgICAgICAgICAvKiBXaW5kb3cgKi8gICAgMSwgMTEsICAyLCAyLAorICAgICAg
ICAgICAgLyogV2luZG93ICovICAgIDEsIDExLCAgMywgMywKKyAgICAgICAgICAgIC8qIEUgKi8g
ICAgICAgICAxLCAgNSwgIDQsIDAsCisgICAgICAgICAgICAvKiBGICovICAgICAgICAgMSwgIDYs
ICA1LCAxLAorICAgICAgICAgICAgLyogQSAqLyAgICAgICAgIDEsICAxLCAgNiwgMCwKKyAgICAg
ICAgICAgIC8qIEIgKi8gICAgICAgICAxLCAgMiwgIDcsIDEsCisgICAgICAgICAgICAvKiBEICov
ICAgICAgICAgMSwgIDQsICA4LCAyLAorICAgICAgICAgICAgLyogSCAqLyAgICAgICAgIDEsICA4
LCAgOSwgMCwKKyAgICAgICAgICAgIC8qIEcgKi8gICAgICAgICAxLCAgNywgMTAsIDAsCisgICAg
ICAgICAgICAvKiBDICovICAgICAgICAgMSwgIDMsIDExLCAwLAorICAgICAgICAgICAgLyogTiAq
LyAgICAgICAgIDEsIDEwLCAxMiwgMCwKKyAgICAgICAgICAgIC8qIE0gKi8gICAgICAgICAxLCAg
OSwgMTMsIDAKICAgICAgICAgICAgIF0sCiAgICAgICAgIGVkZ2VzOiBbCiAgICAgICAgICAgICAv
KiBmcm9tIChyb290KSAqLyAgMCwgIDEsICA0LCAwLCAyLCAgOCwgMCwgMywgMTIsIDAsIDQsIDE2
LApAQCAtNDYwLDkgKzQ1OCw5IEBAIEluc3BlY3RvclRlc3QuSGVhcE5vZGUucHJvdG90eXBlID0g
ewogICAgICAgICAvLyBhbmQgZXZlbiBpZHMgYmFzZWQgb24gYSBoYXNoIGZvciBuYXRpdmUgRE9N
T2JqZWN0IGdyb3Vwcy4KICAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCh0aGlzLl9pZCB8
fCB0aGlzLl9vcmRpbmFsICogMiArIDEpOwogICAgICAgICByYXdTbmFwc2hvdC5ub2Rlcy5wdXNo
KHRoaXMuX3NlbGZTaXplKTsKLSAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCgwKTsgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByZXRhaW5lZF9zaXplCi0gICAgICAgIHJhd1NuYXBzaG90
Lm5vZGVzLnB1c2goMCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9taW5hdG9yCi0gICAg
ICAgIHJhd1NuYXBzaG90Lm5vZGVzLnB1c2gocmF3U25hcHNob3QuZWRnZXMubGVuZ3RoKTsgLy8g
ZWRnZXNfaW5kZXgKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCgwKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmV0YWluZWRfc2l6ZQorICAgICAgICByYXdTbmFwc2hv
dC5ub2Rlcy5wdXNoKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb21pbmF0
b3IKKyAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaChPYmplY3Qua2V5cyh0aGlzLl9lZGdl
cykubGVuZ3RoKTsgLy8gZWRnZV9jb3VudAogCiAgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5f
ZWRnZXMpCiAgICAgICAgICAgICB0aGlzLl9lZGdlc1tpXS5fc2VyaWFsaXplKHJhd1NuYXBzaG90
KTsKQEAgLTUyOCw3ICs1MjYsNyBAQCBJbnNwZWN0b3JUZXN0LkhlYXBTbmFwc2hvdEJ1aWxkZXIu
cHJvdG90eXBlID0gewogICAgICAgICB2YXIgcmF3U25hcHNob3QgPSB7CiAgICAgICAgICAgICAi
c25hcHNob3QiOiB7CiAgICAgICAgICAgICAgICAgIm1ldGEiOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICJub2RlX2ZpZWxkcyI6IFsidHlwZSIsIm5hbWUiLCJpZCIsInNlbGZfc2l6ZSIsInJldGFp
bmVkX3NpemUiLCJkb21pbmF0b3IiLCJlZGdlc19pbmRleCJdLAorICAgICAgICAgICAgICAgICAg
ICAibm9kZV9maWVsZHMiOiBbInR5cGUiLCJuYW1lIiwiaWQiLCJzZWxmX3NpemUiLCJyZXRhaW5l
ZF9zaXplIiwiZG9taW5hdG9yIiwiZWRnZV9jb3VudCJdLAogICAgICAgICAgICAgICAgICAgICAi
bm9kZV90eXBlcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlc0Fy
cmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyIsCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAppbmRleCBkODM1YzhmYjky
YWViM2U2ZDcwMGZhNTBiMmE2MDY1OTI0M2ZmMGE4Li45N2JjODE1NjgyNGE4OWM1MDZiYThlOGQ4
MWM5N2VkYzg5MTEzOWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90Lmh0bWwKQEAgLTM4LDcgKzM4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgICAgICB2YXIgc25hcHNob3QgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hv
dE1vY2tPYmplY3QoKTsKICAgICAgICAgICAgIHZhciBub2RlUm9vdCA9IG5ldyBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hvdCwgc25hcHNob3QuX3Jvb3ROb2RlSW5kZXgpOwog
ICAgICAgICAgICAgdmFyIGVkZ2VzUm9vdCA9IG5vZGVSb290LnJhd0VkZ2VzKCk7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhub2RlUm9vdC5lZGdlc0NvdW50KCkgKiBz
bmFwc2hvdC5fZWRnZUZpZWxkc0NvdW50LCBlZGdlc1Jvb3QubGVuZ3RoLCAicmF3RWRnZXMgbGVu
Z3RoIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhub2RlUm9vdC5l
ZGdlc0NvdW50KCkgKiBzbmFwc2hvdC5fZWRnZUZpZWxkQ291bnQsIGVkZ2VzUm9vdC5sZW5ndGgs
ICJyYXdFZGdlcyBsZW5ndGgiKTsKICAgICAgICAgICAgIHZhciBlZGdlID0gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RFZGdlKHNuYXBzaG90LCBlZGdlc1Jvb3QpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInNob3J0Y3V0IiwgZWRnZS50eXBlKCksICJlZGdl
IHR5cGUiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJhIiwgZWRn
ZS5uYW1lKCksICJlZGdlIG5hbWUiKTsKQEAgLTk1LDYgKzk1LDE3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9LAogCisgICAgICAgIGZ1bmN0aW9uIGhl
YXBTbmFwc2hvdENvbnRhaW5tZW50RWRnZUluZGV4ZXNUZXN0KG5leHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KElu
c3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICAgICAgICAgIHZhciBh
Y3R1YWwgPSBzbmFwc2hvdC5fZmlyc3RFZGdlSW5kZXhlczsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZCA9IFswLCA2LCAxMiwgMTgsIDIxLCAyMSwgMjFdOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQubGVuZ3RoLCBhY3R1YWwubGVuZ3RoLCAiRWRnZSBp
bmRleGVzIHNpemUiKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQu
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
ZXhwZWN0ZWRbaV0sIGFjdHVhbFtpXSwgIkVkZ2UgaW5kZXhlcyIpOworICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICB9LAorCiAgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFBvc3RPcmRl
ckluZGV4VGVzdChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFw
c2hvdE1vY2soKSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNmN2FkYzdiMmMxMDQxZGQxYmVlZjVmYWY3
NmQxNmRlZTM3NGExNzYuLjI4Njc2MjQ5MGZlZTNkODNiMWE1MzMxMzRjNjZiMWZiODBiN2FkYTQg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDYtMDUgIEFsZXhlaSBGaWxp
cHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNl
cmlhbGl6ZSBlZGdlIGNvdW50cyBpbnN0ZWFkIG9mIGluZGV4ZXMgaW4gaGVhcCBzbmFwc2hvdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgzMjQKKwor
ICAgICAgICBUaGUgc2VyaWFsaXplZCBub2RlIHN0cnVjdHVyZSBjdXJyZW50bHkgaG9sZHMgYW4g
aW5kZXgKKyAgICAgICAgb2YgaXRzIGZpcnN0IGNvbnRhaW5tZW50IGVkZ2UgaW4gdGhlIGVkZ2Vz
IGFycmF5LgorICAgICAgICBUaGUgaW5kZXggY2FuIGJlIHF1aXRlIGJpZyAodXAgdG8gNyBkaWdp
dHMgZm9yIGxhcmdlIHNuYXBzaG90cykuCisgICAgICAgIFRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBz
ZXJpYWxpemF0aW9uIGZvcm1hdCB0byBwYXNzCisgICAgICAgIG5vZGUgY29udGFpbm1lbnQgZWRn
ZSBjb3VudCBpbnN0ZWFkLiBGb3IgbW9zdCBub2RlcyB0aGUgY291bnQKKyAgICAgICAgaXMganVz
dCBhIHNpbmdsZSBkaWdpdCBudW1iZXIuCisgICAgICAgIFRoaXMgcmVkdWNlcyBzZXJpYWxpemVk
IHNuYXBzaG90IHNpemUgYW5kIHRoZXJlZm9yZSBpdHMgdHJhbnNmZXIgdGltZS4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9oZWFw
LXNuYXBzaG90LXBlcmZvcm1hbmNlLXRlc3QuanM6CisKIDIwMTItMDYtMDQgIEFsZXhlaSBGaWxp
cHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNw
ZWVkIHVwIF9jYWxjdWxhdGVSZXRhaW5lZFNpemVzIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZvcm1hbmNlLXRlc3QuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZvcm1hbmNlLXRl
c3QuanMKaW5kZXggYmZiY2M5NzFiNmZlYjJkZmQxZjJiZTYxYTdiNDM0YzlmYTI0ZjhlNi4uNTE2
ZGJiNDU3MmQwNjcyYWNiMmYxOWQyNmY4Yjg0NzkxMzRiMWYxYSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1wZXJmb3JtYW5jZS10ZXN0LmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QtcGVyZm9ybWFuY2Ut
dGVzdC5qcwpAQCAtMSw1ICsxLDYgQEAKIGZ1bmN0aW9uIHRlc3QoKQogeworICAgIEluc3BlY3Rv
clRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
LCAiX2J1aWxkRWRnZUluZGV4ZXMiKTsKICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlv
bihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZFJldGFpbmVycyIp
OwogICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlLCAiX2J1aWxkRG9taW5hdGVkTm9kZXMiKTsKICAgICBJbnNwZWN0b3JU
ZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwg
Il9jYWxjdWxhdGVGbGFncyIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145819</attachid>
            <date>2012-06-05 09:27:01 -0700</date>
            <delta_ts>2012-06-05 10:08:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88324-20120605202700.patch</filename>
            <type>text/plain</type>
            <size>33322</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE0NzY0M2JiNzUyZDg5
YTk4YmZlZDFhZjdiYjVkZmNkNWU1MWM1Ny4uZGIwM2VhOTQ4Zjg4NDY3ZTk3Yzc2NjIzZmEwYzFj
NTViZjQ2OGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA2LTA1ICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzZXJpYWxpemUgZWRnZSBjb3VudHMgaW5zdGVhZCBvZiBpbmRleGVzIGluIGhlYXAgc25h
cHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
MzI0CisKKyAgICAgICAgVGhlIHNlcmlhbGl6ZWQgbm9kZSBzdHJ1Y3R1cmUgY3VycmVudGx5IGhv
bGRzIGFuIGluZGV4CisgICAgICAgIG9mIGl0cyBmaXJzdCBjb250YWlubWVudCBlZGdlIGluIHRo
ZSBlZGdlcyBhcnJheS4KKyAgICAgICAgVGhlIGluZGV4IGNhbiBiZSBxdWl0ZSBiaWcgKHVwIHRv
IDcgZGlnaXRzIGZvciBsYXJnZSBzbmFwc2hvdHMpLgorICAgICAgICBUaGUgcGF0Y2ggY2hhbmdl
cyB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQgdG8gcGFzcworICAgICAgICBub2RlIGNvbnRhaW5t
ZW50IGVkZ2UgY291bnQgaW5zdGVhZC4gRm9yIG1vc3Qgbm9kZXMgdGhlIGNvdW50CisgICAgICAg
IGlzIGp1c3QgYSBzaW5nbGUgZGlnaXQgbnVtYmVyLgorICAgICAgICBUaGlzIHJlZHVjZXMgc2Vy
aWFsaXplZCBzbmFwc2hvdCBzaXplIGFuZCB0aGVyZWZvcmUgaXRzIHRyYW5zZmVyIHRpbWUuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlLnByb3RvdHlwZS5fZWRnZUluZGV4ZXNTdGFydCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuX2VkZ2VJbmRleGVzRW5kKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5fb3JkaW5hbCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9yKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9pbml0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZEVkZ2VJbmRleGVzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZFJldGFp
bmVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYmZz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZEFn
Z3JlZ2F0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUu
X2J1aWxkUG9zdE9yZGVySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZS5fbWFya1BhZ2VPd25lZE5vZGVzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJrUXVlcmlhYmxlSGVhcE9iamVj
dHMpOgorCiAyMDEyLTA2LTA1ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWdncmVnYXRlIGFsbCBldmVudHMgYmVmb3JlIGZp
cnN0IGZyYW1lIGludG8gYSBmYWtlIGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IGYyNzAyODIyZjZmN2E5NmZhYWJk
ZjI2NGRhZmZhN2MzNDE2ZmViNDIuLjU3YjIxNTU3NGNmOTJiOGRmMjViNjE5OGQ1MmJjMzQ2YzM2
M2UwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90LmpzCkBAIC01MzUsMTQgKzUzNSwxNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBfZWRnZUluZGV4ZXNTdGFydDogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdmFyIHNuYXBzaG90ID0gdGhpcy5fc25hcHNob3Q7Ci0gICAgICAg
IHJldHVybiBzbmFwc2hvdC5fbm9kZXNbdGhpcy5ub2RlSW5kZXggKyBzbmFwc2hvdC5fZmlyc3RF
ZGdlSW5kZXhPZmZzZXRdOworICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX2ZpcnN0RWRn
ZUluZGV4ZXNbdGhpcy5fb3JkaW5hbCgpXTsKICAgICB9LAogCiAgICAgX2VkZ2VJbmRleGVzRW5k
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hv
dDsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90Ll9ub2Rlc1t0aGlzLl9uZXh0Tm9kZUluZGV4KCkg
KyBzbmFwc2hvdC5fZmlyc3RFZGdlSW5kZXhPZmZzZXRdCisgICAgICAgIHJldHVybiB0aGlzLl9z
bmFwc2hvdC5fZmlyc3RFZGdlSW5kZXhlc1t0aGlzLl9vcmRpbmFsKCkgKyAxXTsKKyAgICB9LAor
CisgICAgX29yZGluYWw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLm5v
ZGVJbmRleCAvIHRoaXMuX3NuYXBzaG90Ll9ub2RlRmllbGRDb3VudDsKICAgICB9LAogCiAgICAg
X25leHROb2RlSW5kZXg6IGZ1bmN0aW9uKCkKQEAgLTU2Myw3ICs1NjYsNyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZUl0ZXJhdG9yID0gZnVuY3Rpb24obm9kZSkKIHsKICAgICB0aGlzLm5vZGUgPSBub2Rl
OwotICAgIHRoaXMuX25vZGVzTGVuZ3RoID0gbm9kZS5fc25hcHNob3QuX3JlYWxOb2Rlc0xlbmd0
aDsKKyAgICB0aGlzLl9ub2Rlc0xlbmd0aCA9IG5vZGUuX3NuYXBzaG90Ll9ub2Rlcy5sZW5ndGg7
CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IucHJvdG90eXBlID0g
ewpAQCAtNjU1LDcgKzY1OCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9ub2RlTmFtZU9mZnNldCA9IG1ldGEubm9kZV9maWVsZHMuaW5k
ZXhPZigibmFtZSIpOwogICAgICAgICB0aGlzLl9ub2RlSWRPZmZzZXQgPSBtZXRhLm5vZGVfZmll
bGRzLmluZGV4T2YoImlkIik7CiAgICAgICAgIHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldCA9IG1l
dGEubm9kZV9maWVsZHMuaW5kZXhPZigic2VsZl9zaXplIik7Ci0gICAgICAgIHRoaXMuX2ZpcnN0
RWRnZUluZGV4T2Zmc2V0ID0gbWV0YS5ub2RlX2ZpZWxkcy5pbmRleE9mKCJlZGdlc19pbmRleCIp
OworICAgICAgICB0aGlzLl9ub2RlRWRnZUNvdW50T2Zmc2V0ID0gbWV0YS5ub2RlX2ZpZWxkcy5p
bmRleE9mKCJlZGdlX2NvdW50Iik7CiAgICAgICAgIHRoaXMuX25vZGVGaWVsZENvdW50ID0gbWV0
YS5ub2RlX2ZpZWxkcy5sZW5ndGg7CiAKICAgICAgICAgdGhpcy5fbm9kZVR5cGVzID0gbWV0YS5u
b2RlX3R5cGVzW3RoaXMuX25vZGVUeXBlT2Zmc2V0XTsKQEAgLTY4OCwxNiArNjkxLDEwIEBAIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmlzaXRl
ZE1hcmtlcjogICAgIDB4MTAwMDAgIC8vIGJpdHM6IDEsMDAwMCwwMDAwLDAwMDAsMDAwMAogICAg
ICAgICB9OwogCi0gICAgICAgIHRoaXMuX3JlYWxOb2Rlc0xlbmd0aCA9IHRoaXMuX25vZGVzLmxl
bmd0aDsKLSAgICAgICAgdGhpcy5ub2RlQ291bnQgPSB0aGlzLl9yZWFsTm9kZXNMZW5ndGggLyB0
aGlzLl9ub2RlRmllbGRDb3VudDsKKyAgICAgICAgdGhpcy5ub2RlQ291bnQgPSB0aGlzLl9ub2Rl
cy5sZW5ndGggLyB0aGlzLl9ub2RlRmllbGRDb3VudDsKICAgICAgICAgdGhpcy5fZWRnZUNvdW50
ID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5sZW5ndGggLyB0aGlzLl9lZGdlRmllbGRzQ291bnQ7
CiAKLSAgICAgICAgLy8gQWRkIGFuIGV4dHJhIG5vZGUgYW5kIG1ha2UgaXRzIGZpcnN0IGVkZ2Ug
ZmllbGQgcG9pbnQgdG8gdGhlIGVuZCBvZiBlZGdlcyBhcnJheS4KLSAgICAgICAgdmFyIG5vZGVz
ID0gdGhpcy5fbm9kZXM7Ci0gICAgICAgIHRoaXMuX25vZGVzID0gbmV3IFVpbnQzMkFycmF5KHRo
aXMuX3JlYWxOb2Rlc0xlbmd0aCArIHRoaXMuX25vZGVGaWVsZENvdW50KTsKLSAgICAgICAgdGhp
cy5fbm9kZXMuc2V0KG5vZGVzKTsKLSAgICAgICAgdGhpcy5fbm9kZXNbdGhpcy5fcmVhbE5vZGVz
TGVuZ3RoICsgdGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZzZXRdID0gdGhpcy5fY29udGFpbm1lbnRF
ZGdlcy5sZW5ndGg7Ci0KKyAgICAgICAgdGhpcy5fYnVpbGRFZGdlSW5kZXhlcygpOwogICAgICAg
ICB0aGlzLl9tYXJrSW52aXNpYmxlRWRnZXMoKTsKICAgICAgICAgdGhpcy5fYnVpbGRSZXRhaW5l
cnMoKTsKICAgICAgICAgdGhpcy5fY2FsY3VsYXRlRmxhZ3MoKTsKQEAgLTcwOSw2ICs3MDYsMzUg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X2J1aWxkRG9taW5hdGVkTm9kZXMoKTsKICAgICB9LAogCisgICAgX2J1aWxkRWRnZUluZGV4ZXM6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBzZXJpYWxpemF0
aW9uLgorICAgICAgICBpZiAodGhpcy5fbm9kZUVkZ2VDb3VudE9mZnNldCA9PT0gLTEpIHsKKyAg
ICAgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAgICAgICAgdmFyIG5vZGVD
b3VudCA9IHRoaXMubm9kZUNvdW50OworICAgICAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ZXMg
PSB0aGlzLl9maXJzdEVkZ2VJbmRleGVzID0gbmV3IFVpbnQzMkFycmF5KG5vZGVDb3VudCArIDEp
OworICAgICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7
CisgICAgICAgICAgICB2YXIgbm9kZUVkZ2VzSW5kZXhPZmZzZXQgPSB0aGlzLl9tZXRhTm9kZS5u
b2RlX2ZpZWxkcy5pbmRleE9mKCJlZGdlc19pbmRleCIpOworICAgICAgICAgICAgZmlyc3RFZGdl
SW5kZXhlc1tub2RlQ291bnRdID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CisgICAg
ICAgICAgICBmb3IgKHZhciBub2RlT3JkaW5hbCA9IDA7IG5vZGVPcmRpbmFsIDwgbm9kZUNvdW50
OyArK25vZGVPcmRpbmFsKSB7CisgICAgICAgICAgICAgICAgZmlyc3RFZGdlSW5kZXhlc1tub2Rl
T3JkaW5hbF0gPSBub2Rlc1tub2RlT3JkaW5hbCAqIG5vZGVGaWVsZENvdW50ICsgbm9kZUVkZ2Vz
SW5kZXhPZmZzZXRdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7CisgICAgICAgIHZhciBub2Rl
Q291bnQgPSB0aGlzLm5vZGVDb3VudDsKKyAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ZXMgPSB0
aGlzLl9maXJzdEVkZ2VJbmRleGVzID0gbmV3IFVpbnQzMkFycmF5KG5vZGVDb3VudCArIDEpOwor
ICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKKyAgICAg
ICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAg
dmFyIG5vZGVFZGdlQ291bnRPZmZzZXQgPSB0aGlzLl9ub2RlRWRnZUNvdW50T2Zmc2V0OworICAg
ICAgICBmaXJzdEVkZ2VJbmRleGVzW25vZGVDb3VudF0gPSB0aGlzLl9jb250YWlubWVudEVkZ2Vz
Lmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgbm9kZU9yZGluYWwgPSAwLCBlZGdlSW5kZXggPSAw
OyBub2RlT3JkaW5hbCA8IG5vZGVDb3VudDsgKytub2RlT3JkaW5hbCkgeworICAgICAgICAgICAg
Zmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF0gPSBlZGdlSW5kZXg7CisgICAgICAgICAgICBl
ZGdlSW5kZXggKz0gbm9kZXNbbm9kZU9yZGluYWwgKiBub2RlRmllbGRDb3VudCArIG5vZGVFZGdl
Q291bnRPZmZzZXRdICogZWRnZUZpZWxkc0NvdW50OworICAgICAgICB9CisgICAgfSwKKwogICAg
IF9idWlsZFJldGFpbmVyczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJldGFpbmlu
Z05vZGVzID0gdGhpcy5fcmV0YWluaW5nTm9kZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5fZWRn
ZUNvdW50KTsKQEAgLTcyMiw3ICs3NDgsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxk
Q291bnQ7CiAgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9kZU9m
ZnNldDsKICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7Ci0gICAgICAgIHZhciBmaXJz
dEVkZ2VJbmRleE9mZnNldCA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0OworICAgICAgICB2
YXIgZmlyc3RFZGdlSW5kZXhlcyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4ZXM7CisgICAgICAgIHZh
ciBub2RlQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKIAogICAgICAgICBmb3IgKHZhciB0b05vZGVG
aWVsZEluZGV4ID0gZWRnZVRvTm9kZU9mZnNldCwgbCA9IGNvbnRhaW5tZW50RWRnZXMubGVuZ3Ro
OyB0b05vZGVGaWVsZEluZGV4IDwgbDsgdG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmllbGRzQ291
bnQpIHsKICAgICAgICAgICAgIHZhciB0b05vZGVJbmRleCA9IGNvbnRhaW5tZW50RWRnZXNbdG9O
b2RlRmllbGRJbmRleF07CkBAIC03MzAsMjEgKzc1NywxOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIklu
dmFsaWQgdG9Ob2RlSW5kZXggIiArIHRvTm9kZUluZGV4KTsKICAgICAgICAgICAgICsrZmlyc3RS
ZXRhaW5lckluZGV4W3RvTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnRdOwogICAgICAgICB9Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwLCBmaXJzdFVudXNlZFJldGFpbmVyU2xvdCA9IDAsIGwgPSB0
aGlzLm5vZGVDb3VudDsgaSA8IGw7IGkrKykgeworICAgICAgICBmb3IgKHZhciBpID0gMCwgZmly
c3RVbnVzZWRSZXRhaW5lclNsb3QgPSAwOyBpIDwgbm9kZUNvdW50OyBpKyspIHsKICAgICAgICAg
ICAgIHZhciByZXRhaW5lcnNDb3VudCA9IGZpcnN0UmV0YWluZXJJbmRleFtpXTsKICAgICAgICAg
ICAgIGZpcnN0UmV0YWluZXJJbmRleFtpXSA9IGZpcnN0VW51c2VkUmV0YWluZXJTbG90OwogICAg
ICAgICAgICAgcmV0YWluaW5nTm9kZXNbZmlyc3RVbnVzZWRSZXRhaW5lclNsb3RdID0gcmV0YWlu
ZXJzQ291bnQ7CiAgICAgICAgICAgICBmaXJzdFVudXNlZFJldGFpbmVyU2xvdCArPSByZXRhaW5l
cnNDb3VudDsKICAgICAgICAgfQotICAgICAgICBmaXJzdFJldGFpbmVySW5kZXhbdGhpcy5ub2Rl
Q291bnRdID0gcmV0YWluaW5nTm9kZXMubGVuZ3RoOworICAgICAgICBmaXJzdFJldGFpbmVySW5k
ZXhbbm9kZUNvdW50XSA9IHJldGFpbmluZ05vZGVzLmxlbmd0aDsKIAotICAgICAgICB2YXIgc3Jj
Tm9kZUluZGV4ID0gMDsKLSAgICAgICAgdmFyIG5leHROb2RlRmlyc3RFZGdlSW5kZXggPSBub2Rl
c1tmaXJzdEVkZ2VJbmRleE9mZnNldF07Ci0gICAgICAgIHZhciBub2Rlc0xlbmd0aCA9IHRoaXMu
X3JlYWxOb2Rlc0xlbmd0aDsKLSAgICAgICAgd2hpbGUgKHNyY05vZGVJbmRleCA8IG5vZGVzTGVu
Z3RoKSB7CisgICAgICAgIHZhciBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4ID0gZmlyc3RFZGdlSW5k
ZXhlc1swXTsKKyAgICAgICAgZm9yICh2YXIgc3JjTm9kZU9yZGluYWwgPSAwOyBzcmNOb2RlT3Jk
aW5hbCA8IG5vZGVDb3VudDsgKytzcmNOb2RlT3JkaW5hbCkgewogICAgICAgICAgICAgdmFyIGZp
cnN0RWRnZUluZGV4ID0gbmV4dE5vZGVGaXJzdEVkZ2VJbmRleDsKLSAgICAgICAgICAgIHZhciBu
ZXh0Tm9kZUluZGV4ID0gc3JjTm9kZUluZGV4ICsgbm9kZUZpZWxkQ291bnQ7Ci0gICAgICAgICAg
ICBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4ID0gbm9kZXNbbmV4dE5vZGVJbmRleCArIGZpcnN0RWRn
ZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAgIG5leHROb2RlRmlyc3RFZGdlSW5kZXggPSBmaXJz
dEVkZ2VJbmRleGVzW3NyY05vZGVPcmRpbmFsICsgMV07CisgICAgICAgICAgICB2YXIgc3JjTm9k
ZUluZGV4ID0gc3JjTm9kZU9yZGluYWwgKiBub2RlRmllbGRDb3VudDsKICAgICAgICAgICAgIGZv
ciAodmFyIGVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4OyBlZGdlSW5kZXggPCBuZXh0Tm9kZUZp
cnN0RWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CiAgICAgICAgICAg
ICAgICAgdmFyIHRvTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdl
VG9Ob2RlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICBpZiAodG9Ob2RlSW5kZXggJSBub2RlRmll
bGRDb3VudCkKQEAgLTc1NCw3ICs3NzksNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXRhaW5pbmdOb2Rlc1tuZXh0VW51c2VkUmV0
YWluZXJTbG90SW5kZXhdID0gc3JjTm9kZUluZGV4OwogICAgICAgICAgICAgICAgIHJldGFpbmlu
Z0VkZ2VzW25leHRVbnVzZWRSZXRhaW5lclNsb3RJbmRleF0gPSBlZGdlSW5kZXg7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBzcmNOb2RlSW5kZXggPSBuZXh0Tm9kZUluZGV4OwogICAgICAg
ICB9CiAgICAgfSwKIApAQCAtOTExLDkgKzkzNSw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgLy8gUGVsb2FkIGZpZWxkcyBpbnRvIGxv
Y2FsIHZhcmlhYmxlcyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgICAgICB2YXIgZWRnZUZp
ZWxkc0NvdW50ID0gdGhpcy5fZWRnZUZpZWxkc0NvdW50OwotICAgICAgICB2YXIgY29udGFpbm1l
bnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7CiAgICAgICAgIHZhciBub2RlRmllbGRD
b3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50OwotICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhP
ZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGNvbnRhaW5t
ZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgZmlyc3RFZGdl
SW5kZXhlcyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4ZXM7CiAgICAgICAgIHZhciBlZGdlVG9Ob2Rl
T2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9kZU9mZnNldDsKICAgICAgICAgdmFyIG5vZGVzID0gdGhp
cy5fbm9kZXM7CiAgICAgICAgIHZhciBub2RlQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKQEAgLTky
NCw4ICs5NDgsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHZhciBub2RlSW5kZXggPSBub2Rlc1RvVmlzaXRbaW5kZXgrK107IC8vIHNoaWZ0
IGdlbmVyYXRlcyB0b28gbXVjaCBnYXJiYWdlLgogICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFs
ID0gbm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAgICB2YXIgZGlzdGFuY2Ug
PSBkaXN0YW5jZXNbbm9kZU9yZGluYWxdICsgMTsKLSAgICAgICAgICAgIHZhciBmaXJzdEVkZ2VJ
bmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKLSAgICAgICAg
ICAgIHZhciBlZGdlc0VuZCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0
ICsgbm9kZUZpZWxkQ291bnRdOworICAgICAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ID0gZmly
c3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CisgICAgICAgICAgICB2YXIgZWRnZXNFbmQgPSBm
aXJzdEVkZ2VJbmRleGVzW25vZGVPcmRpbmFsICsgMV07CiAgICAgICAgICAgICBmb3IgKHZhciBl
ZGdlVG9Ob2RlSW5kZXggPSBmaXJzdEVkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXQ7IGVkZ2VU
b05vZGVJbmRleCA8IGVkZ2VzRW5kOyBlZGdlVG9Ob2RlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50
KSB7CiAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdl
c1tlZGdlVG9Ob2RlSW5kZXhdOwogICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFs
ID0gY2hpbGROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKQEAgLTk0Niw3ICs5NzAsNyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNsYXNz
SW5kZXhlcyA9IFtdOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAg
dmFyIGZsYWdzID0gdGhpcy5fZmxhZ3M7Ci0gICAgICAgIHZhciBub2Rlc0xlbmd0aCA9IHRoaXMu
X3JlYWxOb2Rlc0xlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3Ro
OwogICAgICAgICB2YXIgbm9kZU5hdGl2ZVR5cGUgPSB0aGlzLl9ub2RlTmF0aXZlVHlwZTsKICAg
ICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CiAgICAgICAg
IHZhciBzZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldDsKQEAgLTEwNjYs
MTMgKzEwOTAsMTMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50OwogICAgICAg
ICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMu
bm9kZUNvdW50OwotICAgICAgICB2YXIgcm9vdE5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5k
ZXg7CisgICAgICAgIHZhciByb290Tm9kZU9yZGluYWwgPSB0aGlzLl9yb290Tm9kZUluZGV4IC8g
bm9kZUZpZWxkQ291bnQ7CiAKICAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2Vk
Z2VGaWVsZHNDb3VudDsKLSAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdl
VG9Ob2RlT2Zmc2V0OwogICAgICAgICB2YXIgZWRnZVR5cGVPZmZzZXQgPSB0aGlzLl9lZGdlVHlw
ZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2Rl
T2Zmc2V0OwogICAgICAgICB2YXIgZWRnZVNob3J0Y3V0VHlwZSA9IHRoaXMuX2VkZ2VTaG9ydGN1
dFR5cGU7Ci0gICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleE9mZnNldCA9IHRoaXMuX2ZpcnN0RWRn
ZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhlcyA9IHRoaXMuX2ZpcnN0
RWRnZUluZGV4ZXM7CiAgICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzID0gdGhpcy5fY29udGFp
bm1lbnRFZGdlczsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXNMZW5ndGggPSB0aGlzLl9j
b250YWlubWVudEVkZ2VzLmxlbmd0aDsKIApAQCAtMTA4OCwzMCArMTExMiwyOSBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGdyZXkgPSAxOwog
ICAgICAgICB2YXIgYmxhY2sgPSAyOwogCi0gICAgICAgIG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlz
aXRMZW5ndGgrK10gPSB0aGlzLl9yb290Tm9kZUluZGV4OwotICAgICAgICBwYWludGVkW3RoaXMu
X3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudF0gPSBncmV5OworICAgICAgICBub2Rlc1Rv
VmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gcm9vdE5vZGVPcmRpbmFsOworICAgICAgICBw
YWludGVkW3Jvb3ROb2RlT3JkaW5hbF0gPSBncmV5OwogCiAgICAgICAgIHdoaWxlIChub2Rlc1Rv
VmlzaXRMZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBub2Rlc1RvVmlzaXRb
bm9kZXNUb1Zpc2l0TGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBu
b2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9
IG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGggLSAxXTsKICAgICAgICAgICAgIGlmIChw
YWludGVkW25vZGVPcmRpbmFsXSA9PT0gZ3JleSkgewogICAgICAgICAgICAgICAgIHBhaW50ZWRb
bm9kZU9yZGluYWxdID0gYmxhY2s7CiAgICAgICAgICAgICAgICAgdmFyIG5vZGVGbGFnID0gZmxh
Z3Nbbm9kZU9yZGluYWxdICYgZmxhZzsKLSAgICAgICAgICAgICAgICB2YXIgYmVnaW5FZGdlSW5k
ZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07Ci0gICAgICAgICAg
ICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4
T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdOworICAgICAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VJ
bmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWxdOworICAgICAgICAgICAgICAgIHZh
ciBlbmRFZGdlSW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW25vZGVPcmRpbmFsICsgMV07CiAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRl
eCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZUluZGV4ICE9PSByb290Tm9kZUluZGV4ICYmIGNvbnRhaW5t
ZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdID09PSBlZGdlU2hvcnRjdXRUeXBl
KQorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU9yZGluYWwgIT09IHJvb3ROb2RlT3JkaW5h
bCAmJiBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUeXBlT2Zmc2V0XSA9PT0gZWRn
ZVNob3J0Y3V0VHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlSW5kZXggPSBjb250YWlubWVudEVkZ2VzW2VkZ2VJ
bmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOwogICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRO
b2RlT3JkaW5hbCA9IGNoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAg
ICAgICAgICAgIHZhciBjaGlsZE5vZGVGbGFnID0gZmxhZ3NbY2hpbGROb2RlT3JkaW5hbF0gJiBm
bGFnOwogICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgc2tpcHBpbmcgdGhlIGVkZ2VzIGZy
b20gbm9uLXBhZ2Utb3duZWQgbm9kZXMgdG8gcGFnZS1vd25lZCBub2Rlcy4KICAgICAgICAgICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBkb21pbmF0b3JzIGZvciB0aGUgb2JqZWN0cyB0aGF0
IGFsc28gd2VyZSByZXRhaW5lZCBieSBkZWJ1Z2dlciB3b3VsZCBiZSBhZmZlY3RlZC4KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vZGVJbmRleCAhPT0gcm9vdE5vZGVJbmRleCAmJiBjaGlsZE5v
ZGVGbGFnICYmICFub2RlRmxhZykKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVPcmRpbmFs
ICE9PSByb290Tm9kZU9yZGluYWwgJiYgY2hpbGROb2RlRmxhZyAmJiAhbm9kZUZsYWcpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFw
YWludGVkW2NoaWxkTm9kZU9yZGluYWxdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYWlu
dGVkW2NoaWxkTm9kZU9yZGluYWxdID0gZ3JleTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgrK10gPSBjaGlsZE5vZGVJbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgrK10gPSBj
aGlsZE5vZGVPcmRpbmFsOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTExNDIsMTAgKzExNjUsMTAgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXRhaW5pbmdOb2Rl
cyA9IHRoaXMuX3JldGFpbmluZ05vZGVzOwogICAgICAgICB2YXIgcmV0YWluaW5nRWRnZXMgPSB0
aGlzLl9yZXRhaW5pbmdFZGdlczsKICAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMu
X2VkZ2VGaWVsZHNDb3VudDsKLSAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9l
ZGdlVG9Ob2RlT2Zmc2V0OwogICAgICAgICB2YXIgZWRnZVR5cGVPZmZzZXQgPSB0aGlzLl9lZGdl
VHlwZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9O
b2RlT2Zmc2V0OwogICAgICAgICB2YXIgZWRnZVNob3J0Y3V0VHlwZSA9IHRoaXMuX2VkZ2VTaG9y
dGN1dFR5cGU7Ci0gICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleE9mZnNldCA9IHRoaXMuX2ZpcnN0
RWRnZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhlcyA9IHRoaXMuX2Zp
cnN0RWRnZUluZGV4ZXM7CiAgICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzID0gdGhpcy5fY29u
dGFpbm1lbnRFZGdlczsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXNMZW5ndGggPSB0aGlz
Ll9jb250YWlubWVudEVkZ2VzLmxlbmd0aDsKICAgICAgICAgdmFyIHJvb3ROb2RlSW5kZXggPSB0
aGlzLl9yb290Tm9kZUluZGV4OwpAQCAtMTE2Niw5ICsxMTg5LDkgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBhZmZlY3RlZCA9IG5ldyBVaW50
OEFycmF5KG5vZGVzQ291bnQpOwogCiAgICAgICAgIHsgLy8gTWFyayB0aGUgcm9vdCBkaXJlY3Qg
Y2hpbGRyZW4gYXMgYWZmZWN0ZWQuCi0gICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gdGhpcy5f
cm9vdE5vZGVJbmRleDsKLSAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4
ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdICsgZWRnZVRvTm9kZU9m
ZnNldDsKLSAgICAgICAgICAgIHZhciBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25v
ZGVJbmRleCArIG5vZGVGaWVsZENvdW50ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOworICAgICAg
ICAgICAgdmFyIG5vZGVPcmRpbmFsID0gdGhpcy5fcm9vdE5vZGVJbmRleCAvIG5vZGVGaWVsZENv
dW50OworICAgICAgICAgICAgdmFyIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBmaXJzdEVk
Z2VJbmRleGVzW25vZGVPcmRpbmFsXSArIGVkZ2VUb05vZGVPZmZzZXQ7CisgICAgICAgICAgICB2
YXIgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW25vZGVPcmRpbmFs
ICsgMV07CiAgICAgICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdl
VG9Ob2RlRmllbGRJbmRleDsKICAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCA8IGVu
ZEVkZ2VUb05vZGVGaWVsZEluZGV4OwogICAgICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4
ICs9IGVkZ2VGaWVsZHNDb3VudCkgewpAQCAtMTIyNyw5ICsxMjUwLDggQEAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGRvbWluYXRv
cnNbcG9zdE9yZGVySW5kZXhdID0gbmV3RG9taW5hdG9ySW5kZXg7CiAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBub2RlT3JkaW5hbCA9IHBv
c3RPcmRlckluZGV4Mk5vZGVPcmRpbmFsW3Bvc3RPcmRlckluZGV4XTsKLSAgICAgICAgICAgICAg
ICAgICAgbm9kZUluZGV4ID0gbm9kZU9yZGluYWwgKiBub2RlRmllbGRDb3VudDsKLSAgICAgICAg
ICAgICAgICAgICAgYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25vZGVJbmRleCAr
IGZpcnN0RWRnZUluZGV4T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZzZXQ7Ci0gICAgICAgICAgICAg
ICAgICAgIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RF
ZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF07CisgICAgICAgICAgICAgICAgICAgIGJl
Z2luRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW25vZGVPcmRpbmFsXSAr
IGVkZ2VUb05vZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGVuZEVkZ2VUb05vZGVGaWVs
ZEluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbCArIDFdOwogICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdlVG9Ob2RlRmllbGRJ
bmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4IDwgZW5kRWRn
ZVRvTm9kZUZpZWxkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJ
bmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKQEAgLTEzNjcsNyArMTM4OSw3IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZWRnZVR5cGVPZmZz
ZXQgPSB0aGlzLl9lZGdlVHlwZU9mZnNldDsKICAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9
IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKICAgICAgICAgdmFyIGVkZ2VXZWFrVHlwZSA9IHRoaXMu
X2VkZ2VXZWFrVHlwZTsKLSAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5f
Zmlyc3RFZGdlSW5kZXhPZmZzZXQ7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhp
cy5fZmlyc3RFZGdlSW5kZXhlczsKICAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlz
Ll9jb250YWlubWVudEVkZ2VzOwogICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9
IGNvbnRhaW5tZW50RWRnZXMubGVuZ3RoOwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2Rl
czsKQEAgLTEzODMsMjUgKzE0MDUsMjMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXkobm9k
ZXNDb3VudCk7CiAgICAgICAgIHZhciBub2Rlc1RvVmlzaXRMZW5ndGggPSAwOwogCi0gICAgICAg
IGZvciAodmFyIGVkZ2VJbmRleCA9IG5vZGVzW3RoaXMuX3Jvb3ROb2RlSW5kZXggKyBmaXJzdEVk
Z2VJbmRleE9mZnNldF0sIGVuZEVkZ2VJbmRleCA9IG5vZGVzW3RoaXMuX3Jvb3ROb2RlSW5kZXgg
KyBub2RlRmllbGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgdmFyIHJv
b3ROb2RlT3JkaW5hbCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAg
ICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tyb290Tm9kZU9yZGlu
YWxdLCBlbmRFZGdlSW5kZXggPSBmaXJzdEVkZ2VJbmRleGVzW3Jvb3ROb2RlT3JkaW5hbCArIDFd
OwogICAgICAgICAgICAgIGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsKICAgICAgICAgICAgICBl
ZGdlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CiAgICAgICAgICAgICBpZiAoY29udGFpbm1l
bnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldF0gPT09IGVkZ2VTaG9ydGN1dFR5cGUp
IHsKLSAgICAgICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdl
SW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0XTsKLSAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRb
bm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gbm9kZUluZGV4OwotICAgICAgICAgICAgICAgIGZsYWdz
W25vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSB8PSB2aXNpdGVkTWFya2VyOworICAgICAgICAg
ICAgICAgIHZhciBub2RlT3JkaW5hbCA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRn
ZVRvTm9kZU9mZnNldF0gLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBub2Rlc1Rv
VmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gbm9kZU9yZGluYWw7CisgICAgICAgICAgICAg
ICAgZmxhZ3Nbbm9kZU9yZGluYWxdIHw9IHZpc2l0ZWRNYXJrZXI7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICB3aGlsZSAobm9kZXNUb1Zpc2l0TGVuZ3RoKSB7Ci0gICAgICAg
ICAgICB2YXIgbm9kZUluZGV4ID0gbm9kZXNUb1Zpc2l0Wy0tbm9kZXNUb1Zpc2l0TGVuZ3RoXTsK
LSAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IG5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50
OworICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gbm9kZXNUb1Zpc2l0Wy0tbm9kZXNUb1Zp
c2l0TGVuZ3RoXTsKICAgICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOwogICAg
ICAgICAgICAgZmxhZ3Nbbm9kZU9yZGluYWxdICY9IHZpc2l0ZWRNYXJrZXJNYXNrOwotICAgICAg
ICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5k
ZXhPZmZzZXRdOwotICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVPcmRpbmFsIDwg
bm9kZXNDb3VudCAtIDEKLSAgICAgICAgICAgICAgICA/IG5vZGVzW25vZGVJbmRleCArIGZpcnN0
RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdCi0gICAgICAgICAgICAgICAgOiBjb250
YWlubWVudEVkZ2VzTGVuZ3RoOworICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0gZmly
c3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CisgICAgICAgICAgICB2YXIgZW5kRWRnZUluZGV4
ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbCArIDFdOwogICAgICAgICAgICAgZm9yICh2
YXIgZWRnZUluZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsg
ZWRnZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgewogICAgICAgICAgICAgICAgIHZhciBjaGls
ZE5vZGVJbmRleCA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNl
dF07CiAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjaGlsZE5vZGVJbmRl
eCAvIG5vZGVGaWVsZENvdW50OwpAQCAtMTQxMCw3ICsxNDMwLDcgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBjb250
YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUeXBlT2Zmc2V0XTsKICAgICAgICAgICAgICAg
ICBpZiAodHlwZSA9PT0gZWRnZVdlYWtUeXBlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0g
Y2hpbGROb2RlSW5kZXg7CisgICAgICAgICAgICAgICAgbm9kZXNUb1Zpc2l0W25vZGVzVG9WaXNp
dExlbmd0aCsrXSA9IGNoaWxkTm9kZU9yZGluYWw7CiAgICAgICAgICAgICAgICAgZmxhZ3NbY2hp
bGROb2RlT3JkaW5hbF0gfD0gdmlzaXRlZE1hcmtlcjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMTQzMiwzMiArMTQ1MiwzMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7CiAgICAgICAgIHZhciBu
b2RlQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0g
dGhpcy5fbm9kZUZpZWxkQ291bnQ7Ci0gICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleE9mZnNldCA9
IHRoaXMuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhl
cyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4ZXM7CiAKICAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5f
ZmxhZ3M7CiAgICAgICAgIHZhciBsaXN0ID0gW107CiAKICAgICAgICAgZm9yICh2YXIgaXRlciA9
IHRoaXMucm9vdE5vZGUoKS5lZGdlcygpOyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsK
ICAgICAgICAgICAgIGlmIChpdGVyLmVkZ2Uubm9kZSgpLmlzV2luZG93KCkpCi0gICAgICAgICAg
ICAgICAgbGlzdC5wdXNoKGl0ZXIuZWRnZS5ub2RlKCkubm9kZUluZGV4KTsKKyAgICAgICAgICAg
ICAgICBsaXN0LnB1c2goaXRlci5lZGdlLm5vZGUoKS5ub2RlSW5kZXggLyBub2RlRmllbGRDb3Vu
dCk7CiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAobGlzdC5sZW5ndGgpIHsKLSAgICAgICAg
ICAgIHZhciBub2RlSW5kZXggPSBsaXN0LnBvcCgpOwotICAgICAgICAgICAgdmFyIG5vZGVPcmRp
bmFsID0gbm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICB2YXIgbm9kZU9y
ZGluYWwgPSBsaXN0LnBvcCgpOwogICAgICAgICAgICAgaWYgKGZsYWdzW25vZGVPcmRpbmFsXSAm
IGZsYWcpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBmbGFnc1tub2Rl
T3JkaW5hbF0gfD0gZmxhZzsKLSAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VJbmRleCA9IG5vZGVz
W25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKLSAgICAgICAgICAgIHZhciBlbmRF
ZGdlSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldCArIG5vZGVG
aWVsZENvdW50XTsKKyAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VJbmRleCA9IGZpcnN0RWRnZUlu
ZGV4ZXNbbm9kZU9yZGluYWxdOworICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IGZpcnN0
RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsKICAgICAgICAgICAgIGZvciAodmFyIGVkZ2VJ
bmRleCA9IGJlZ2luRWRnZUluZGV4OyBlZGdlSW5kZXggPCBlbmRFZGdlSW5kZXg7IGVkZ2VJbmRl
eCArPSBlZGdlRmllbGRzQ291bnQpIHsKICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlSW5k
ZXggPSBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOwotICAg
ICAgICAgICAgICAgIGlmIChmbGFnc1tjaGlsZE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSAm
IGZsYWcpCisgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjaGlsZE5vZGVJ
bmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgIGlmIChmbGFnc1tjaGlsZE5v
ZGVPcmRpbmFsXSAmIGZsYWcpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIHZhciB0eXBlID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlw
ZU9mZnNldF07CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IGhpZGRlbkVkZ2VUeXBlIHx8
IHR5cGUgPT09IGludmlzaWJsZUVkZ2VUeXBlIHx8IHR5cGUgPT09IGludGVybmFsRWRnZVR5cGUp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGxpc3QucHVz
aChjaGlsZE5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGNoaWxkTm9kZU9y
ZGluYWwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNWViZmI3
ZmU3MzVlYWRkZmQ3NTVhM2UxZDUxMmQyYWMxN2QyZjUzLi41ZGM3Y2VhYWEwYzI3MzdhN2U0ZjJl
ZjE2NTk2NzE5YTIyNjBlN2E3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDYtMDUgIEFs
ZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHNlcmlhbGl6ZSBlZGdlIGNvdW50cyBpbnN0ZWFkIG9mIGluZGV4ZXMgaW4gaGVhcCBz
bmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODgzMjQKKworICAgICAgICBUaGUgc2VyaWFsaXplZCBub2RlIHN0cnVjdHVyZSBjdXJyZW50bHkg
aG9sZHMgYW4gaW5kZXgKKyAgICAgICAgb2YgaXRzIGZpcnN0IGNvbnRhaW5tZW50IGVkZ2UgaW4g
dGhlIGVkZ2VzIGFycmF5LgorICAgICAgICBUaGUgaW5kZXggY2FuIGJlIHF1aXRlIGJpZyAodXAg
dG8gNyBkaWdpdHMgZm9yIGxhcmdlIHNuYXBzaG90cykuCisgICAgICAgIFRoZSBwYXRjaCBjaGFu
Z2VzIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCB0byBwYXNzCisgICAgICAgIG5vZGUgY29udGFp
bm1lbnQgZWRnZSBjb3VudCBpbnN0ZWFkLiBGb3IgbW9zdCBub2RlcyB0aGUgY291bnQKKyAgICAg
ICAgaXMganVzdCBhIHNpbmdsZSBkaWdpdCBudW1iZXIuCisgICAgICAgIFRoaXMgcmVkdWNlcyBz
ZXJpYWxpemVkIHNuYXBzaG90IHNpemUgYW5kIHRoZXJlZm9yZSBpdHMgdHJhbnNmZXIgdGltZS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6
ZV9IZWFwU25hcHNob3RUZXN0Lkluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09i
amVjdCk6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3QuSW5zcGVjdG9yVGVz
dC5jcmVhdGVIZWFwU25hcHNob3RNb2NrUmF3KToKKyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNu
YXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tXaXRoRE9NKToK
KyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC4pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDYtMDUgIFJvYiBCdWlz
ICA8cndsYnVpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEhpdCBBU1NFUlQgd2hlbiBlZGl0aW5n
IGF0dHJpYnV0ZSB2YWx1ZSBpbiBFbGVtZW50IGluIFNWRyBEb2N1bWVudApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQu
dHh0CmluZGV4IDg0NzE2ZjZhODdjNjA3MDdjYWU0MzUzZjk0YTBiNTJlNDNjY2NiNzYuLmViYWU3
NzY0ODhjNTBhMmRmMmQ0OGZjODEwYzU0OWY4MTE1ZTM4OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQK
QEAgLTEzLDYgKzEzLDggQEAgUnVubmluZzogaGVhcFNuYXBzaG90Tm9kZUFuZEVkZ2VUZXN0CiAK
IFJ1bm5pbmc6IGhlYXBTbmFwc2hvdFNpbXBsZVRlc3QKIAorUnVubmluZzogaGVhcFNuYXBzaG90
Q29udGFpbm1lbnRFZGdlSW5kZXhlc1Rlc3QKKwogUnVubmluZzogaGVhcFNuYXBzaG90UG9zdE9y
ZGVySW5kZXhUZXN0CiAKIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdERvbWluYXRvcnNUcmVlVGVzdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qt
dGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRl
c3QuanMKaW5kZXggMmE3ZTRjZTZjOTk5MWYzMDE3Njc0MjdjYTk4MTExYmU2ZmI0MTkwYS4uZGE5
NGNiNzIzYTQ0MzY0YWVhMWUxZDY2NzA1N2U0ZTY0ZTNjZWJjOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcworKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCkBAIC02LDkg
KzYsNyBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QgPSBmdW5j
dGlvbigpCiAgICAgICAgIF9yb290Tm9kZUluZGV4OiAwLAogICAgICAgICBfbm9kZVR5cGVPZmZz
ZXQ6IDAsCiAgICAgICAgIF9ub2RlTmFtZU9mZnNldDogMSwKLSAgICAgICAgX2VkZ2VzQ291bnRP
ZmZzZXQ6IDIsCi0gICAgICAgIF9maXJzdEVkZ2VJbmRleE9mZnNldDogMiwKLSAgICAgICAgX2Zp
cnN0RWRnZU9mZnNldDogMywKKyAgICAgICAgX25vZGVFZGdlQ291bnRPZmZzZXQ6IDIsCiAgICAg
ICAgIF9ub2RlRmllbGRDb3VudDogMywKICAgICAgICAgX2VkZ2VGaWVsZHNDb3VudDogMywKICAg
ICAgICAgX2VkZ2VUeXBlT2Zmc2V0OiAwLApAQCAtMzAsMTMgKzI4LDEyIEBAIEluc3BlY3RvclRl
c3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgLy8g
ICAgICAgICAtPiBCICg2KSAtYmQtIEQgKDEyKQogICAgICAgICAvLwogICAgICAgICBfbm9kZXM6
IFsKLSAgICAgICAgICAgIDAsIDAsIDAsICAgIC8vICAwOiByb290Ci0gICAgICAgICAgICAxLCAx
LCA2LCAgICAvLyAgMzogQQotICAgICAgICAgICAgMSwgMiwgMTIsICAgLy8gIDY6IEIKLSAgICAg
ICAgICAgIDEsIDMsIDE4LCAgIC8vICA5OiBDCi0gICAgICAgICAgICAxLCA0LCAyMSwgICAvLyAx
MjogRAotICAgICAgICAgICAgMSwgNSwgMjEsICAgLy8gMTU6IEUKLSAgICAgICAgICAgIDAsIDAs
IDIxXSwgIC8vIDE4OiAoZXh0cmEgbm9kZSkKKyAgICAgICAgICAgIDAsIDAsIDIsICAgIC8vICAw
OiByb290CisgICAgICAgICAgICAxLCAxLCAyLCAgICAvLyAgMzogQQorICAgICAgICAgICAgMSwg
MiwgMiwgICAgLy8gIDY6IEIKKyAgICAgICAgICAgIDEsIDMsIDEsICAgIC8vICA5OiBDCisgICAg
ICAgICAgICAxLCA0LCAwLCAgICAvLyAxMjogRAorICAgICAgICAgICAgMSwgNSwgMF0sICAgLy8g
MTU6IEUKICAgICAgICAgX2NvbnRhaW5tZW50RWRnZXM6IFsKICAgICAgICAgICAgIDIsICA2LCAz
LCAgIC8vICAwOiBzaG9ydGN1dCAnYScgdG8gbm9kZSAnQScKICAgICAgICAgICAgIDEsICA3LCA2
LCAgIC8vICAzOiBwcm9wZXJ0eSAnYicgdG8gbm9kZSAnQicKQEAgLTQ1LDcgKzQyLDggQEAgSW5z
cGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0ID0gZnVuY3Rpb24oKQogICAg
ICAgICAgICAgMSwgIDksIDksICAgLy8gMTI6IHByb3BlcnR5ICdiYycgdG8gbm9kZSAnQycKICAg
ICAgICAgICAgIDEsIDEwLCAxMiwgIC8vIDE1OiBwcm9wZXJ0eSAnYmQnIHRvIG5vZGUgJ0QnCiAg
ICAgICAgICAgICAxLCAxMSwgMTVdLCAvLyAxODogcHJvcGVydHkgJ2NlJyB0byBub2RlICdFJwot
ICAgICAgICBfc3RyaW5nczogWyIiLCAiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwgImEiLCAiYiIs
ICJhYyIsICJiYyIsICJiZCIsICJjZSJdCisgICAgICAgIF9zdHJpbmdzOiBbIiIsICJBIiwgIkIi
LCAiQyIsICJEIiwgIkUiLCAiYSIsICJiIiwgImFjIiwgImJjIiwgImJkIiwgImNlIl0sCisgICAg
ICAgIF9maXJzdEVkZ2VJbmRleGVzOiBbMCwgNiwgMTIsIDE4LCAyMSwgMjEsIDIxXQogICAgIH07
CiB9OwogCkBAIC02Niw3ICs2NCw3IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90
TW9ja1JhdyA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gewogICAgICAgICBzbmFwc2hvdDogewog
ICAgICAgICAgICAgbWV0YTogewotICAgICAgICAgICAgICAgIG5vZGVfZmllbGRzOiBbInR5cGUi
LCAibmFtZSIsICJpZCIsICJzZWxmX3NpemUiLCAicmV0YWluZWRfc2l6ZSIsICJkb21pbmF0b3Ii
LCAiZWRnZXNfaW5kZXgiXSwKKyAgICAgICAgICAgICAgICBub2RlX2ZpZWxkczogWyJ0eXBlIiwg
Im5hbWUiLCAiaWQiLCAic2VsZl9zaXplIiwgInJldGFpbmVkX3NpemUiLCAiZG9taW5hdG9yIiwg
ImVkZ2VfY291bnQiXSwKICAgICAgICAgICAgICAgICBub2RlX3R5cGVzOiBbWyJoaWRkZW4iLCAi
b2JqZWN0Il0sICIiLCAiIiwgIiIsICIiLCAiIiwgIiJdLAogICAgICAgICAgICAgICAgIGVkZ2Vf
ZmllbGRzOiBbInR5cGUiLCAibmFtZV9vcl9pbmRleCIsICJ0b19ub2RlIl0sCiAgICAgICAgICAg
ICAgICAgZWRnZV90eXBlczogW1siZWxlbWVudCIsICJwcm9wZXJ0eSIsICJzaG9ydGN1dCJdLCAi
IiwgIiJdCkBAIC03NCwxMiArNzIsMTIgQEAgSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNo
b3RNb2NrUmF3ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgbm9kZV9jb3VudDogNiwKICAgICAg
ICAgICAgIGVkZ2VfY291bnQ6IDd9LAogICAgICAgICBub2RlczogWwotICAgICAgICAgICAgMCwg
MCwgMSwgMCwgMjAsICAwLCAgMCwgLy8gcm9vdCAoMCkKLSAgICAgICAgICAgIDEsIDEsIDIsIDIs
ICAyLCAgMCwgIDYsIC8vIEEgKDcpCi0gICAgICAgICAgICAxLCAyLCAzLCAzLCAgOCwgIDAsIDEy
LCAvLyBCICgxNCkKLSAgICAgICAgICAgIDEsIDMsIDQsIDQsIDEwLCAgMCwgMTgsIC8vIEMgKDIx
KQotICAgICAgICAgICAgMSwgNCwgNSwgNSwgIDUsIDE0LCAyMSwgLy8gRCAoMjgpCi0gICAgICAg
ICAgICAxLCA1LCA2LCA2LCAgNiwgMjEsIDIxXSwvLyBFICgzNSkKKyAgICAgICAgICAgIDAsIDAs
IDEsIDAsIDIwLCAgMCwgMiwgIC8vIHJvb3QgKDApCisgICAgICAgICAgICAxLCAxLCAyLCAyLCAg
MiwgIDAsIDIsICAvLyBBICg3KQorICAgICAgICAgICAgMSwgMiwgMywgMywgIDgsICAwLCAyLCAg
Ly8gQiAoMTQpCisgICAgICAgICAgICAxLCAzLCA0LCA0LCAxMCwgIDAsIDEsICAvLyBDICgyMSkK
KyAgICAgICAgICAgIDEsIDQsIDUsIDUsICA1LCAxNCwgMCwgIC8vIEQgKDI4KQorICAgICAgICAg
ICAgMSwgNSwgNiwgNiwgIDYsIDIxLCAwXSwgLy8gRSAoMzUpCiAgICAgICAgIGVkZ2VzOiBbCiAg
ICAgICAgICAgICAvLyByb290IG5vZGUgZWRnZXMKICAgICAgICAgICAgIDIsICA2LCAgNywgLy8g
c2hvcnRjdXQgJ2EnIHRvIG5vZGUgJ0EnCkBAIC0xMTYsNyArMTE0LDcgQEAgSW5zcGVjdG9yVGVz
dC5jcmVhdGVIZWFwU25hcHNob3RNb2NrV2l0aERPTSA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4g
SW5zcGVjdG9yVGVzdC5fcG9zdHByb2Nlc3NIZWFwU25hcHNob3RNb2NrKHsKICAgICAgICAgc25h
cHNob3Q6IHsKICAgICAgICAgICAgIG1ldGE6IHsKLSAgICAgICAgICAgICAgICBub2RlX2ZpZWxk
czogWyJ0eXBlIiwgIm5hbWUiLCAiaWQiLCAiZWRnZXNfaW5kZXgiXSwKKyAgICAgICAgICAgICAg
ICBub2RlX2ZpZWxkczogWyJ0eXBlIiwgIm5hbWUiLCAiaWQiLCAiZWRnZV9jb3VudCJdLAogICAg
ICAgICAgICAgICAgIG5vZGVfdHlwZXM6IFtbImhpZGRlbiIsICJvYmplY3QiXSwgIiIsICIiLCAi
Il0sCiAgICAgICAgICAgICAgICAgZWRnZV9maWVsZHM6IFsidHlwZSIsICJuYW1lX29yX2luZGV4
IiwgInRvX25vZGUiXSwKICAgICAgICAgICAgICAgICBlZGdlX3R5cGVzOiBbWyJlbGVtZW50Iiwg
ImhpZGRlbiIsICJpbnRlcm5hbCJdLCAiIiwgIiJdCkBAIC0xMzcsMTkgKzEzNSwxOSBAQCBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tXaXRoRE9NID0gZnVuY3Rpb24oKQogICAg
ICAgICAgICAgLy8gICAgfCAgICAgICAgICAgICAgICAgICB2CiAgICAgICAgICAgICAvLyAgICB8
LS0tLS0+Ri0tLT5HICAgICAgIE0KICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvKiAocm9v
dCkgKi8gICAgMCwgIDAsICAxLCAgMCwKLSAgICAgICAgICAgIC8qIFdpbmRvdyAqLyAgICAxLCAx
MSwgIDIsIDEyLAotICAgICAgICAgICAgLyogV2luZG93ICovICAgIDEsIDExLCAgMywgMTgsCi0g
ICAgICAgICAgICAvKiBFICovICAgICAgICAgMSwgIDUsICA0LCAyNywKLSAgICAgICAgICAgIC8q
IEYgKi8gICAgICAgICAxLCAgNiwgIDUsIDI3LAotICAgICAgICAgICAgLyogQSAqLyAgICAgICAg
IDEsICAxLCAgNiwgMzAsCi0gICAgICAgICAgICAvKiBCICovICAgICAgICAgMSwgIDIsICA3LCAz
MCwKLSAgICAgICAgICAgIC8qIEQgKi8gICAgICAgICAxLCAgNCwgIDgsIDMzLAotICAgICAgICAg
ICAgLyogSCAqLyAgICAgICAgIDEsICA4LCAgOSwgMzksCi0gICAgICAgICAgICAvKiBHICovICAg
ICAgICAgMSwgIDcsIDEwLCAzOSwKLSAgICAgICAgICAgIC8qIEMgKi8gICAgICAgICAxLCAgMywg
MTEsIDM5LAotICAgICAgICAgICAgLyogTiAqLyAgICAgICAgIDEsIDEwLCAxMiwgMzksCi0gICAg
ICAgICAgICAvKiBNICovICAgICAgICAgMSwgIDksIDEzLCAzOQorICAgICAgICAgICAgLyogKHJv
b3QpICovICAgIDAsICAwLCAgMSwgNCwKKyAgICAgICAgICAgIC8qIFdpbmRvdyAqLyAgICAxLCAx
MSwgIDIsIDIsCisgICAgICAgICAgICAvKiBXaW5kb3cgKi8gICAgMSwgMTEsICAzLCAzLAorICAg
ICAgICAgICAgLyogRSAqLyAgICAgICAgIDEsICA1LCAgNCwgMCwKKyAgICAgICAgICAgIC8qIEYg
Ki8gICAgICAgICAxLCAgNiwgIDUsIDEsCisgICAgICAgICAgICAvKiBBICovICAgICAgICAgMSwg
IDEsICA2LCAwLAorICAgICAgICAgICAgLyogQiAqLyAgICAgICAgIDEsICAyLCAgNywgMSwKKyAg
ICAgICAgICAgIC8qIEQgKi8gICAgICAgICAxLCAgNCwgIDgsIDIsCisgICAgICAgICAgICAvKiBI
ICovICAgICAgICAgMSwgIDgsICA5LCAwLAorICAgICAgICAgICAgLyogRyAqLyAgICAgICAgIDEs
ICA3LCAxMCwgMCwKKyAgICAgICAgICAgIC8qIEMgKi8gICAgICAgICAxLCAgMywgMTEsIDAsCisg
ICAgICAgICAgICAvKiBOICovICAgICAgICAgMSwgMTAsIDEyLCAwLAorICAgICAgICAgICAgLyog
TSAqLyAgICAgICAgIDEsICA5LCAxMywgMAogICAgICAgICAgICAgXSwKICAgICAgICAgZWRnZXM6
IFsKICAgICAgICAgICAgIC8qIGZyb20gKHJvb3QpICovICAwLCAgMSwgIDQsIDAsIDIsICA4LCAw
LCAzLCAxMiwgMCwgNCwgMTYsCkBAIC00NjAsOSArNDU4LDkgQEAgSW5zcGVjdG9yVGVzdC5IZWFw
Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIGFuZCBldmVuIGlkcyBiYXNlZCBvbiBhIGhh
c2ggZm9yIG5hdGl2ZSBET01PYmplY3QgZ3JvdXBzLgogICAgICAgICByYXdTbmFwc2hvdC5ub2Rl
cy5wdXNoKHRoaXMuX2lkIHx8IHRoaXMuX29yZGluYWwgKiAyICsgMSk7CiAgICAgICAgIHJhd1Nu
YXBzaG90Lm5vZGVzLnB1c2godGhpcy5fc2VsZlNpemUpOwotICAgICAgICByYXdTbmFwc2hvdC5u
b2Rlcy5wdXNoKDApOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldGFpbmVkX3NpemUKLSAg
ICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkb21pbmF0b3IKLSAgICAgICAgcmF3U25hcHNob3Qubm9kZXMucHVzaChyYXdTbmFwc2hvdC5l
ZGdlcy5sZW5ndGgpOyAvLyBlZGdlc19pbmRleAorICAgICAgICByYXdTbmFwc2hvdC5ub2Rlcy5w
dXNoKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXRhaW5lZF9zaXplCisg
ICAgICAgIHJhd1NuYXBzaG90Lm5vZGVzLnB1c2goMCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRvbWluYXRvcgorICAgICAgICByYXdTbmFwc2hvdC5ub2Rlcy5wdXNoKE9iamVj
dC5rZXlzKHRoaXMuX2VkZ2VzKS5sZW5ndGgpOyAvLyBlZGdlX2NvdW50CiAKICAgICAgICAgZm9y
ICh2YXIgaSBpbiB0aGlzLl9lZGdlcykKICAgICAgICAgICAgIHRoaXMuX2VkZ2VzW2ldLl9zZXJp
YWxpemUocmF3U25hcHNob3QpOwpAQCAtNTI4LDcgKzUyNiw3IEBAIEluc3BlY3RvclRlc3QuSGVh
cFNuYXBzaG90QnVpbGRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByYXdTbmFwc2hvdCA9
IHsKICAgICAgICAgICAgICJzbmFwc2hvdCI6IHsKICAgICAgICAgICAgICAgICAibWV0YSI6IHsK
LSAgICAgICAgICAgICAgICAgICAgIm5vZGVfZmllbGRzIjogWyJ0eXBlIiwibmFtZSIsImlkIiwi
c2VsZl9zaXplIiwicmV0YWluZWRfc2l6ZSIsImRvbWluYXRvciIsImVkZ2VzX2luZGV4Il0sCisg
ICAgICAgICAgICAgICAgICAgICJub2RlX2ZpZWxkcyI6IFsidHlwZSIsIm5hbWUiLCJpZCIsInNl
bGZfc2l6ZSIsInJldGFpbmVkX3NpemUiLCJkb21pbmF0b3IiLCJlZGdlX2NvdW50Il0sCiAgICAg
ICAgICAgICAgICAgICAgICJub2RlX3R5cGVzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5fbm9kZVR5cGVzQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1s
CmluZGV4IGQ4MzVjOGZiOTJhZWIzZTZkNzAwZmE1MGIyYTYwNjU5MjQzZmYwYTguLmNiNjgyZWY0
ZDk5MTQ2MzFjZDQ1MzY3NTc3NjMyYzExYjEwYTdjZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbApAQCAtOTUsNiArOTUsMTcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0sCiAKKyAgICAg
ICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90Q29udGFpbm1lbnRFZGdlSW5kZXhlc1Rlc3QobmV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAg
ICAgICAgICAgdmFyIGFjdHVhbCA9IHNuYXBzaG90Ll9maXJzdEVkZ2VJbmRleGVzOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkID0gWzAsIDYsIDEyLCAxOCwgMjEsIDIxLCAyMV07CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhleHBlY3RlZC5sZW5ndGgsIGFjdHVhbC5s
ZW5ndGgsICJFZGdlIGluZGV4ZXMgc2l6ZSIpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyhleHBlY3RlZFtpXSwgYWN0dWFsW2ldLCAiRWRnZSBpbmRleGVzIik7Cisg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisKICAgICAgICAgZnVuY3Rpb24gaGVhcFNu
YXBzaG90UG9zdE9yZGVySW5kZXhUZXN0KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZh
ciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3Qu
Y3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Y3YWRjN2IyYzEw
NDFkZDFiZWVmNWZhZjc2ZDE2ZGVlMzc0YTE3Ni4uMjg2NzYyNDkwZmVlM2Q4M2IxYTUzMzEzNGM2
NmIxZmI4MGI3YWRhNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNi0w
NSAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
IEluc3BlY3Rvcjogc2VyaWFsaXplIGVkZ2UgY291bnRzIGluc3RlYWQgb2YgaW5kZXhlcyBpbiBo
ZWFwIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODMyNAorCisgICAgICAgIFRoZSBzZXJpYWxpemVkIG5vZGUgc3RydWN0dXJlIGN1cnJl
bnRseSBob2xkcyBhbiBpbmRleAorICAgICAgICBvZiBpdHMgZmlyc3QgY29udGFpbm1lbnQgZWRn
ZSBpbiB0aGUgZWRnZXMgYXJyYXkuCisgICAgICAgIFRoZSBpbmRleCBjYW4gYmUgcXVpdGUgYmln
ICh1cCB0byA3IGRpZ2l0cyBmb3IgbGFyZ2Ugc25hcHNob3RzKS4KKyAgICAgICAgVGhlIHBhdGNo
IGNoYW5nZXMgdGhlIHNlcmlhbGl6YXRpb24gZm9ybWF0IHRvIHBhc3MKKyAgICAgICAgbm9kZSBj
b250YWlubWVudCBlZGdlIGNvdW50IGluc3RlYWQuIEZvciBtb3N0IG5vZGVzIHRoZSBjb3VudAor
ICAgICAgICBpcyBqdXN0IGEgc2luZ2xlIGRpZ2l0IG51bWJlci4KKyAgICAgICAgVGhpcyByZWR1
Y2VzIHNlcmlhbGl6ZWQgc25hcHNob3Qgc2l6ZSBhbmQgdGhlcmVmb3JlIGl0cyB0cmFuc2ZlciB0
aW1lLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2hlYXAtc25hcHNob3QtcGVyZm9ybWFuY2UtdGVzdC5qczoKKwogMjAxMi0wNi0w
NCAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3Rvcjogc3BlZWQgdXAgX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMgZnVuY3Rpb24KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QtcGVyZm9y
bWFuY2UtdGVzdC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3Qt
cGVyZm9ybWFuY2UtdGVzdC5qcwppbmRleCBiZmJjYzk3MWI2ZmViMmRmZDFmMmJlNjFhN2I0MzRj
OWZhMjRmOGU2Li41MTZkYmI0NTcyZDA2NzJhY2IyZjE5ZDI2ZjhiODQ3OTEzNGIxZjFhIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZvcm1h
bmNlLXRlc3QuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hv
dC1wZXJmb3JtYW5jZS10ZXN0LmpzCkBAIC0xLDUgKzEsNiBAQAogZnVuY3Rpb24gdGVzdCgpCiB7
CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUsICJfYnVpbGRFZGdlSW5kZXhlcyIpOwogICAgIEluc3BlY3RvclRlc3Qu
bWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1
aWxkUmV0YWluZXJzIik7CiAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGREb21pbmF0ZWROb2RlcyIpOwog
ICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZUZsYWdzIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>