<?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>160576</bug_id>
          
          <creation_ts>2016-08-04 17:32:05 -0700</creation_ts>
          <short_desc>Always show segmentation on v3 charts page</short_desc>
          <delta_ts>2016-08-09 14:24:21 -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>Perf Dashboard</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>160575</dependson>
    
    <dependson>160577</dependson>
    
    <dependson>160581</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1217698</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-04 17:32:05 -0700</bug_when>
    <thetext>On charts page, we should always show the segmented trend lines on charts page
so that it&apos;s easier to spot regressions and progressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218698</commentid>
    <comment_count>1</comment_count>
      <attachid>285631</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-08 23:06:09 -0700</bug_when>
    <thetext>Created attachment 285631
Adds segmentation support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218838</commentid>
    <comment_count>2</comment_count>
      <attachid>285631</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-09 14:15:00 -0700</bug_when>
    <thetext>Comment on attachment 285631
Adds segmentation support

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218843</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-09 14:24:21 -0700</bug_when>
    <thetext>Committed r204296: &lt;http://trac.webkit.org/changeset/204296&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285631</attachid>
            <date>2016-08-08 23:06:09 -0700</date>
            <delta_ts>2016-08-09 14:15:00 -0700</delta_ts>
            <desc>Adds segmentation support</desc>
            <filename>bug-160576-20160808230435.patch</filename>
            <type>text/plain</type>
            <size>66916</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjA0Mjc2KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0MyBAQAorMjAxNi0wOC0wOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBBbHdheXMgc2hvdyBzZWdtZW50YXRpb24gb24gdjMgY2hhcnRzIHBhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDU3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkICJUcmVu
ZCBMaW5lcyIgcG9wb3ZlciB0byBzZWxlY3QgYW5kIGN1c3RvbWl6ZSBhIG1vdmluZyBhdmVyYWdl
IG9yIGEgc2VnbWVudGF0aW9uIHRvIHNob3cgb24gY2hhcnRzIHBhZ2UKKyAgICAgICAgYW5kIG1h
ZGUgU2Nod2FyeiBjcml0ZXJpb24gc2VnbWVudGF0aW9uIHRoZSBkZWZhdWx0IHRyZW5kIGxpbmUg
Zm9yIGFsbCBjaGFydHMuCisKKyAgICAgICAgQmVjYXVzZSBjb21wdXRpbmcgdGhlIHNlZ21lbnRh
dGlvbiBpcyBleHBlbnNpdmUsIHdlIHVzZSBXZWJXb3JrZXIgdG8gcGFyYWxsZWxpemUgdGhlIGNv
bXB1dGF0aW9uIHZpYSBBc3luY1Rhc2suCisgICAgICAgIFdlIGFsc28gY29tcHV0ZSBhbmQgY2Fj
aGUgdGhlIHNlZ21lbnRhdGlvbiBmb3IgZWFjaCBjbHVzdGVyIHNlcGFyYXRlbHkgdG8gYXZvaWQg
cHJvY2Vzc2luZyB0aGUgZW50aXJlIG1lYXN1cmVtZW50CisgICAgICAgIHNldCBhcyB0aGF0IGNv
dWxkIHRha2UgMTAtMjBzIHRvdGFsLCB3aGljaCB3YXMgYSBodWdlIHByb2JsZW0gaW4gdjIgVUku
IHYzIFVJJ3MgYXBwcm9hY2ggaXMgbW9yZSBpbmNyZW1lbnRhbCBhbmQKKyAgICAgICAgZXZlbiBv
cGVucyB1cCBhbiBvcHBvcnR1bml0eSB0byBjYWNoZSB0aGUgcmVzdWx0cyBpbiB0aGUgc2VydmVy
IHNpZGUuCisKKyAgICAgICAgQWxzbyBicm91Z2h0IGJhY2sgInNoYWRpbmciIGZvciB0aGUgY29u
ZmlkZW5jZSBpbnRlcnZhbCBkcmF3aW5nIGFzIGRvbmUgaW4gdjEgYW5kIHYyIFVJLgorCisgICAg
ICAgICogcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzOgorICAgICAgICAoU3RhdGlzdGljcy5z
ZWdtZW50VGltZVNlcmllc0J5TWF4aW1pemluZ1NjaHdhcnpDcml0ZXJpb24pOiBBZGRlZCBzZWdt
ZW50Q291bnRXZWlnaHQgYW5kIGdyaWRTaXplIGFzIGFyZ3VtZW50cworICAgICAgICB0byBjdXN0
b21pemUgdGhlIGFsZ29yaXRobS4KKyAgICAgICAgKFN0YXRpc3RpY3Muc3BsaXRJbnRvU2VnbWVu
dHNVbnRpbEdvb2RFbm91Z2gpOiBUYWtlcyBzZWdtZW50Q291bnRXZWlnaHQgYXMgQmlyZ2VBbmRN
YXNzYXJ0Qy4KKworICAgICAgICAqIHB1YmxpYy92My9hc3luYy10YXNrLmpzOiBBZGRlZC4KKyAg
ICAgICAgKEFzeW5jVGFzayk6IEFkZGVkLiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSB0YXNrIHN1
Y2ggYXMgY29tcHV0aW5nIHNlZ21lbnRhdGlvbiB0byBiZSBleGVjdXRlZCBpbiBhIHdvcmtlci4K
KyAgICAgICAgKEFzeW5jVGFzay5wcm90b3R5cGUuZXhlY3V0ZSk6IEFkZGVkLiBSZXR1cm5zIGEg
cHJvbWlzZSB0aGF0IGdldHMgcmVzb2x2ZWQgd2hlbiB0aGUgc3BlY2lmaWVkIHRhc2sgY29tcGxl
dGVzLgorICAgICAgICAoQXN5bmNUYXNrV29ya2VyLndhaXRGb3JBdmFpbGFibGVXb3JrZXIpOiBB
ZGRlZC4gQ2FsbHMgdGhlIGdpdmVuIGNhbGxiYWNrIHdpdGggdGhlIGZpcnN0IGF2YWlsYWJsZSB3
b3JrZXIuIFdoZW4KKyAgICAgICAgYWxsIHdvcmtlcnMgYXJlIHByb2Nlc3Npbmcgc29tZSB0YXNr
cywgaXQgd2FpdHMgdW50aWwgb25lIGJlY29tZXMgYXZhaWxhYmxlIGJ5IHB1dHRpbmcgdGhlIGNh
bGxiYWNrIGludG8gYSBxdWV1ZS4KKyAgICAgICAgX2RpZFJlY2lldmVNZXNzYWdlIHBvcHMgYW4g
aXRlbSBvdXQgb2YgdGhpcyBxdWV1ZSB3aGVuIGEgd29ya2VyIGNvbXBsZXRlcyBhIHRhc2suIFdl
IGRvbid0IHVzZSBhIHByb21pc2UgaGVyZQorICAgICAgICBiZWNhdXNlIGNhbGxpbmcgdGhpcyBm
dW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBzeW5jaHJvbm91c2x5IGNvdWxkIHJlc3VsdCBpbiBhbGwg
dGhlIHJldHVybmVkIHByb21pc2VzIGdldHRpbmcKKyAgICAgICAgcmVzb2x2ZWQgd2l0aCB0aGUg
c2FtZSB3b3JrZXIgYXMgbm9uZSBvZiB0aGUgY2FsbGVycyBnZXQgdG8gbG9jayBhd2F5IHRoZSBm
aXJzdCBhdmFpbGFibGUgd29ya2VyIHVudGlsIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIGN1cnJl
bnQgbWljcm8tdGFzay4KKyAgICAgICAgKEFzeW5jVGFza1dvcmtlci5fbWFrZVdvcmtlckV2ZW50
dWFsbHlBdmFpbGFibGUpOiBBZGRlZC4gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHdhaXRGb3JBdmFp
bGFibGVXb3JrZXIuIFN0YXJ0CisgICAgICAgIGEgbmV3IHdvcmtlciBpZiB0aGUgbnVtYmVyIG9m
IHdvcmtlcnMgd2UndmUgc3RhcnRlZCBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBleHRyYSBj
b3JlcyAoZS5nLiA3IGlmIHRoZXJlIGFyZQorICAgICAgICA4IGNvcmVzIG9uIHRoZSBtYWNoaW5l
KS4gQXZvaWQgc3RhcnRpbmcgYSBuZXcgd29ya2VyIGlmIHdlJ3ZlIHN0YXJ0ZWQgYSBuZXcgd29y
a2VyIHdpdGhpbiB0aGUgbGFzdCA1MCBtcyBzaW5jZQorICAgICAgICBzdGFydGluZyBhIG5ldyB3
b3JrZXIgdGFrZXMgc29tZSB0aW1lLgorICAgICAgICAoQXN5bmNUYXNrV29ya2VyLl9maW5kQXZh
aWxhYmxlV29ya2VyKTogQWRkZWQuIEZpbmRzIGEgd29ya2VyIHRoYXQncyBhdmFpbGFibGUgcmln
aHQgbm93IGlmIHRoZXJlIGlzIGFueS4KKyAgICAgICAgKEFzeW5jVGFza1dvcmtlcik6IEFkZGVk
LiBBbiBpbnN0YW5jZSBvZiBBc3luY1Rhc2tXb3JrZXIgcmVwcmVzZW50cyBhIFdlYiB3b3JrZXIu
CisgICAgICAgIChBc3luY1Rhc2tXb3JrZXIucHJvdG90eXBlLmlkKTogQWRkZWQuCisgICAgICAg
IChBc3luY1Rhc2tXb3JrZXIucHJvdG90eXBlLnNlbmRUYXNrKTogQWRkZWQuIFNlbmRzIGEgdGFz
ayByZXByZXNlbnRlZCBieSBBc3luY1Rhc2sgdG8gdGhlIHdvcmtlci4KKyAgICAgICAgKEFzeW5j
VGFza1dvcmtlci5wcm90b3R5cGUuX2RpZFJlY2lldmVNZXNzYWdlKTogQWRkZWQuIFRoaXMgZnVu
Y3Rpb24gZ2V0cyBjYWxsZWQgd2hlbiB0aGUgY3VycmVudCB0YXNrIGNvbXBsZXRlcworICAgICAg
ICBpbiB0aGUgd29ya2VyLiBQb3AgdGhlIG5leHQgY2FsbGJhY2sgaWYgc29tZSBjYWxsZXIgb2Yg
d2FpdEZvckF2YWlsYWJsZVdvcmtlciBpcyBzdGlsbCB3YWl0aW5nLiBPdGhlcndpc2Ugc3RvcAor
ICAgICAgICB0aGUgd29ya2VyIGFmdGVyIG9uZSBzZWNvbmQgb2Ygd2FpdGluZyB0byBhdm9pZCB3
b3JrZXIgY2h1cm5pbmcuCisgICAgICAgIChBc3luY1Rhc2tXb3JrZXIud29ya2VyRGlkUmVjaWV2
ZU1lc3NhZ2UpOiBBZGRlZC4gQ2FsbGVkIGJ5IG9ubWVzc2FnZSBvbiB0aGUgd29ya2VyLiBFeGVj
dXRlcyB0aGUgc3BlY2lmaWVkIHRhc2sKKyAgICAgICAgYW5kIHNlbmRzIGJhY2sgYSBtZXNzYWdl
IHVwb24gY29tcGxldGlvbiB3aXRoIHRoZSBhcHByb3ByaWF0ZSB0aW1pbmcgZGF0YS4KKworICAg
ICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qczoKKyAgICAgICAg
KENoYXJ0UGFuZUJhc2UucHJvdG90eXBlLmNvbmZpZ3VyZSk6IFVzZXMgX2NyZWF0ZVNvdXJjZUxp
c3QuCisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlwZS5fY3JlYXRlU291cmNlTGlzdCk6
IEFkZGVkLiBFeHRyYWN0ZWQgZnJvbSBjb25maWd1cmUgdG8gY3VzdG9taXplIHRoZSBzb3VyY2Ug
bGlzdCBmb3IKKyAgICAgICAgdGhlIG1haW4gY2hhcnQgYW5kIHRoZSBvdmVydmlldyBjaGFydC4K
KyAgICAgICAgKENoYXJ0UGFuZUJhc2UucHJvdG90eXBlLl91cGRhdGVTb3VyY2VMaXN0KTogVXNl
cyBfY3JlYXRlU291cmNlTGlzdC4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2No
YXJ0LXN0eWxlcy5qczoKKyAgICAgICAgKENoYXJ0U3R5bGVzLmNyZWF0ZVNvdXJjZUxpc3QpOiBB
ZGRlZCBhIGJvb2xlYW4gc2hvd1BvaW50IGFzIGFuIGV4dHJhIGFyZ3VtZW50LiBUaGlzIHNwZWNp
ZmllcyB3aGV0aGVyIGNpcmNsZXMKKyAgICAgICAgYXJlIGRyYXduIGZvciBlYWNoIGRhdGEgcG9p
bnQuCisgICAgICAgIChDaGFydFN0eWxlcy5iYXNlbGluZVN0eWxlKTogQWRkZWQgc3R5bGVzIGZv
ciBmb3JlZ3JvdW5kIGxpbmVzIGFuZCBiYWNrZ3JvdW5kIGxpbmVzLiBUaGV5J3JlIHVzZWQgZm9y
IHRyZW5kIGxpbmVzCisgICAgICAgIGFuZCB1bmRlcmx5aW5nIHJhdyBkYXRhIHJlc3BlY3RpdmVs
eSB3aGVuIHRyZW5kIGxpbmVzIGFyZSBzaG93bi4KKyAgICAgICAgKENoYXJ0U3R5bGVzLnRhcmdl
dFN0eWxlKTogRGl0dG8uCisgICAgICAgIChDaGFydFN0eWxlcy5jdXJyZW50U3R5bGUpOiBEaXR0
by4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL3RpbWUtc2VyaWVzLWNoYXJ0Lmpz
OgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0KTogQWRkZWQgX3RyZW5kTGluZXMsIF9yZW5kZXJl
ZFRyZW5kTGluZXMsIGFuZCBfZmV0Y2hlZFRpbWVTZXJpZXMgYXMgaW5zdGFuY2UgdmFyaWFibGVz
LgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5zZXRTb3VyY2VMaXN0KTogQ2xl
YXIgX2ZldGNoZWRUaW1lU2VyaWVzIGJlZm9yZSBjYWxsaW5nIHNldFNvdXJjZUxpc3QgZm9yIGNv
bnNpc3RlbmN5LgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5zb3VyY2VMaXN0
KTogQWRkZWQuCisgICAgICAgIChUaW1lU2VyaWVzQ2hhcnQucHJvdG90eXBlLmNsZWFyVHJlbmRM
aW5lcyk6IEFkZGVkLgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5zZXRUcmVu
ZExpbmUpOiBBZGRlZC4gUHJlc2VydmVzIHRoZSBleGlzdGluZyB0cmVuZCBsaW5lcyBmb3Igb3Ro
ZXIgc291cmNlcy4gVGhpcyBpcworICAgICAgICBuZWNlc3NhcnkgYmVjYXVzZSBzZWdtZW50YXRp
b24gZm9yICJjdXJyZW50IiBhbmQgImJhc2VsaW5lIiBsaW5lcyBtYXkgYmVjb21lIGF2YWlsYWJs
ZSBhdCBkaWZmZXJlbnQgdGltZXMsIGFuZCB3ZQorICAgICAgICBkb24ndCB3YW50IHRvIGNsZWFy
IG9uZSBvciB0aGUgb3RoZXIgd2hlbiBzZXR0aW5nIG9uZS4KKyAgICAgICAgKFRpbWVTZXJpZXND
aGFydC5wcm90b3R5cGUuX2xheW91dCk6IEFkZGVkIGEgY2FsbCB0byBfZW5zdXJlVHJlbmRMaW5l
cy4KKyAgICAgICAgKFRpbWVTZXJpZXNDaGFydC5wcm90b3R5cGUuX3JlbmRlckNoYXJ0Q29udGVu
dCk6IENhbGwgX3JlbmRlclRpbWVTZXJpZXMgZm9yIHRyZW5kIGxpbmVzLiBUcmVuZCBsaW5lcyBh
cmUgYWx3YXlzCisgICAgICAgIGZvcmVncm91bmQgbGluZXMgYW5kICJyZWd1bGFyIiByYXcgZGF0
YSBwb2ludHMgYXJlIGRyYXduIGFzIGJhY2tncm91bmQgaWYgdGhlcmUgYXJlIHRyZW5kIGxpbmVz
LgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5fcmVuZGVyVGltZVNlcmllcyk6
IEFkZGVkIGxheWVyTmFtZSBhcyBhbiBhcmd1bWVudC4gSXQgY291bGQgYmUgYW4gZW1wdHkgc3Ry
aW5nLAorICAgICAgICAiZm9yZWdyb3VuZCIsIG9yICJiYWNrZ3JvdW5kIi4gRHJhdyBhICJzaGFk
ZSIganVzdCBsaWtlIHYxIGFuZCB2MiBVSSBpbnN0ZWFkIG9mIHZlcnRpY2FsIGxpbmVzIGZvciB0
aGUgY29uZmlkZW5jZQorICAgICAgICBpbnRlcnZhbHMuIFBpY2sgImZvcmVncm91bmQiLCAiYmFj
a2dyb3VuZCIsIG9yICJyZWd1bGFyIiBjaGFydCBzdHlsZSBiYXNlZCBvbiBsYXllck5hbWUuIEFs
c28gYXZvaWQgZHJhd2luZyBkYXRhCisgICAgICAgIHBvaW50cyB3aGVuICpQb2ludFJhZGl1cyBp
cyBzZXQgdG8gemVybyB0byByZWR1Y2UgdGhlIHJ1bnRpbWUgb2YgdGhpcyBmdW5jdGlvbi4KKyAg
ICAgICAgKFRpbWVTZXJpZXNDaGFydC5wcm90b3R5cGUuX3NvdXJjZU9wdGlvbldpdGhGYWxsYmFj
ayk6IEFkZGVkLgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5fZW5zdXJlU2Ft
cGxlZFRpbWVTZXJpZXMpOiBXaGVuICpQb2ludFJhZGl1cyBpcyAwLCBzaG93IGFzIG1hbnkgcG9p
bnRzIGFzIHRoZXJlIGFyZSB4CisgICAgICAgIGNvb3JkaW5hdGVzIGFzIGEgZmFsbGJhY2sgaW5z
dGVhZCBvZiBzaG93aW5nIGV2ZXJ5IHBvaW50LgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnBy
b3RvdHlwZS5fZW5zdXJlVHJlbmRMaW5lcyk6IEFkZGVkLiBSZXR1cm5zIHRydWUgaWYgdGhlIGNo
YXJ0IGNvbnRlbnRzIGhhdmVuJ3QgYmVlbiByZS1yZW5kZXJlZAorICAgICAgICBzaW5jZSB0aGUg
bGFzdCB1cGRhdGUgdG8gdHJlbmQgbGluZXMuIFRoaXMgZmxhZyBpcyB1bnNldCBieSBzZXRUcmVu
ZExpbmUuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvaW5kZXguaHRtbDoKKworICAgICAgICAqIHB1
YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtY2x1c3Rlci5qczoKKyAgICAgICAgKE1lYXN1cmVt
ZW50Q2x1c3Rlci5wcm90b3R5cGUuYWRkVG9TZXJpZXMpOiBTdG9yZSB0aGUgZGF0YSBwb2ludHMn
IGluZGV4IHRvIGlkTWFwIHRvIGhlbHAgYWlkIE1lYXN1cmVtZW50U2V0J3MKKyAgICAgICAgX2Nh
Y2hlZENsdXN0ZXJTZWdtZW50YXRpb24gZWZmaWNpZW50bHkgcmUtY3JlYXRlIHRoZSBzZWdtZW50
YXRpb24gZnJvbSB0aGUgY2FjaGUuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL21lYXN1
cmVtZW50LXNldC5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50U2V0KTogQWRkZWQgX3NlZ21lbnRh
dGlvbkNhY2hlIGFzIGFuIGluc3RhbmNlIHZhcmlhYmxlLgorICAgICAgICAoTWVhc3VyZW1lbnRT
ZXQucHJvdG90eXBlLmZldGNoU2VnbWVudGF0aW9uKTogQWRkZWQuIENhbGxzIF9jYWNoZWRDbHVz
dGVyU2VnbWVudGF0aW9uIG9uIGVhY2ggY2x1c3RlciwgYW5kCisgICAgICAgIGNvbnN0cnVjdHMg
dGhlIHRpbWUgc2VyaWVzIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzZWdtZW50YXRpb24gZnJvbSB0
aGUgcmVzdWx0cy4KKyAgICAgICAgKE1lYXN1cmVtZW50U2V0LnByb3RvdHlwZS5fY2FjaGVkQ2x1
c3RlclNlZ21lbnRhdGlvbik6IENvbXB1dGVzIGFuZCBjYWNoZXMgdGhlIHNlZ21lbnRhdGlvbiBm
b3IgZWFjaCBjbHVzdGVyLgorICAgICAgICBUaGUgY2FjaGUgb2Ygc2VnbWVudGF0aW9uIHN0b3Jl
cyBJRCBvZiBlYWNoIG1lYXN1cmVtZW50IHNldCBhdCB3aGljaCBzZWdtZW50IGNoYW5nZXMgaW5z
dGVhZCBvZiBpdHMgaW5kZXggc2luY2UKKyAgICAgICAgdGhlIGxhdHRlciBjb3VsZCBjaGFuZ2Ug
aW4gYW55IG1vbWVudCB3aGVuIGEgbmV3IHRlc3QgcmVzdWx0IGlzIHJlcG9ydGVkLCBvciBhbiBl
eGlzdGluZyB0ZXN0IHJlc3VsdCBpcyByZW1vdmVkCisgICAgICAgIGZyb20gdGhlIHRpbWUgc2Vy
aWVzOyBlLmcuIHdoZW4gaXQncyBtYXJrZWQgYXMgYW4gb3V0bGllci4KKyAgICAgICAgKE1lYXN1
cmVtZW50U2V0LnByb3RvdHlwZS5fdmFsaWRhdGVTZWdtZW50YXRpb25DYWNoZSk6IEFkZGVkLiBD
aGVja3Mgd2hldGhlciB0aGUgY2FjaGVkIHNlZ21lbnRhdGlvbidzIG5hbWUgYW5kCisgICAgICAg
IGl0cyBwYXJhbWV0ZXJzIG1hdGNoIHRoYXQgb2YgdGhlIHJlcXVlc3RlZCBvbmUuCisgICAgICAg
IChNZWFzdXJlbWVudFNldC5wcm90b3R5cGUuX2ludm9rZVNlZ21lbnRhdGlvbkFsZ29yaXRobSk6
IEFkZGVkLiBJbnZva2VzIHRoZSBzZWdtZW50YXRpb24gYWxnb3JpdGhtIGVpdGhlciBpbiB0aGUK
KyAgICAgICAgbWFpbiB0aHJlYWQgb3IgaW4gYSBXZWIgd29ya2VyIHZpYSBBc3luY1Rhc2sgQVBJ
IGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZSB0aW1lIHNlcmllcy4gV2hpbGUgcGFyYWxsZWxpemlu
ZyB0aGUKKyAgICAgICAgd29yayBpcyBiZW5lZmljaWFsIHdoZW4gdGhlIGRhdGEgc2V0IGlzIGxh
cmdlLCB0aGUgb3ZlcmhlYWQgY2FuIGFkZCB1cCBpZiB3ZSBrZWVwIHByb2Nlc3NpbmcgYSB2ZXJ5
IHNtYWxsIGRhdGEKKyAgICAgICAgc2V0IGluIGEgd29ya2VyLgorCisgICAgICAgICogcHVibGlj
L3YzL21vZGVscy90aW1lLXNlcmllcy5qczogTWFkZSB0aGUgZmlsZSBjb21wYXRpYmxlIHdpdGgg
Tm9kZS4KKyAgICAgICAgKFRpbWVTZXJpZXMucHJvdG90eXBlLmxlbmd0aCk6IEFkZGVkLgorICAg
ICAgICAoVGltZVNlcmllcy5wcm90b3R5cGUudmFsdWVzQmV0d2VlblJhbmdlKTogQWRkZWQuCisK
KyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qczoKKyAgICAgICAgKGNyZWF0
ZVRyZW5kTGluZUV4ZWN1dGFibGVGcm9tQXZlcmFnaW5nRnVuY3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgKENoYXJ0VHJlbmRMaW5lVHlwZXMpOiBBZGRlZC4gU2ltaWxhciB0byBTdGF0aXN0aWNzU3Ry
YXRlZ2llcyAoc3RhdGlzdGljcy1zdHJhdGVnaWVzLmpzKSBpbiB2MiBVSS4KKyAgICAgICAgKENo
YXJ0UGFuZSk6IEFkZGVkIF90cmVuZExpbmVUeXBlLCBfdHJlbmRMaW5lUGFyYW1ldGVycywgX3Ry
ZW5kTGluZVZlcnNpb24sIGFuZCBfcmVuZGVyZWRUcmVuZExpbmVPcHRpb25zIGFzCisgICAgICAg
IGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuc2VyaWFs
aXplU3RhdGUpOiBTZXJpYWxpemUgdGhlIHRyZW5kIGxpbmUgb3B0aW9uLiBUaGlzIGZvcm1hdCBp
cyBjb21wYXRpYmxlIHdpdGggdjIgVUkuCisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBlLnVw
ZGF0ZUZyb21TZXJpYWxpemVkU3RhdGUpOiBEaXR0by4gUGFyc2luZyBpcyBjb21wYXRpYmxlIHdp
dGggdjIgVUkgZXhjZXB0IHRoYXQgd2Ugbm93IGhhdmUKKyAgICAgICAgdGhlIGRlZmF1bHQgdHJl
bmQgbGluZSBzZXQgd2hlbiB0aGUgc3BlY2lmaWVkIElEIGRvZXNuJ3QgbWF0Y2ggYW4gZXhpc3Rp
bmcgdHlwZSBJRC4KKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuX3JlbmRlckFjdGlvblRv
b2xiYXIpOiBBZGRlZCBhIGNhbGwgdG8gX3JlbmRlclRyZW5kTGluZVBvcG92ZXIuIFRoaXMgaXMg
dGhlIHBvcG92ZXIgdGhhdAorICAgICAgICBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgYSB0cmVuZCBs
aW5lIHRvIHNob3cgYXMgd2VsbCBhcyBpdHMgcGFyYW1ldGVycy4KKyAgICAgICAgKENoYXJ0UGFu
ZS5wcm90b3R5cGUuX3JlbmRlclRyZW5kTGluZVBvcG92ZXIpOiBBZGRlZC4gQSBwb3BvdmVyIGZv
ciBzcGVjaWZ5aW5nIGFuZCBjdXN0b21pemluZyBhIHRyZW5kIGxpbmUuCisgICAgICAgIChDaGFy
dFBhbmUucHJvdG90eXBlLl90cmVuZExpbmVUeXBlRGlkQ2hhbmdlKTogQWRkZWQuIENhbGxlZCB3
aGVuIGEgbmV3IHRyZW5kIGxpbmUgaXMgc2VsZWN0ZWQuCisgICAgICAgIChDaGFydFBhbmUucHJv
dG90eXBlLl9kZWZhdWx0UGFyYW1ldGVyc0ZvclRyZW5kTGluZSk6IEFkZGVkLgorICAgICAgICAo
Q2hhcnRQYW5lLnByb3RvdHlwZS5fdHJlbmRMaW5lUGFyYW1ldGVyRGlkQ2hhbmdlKTogQWRkZWQu
IENhbGxlZCB3aGVuIHRoZSB0cmVuZCBsaW5lcycgcGFyYW1ldGVycyBhcmUgY2hhbmdlZC4KKyAg
ICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuX2RpZEZldGNoRGF0YSk6IEFkZGVkLiBPdmVycmlk
ZXMgdGhlIG9uZSBpbiBDaGFydFBhbmVCYXNlIHRvIHRyaWdnZXIgYSB0cmVuZCBsaW5lIHVwZGF0
ZS4KKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuX3VwZGF0ZVRyZW5kTGluZSk6IEFkZGVk
LiBVcGRhdGUgdGhlIHRyZW5kIGxpbmUuIFNpbmNlIHNlZ21lbnRhdGlvbiBjYW4gdGFrZSBhbiBh
cmJpdHJhcnkKKyAgICAgICAgbG9uZyB0aW1lLCBhdm9pZCB1cGRhdGluZyB0cmVuZCBsaW5lcyBp
ZiB0aGlzIGZ1bmN0aW9uIGhhZCBiZWVuIGNhbGxlZCBhZ2FpbiAocG9zc2libHkgZm9yIGEgZGlm
ZmVyZW50IHRyZW5kIGxpbmUKKyAgICAgICAgdHlwZSBvciB3aXRoIGRpZmZlcmVudCBwYXJhbWV0
ZXJzKSBiZWZvcmUgdGhlIHJlc3VsdHMgYmVjb21lIGF2YWlsYWJsZTsgaGVuY2UgdGhlIHZlcnNp
b25pbmcuCisgICAgICAgIChDaGFydFBhbmUucGFuZUhlYWRlclRlbXBsYXRlKTogQWRkZWQgdGhl
IHRyZW5kIGxpbmUgcG9wb3Zlci4KKyAgICAgICAgKENoYXJ0UGFuZS5jc3NUZW1wbGF0ZSk6IEFk
ZGVkIHN0eWxlcyBmb3IgdGhlIHRyZW5kIGxpbmUgcG9wb3Zlci4gQWxzbyB1c2UgYSBtb3JlIG9w
YXF1ZSBiYWNrZ3JvdW5kIGNvbG9yIGJlaGluZAorICAgICAgICBwb3BvdmVycyB3aGVuIHRoZSAt
d2Via2l0LWJhY2tkcm9wLWZpbHRlciBwcm9wZXJ0eSBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAg
ICAgICogcHVibGljL3YzL3BhZ2VzL2Rhc2hib2FyZC1wYWdlLmpzOgorICAgICAgICAoRGFzaGJv
YXJkUGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNoYXJ0Rm9yQ2VsbCk6IENhbGwgY3JlYXRlU291cmNl
TGlzdCB3aXRoIHNob3dQb2ludHMgc2V0IHRvIHRydWUgdG8gcHJlc2VydmUgdGhlCisgICAgICAg
IGV4aXN0aW5nIGJlaGF2aW9yLgorCisgICAgICAgICogdG9vbHMvanMvdjMtbW9kZWxzLmpzOiBJ
bmNsdWRlIFRpbWVTZXJpZXMgb2JqZWN0LgorCisgICAgICAgICogdW5pdC10ZXN0cy9tZWFzdXJl
bWVudC1zZXQtdGVzdHMuanM6IEFkZGVkIHR3byB0ZXN0IGNhc2VzIGZvciBNZWFzdXJlbWVudFNl
dCdzIGZldGNoU2VnbWVudGF0aW9uLgorCisgICAgICAgICogdW5pdC10ZXN0cy9yZXNvdXJjZXMv
YWxtb3N0LWVxdWFsLmpzOiBBZGRlZC4KKyAgICAgICAgKGFsbW9zdEVxdWFsKTogRXh0cmFjdGVk
IG91dCBvZiBzdGF0aXN0aWNzLXRlc3RzLmpzLgorCisgICAgICAgICogdW5pdC10ZXN0cy9zdGF0
aXN0aWNzLXRlc3RzLmpzOgorCiAyMDE2LTA4LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIHNlZ21lbnRUaW1lU2VyaWVzQnlNYXhpbWl6aW5nU2Nod2FyekNy
aXRlcmlvbiByZXR1cm5zIGEgYm9ndXMgcmVzdWx0IG9uIGVtcHR5IGNoYXJ0cwpJbmRleDogV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9zdGF0aXN0aWNz
LmpzCShyZXZpc2lvbiAyMDQxOTApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3NoYXJlZC9zdGF0aXN0aWNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsMTMgKzE3MywxMyBA
QCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogICAgIH0KIAogICAgIHRoaXMu
ZGVidWdnaW5nU2VnbWVudGF0aW9uID0gZmFsc2U7Ci0gICAgdGhpcy5zZWdtZW50VGltZVNlcmll
c0J5TWF4aW1pemluZ1NjaHdhcnpDcml0ZXJpb24gPSBmdW5jdGlvbiAodmFsdWVzKSB7CisgICAg
dGhpcy5zZWdtZW50VGltZVNlcmllc0J5TWF4aW1pemluZ1NjaHdhcnpDcml0ZXJpb24gPSBmdW5j
dGlvbiAodmFsdWVzLCBzZWdtZW50Q291bnRXZWlnaHQsIGdyaWRTaXplKSB7CiAgICAgICAgIC8v
IFNwbGl0IHRoZSB0aW1lIHNlcmllcyBpbnRvIGdyaWRzIHNpbmNlIHNwbGl0SW50b1NlZ21lbnRz
VW50aWxHb29kRW5vdWdoIGlzIE8obl4yKS4KLSAgICAgICAgdmFyIGdyaWRMZW5ndGggPSA1MDA7
CisgICAgICAgIHZhciBncmlkTGVuZ3RoID0gZ3JpZFNpemUgfHwgNTAwOwogICAgICAgICB2YXIg
dG90YWxTZWdtZW50YXRpb24gPSBbMF07CiAgICAgICAgIGZvciAodmFyIGdyaWRDb3VudCA9IDA7
IGdyaWRDb3VudCA8IE1hdGguY2VpbCh2YWx1ZXMubGVuZ3RoIC8gZ3JpZExlbmd0aCk7IGdyaWRD
b3VudCsrKSB7CiAgICAgICAgICAgICB2YXIgZ3JpZFZhbHVlcyA9IHZhbHVlcy5zbGljZShncmlk
Q291bnQgKiBncmlkTGVuZ3RoLCAoZ3JpZENvdW50ICsgMSkgKiBncmlkTGVuZ3RoKTsKLSAgICAg
ICAgICAgIHZhciBzZWdtZW50YXRpb24gPSBzcGxpdEludG9TZWdtZW50c1VudGlsR29vZEVub3Vn
aChncmlkVmFsdWVzKTsKKyAgICAgICAgICAgIHZhciBzZWdtZW50YXRpb24gPSBzcGxpdEludG9T
ZWdtZW50c1VudGlsR29vZEVub3VnaChncmlkVmFsdWVzLCBzZWdtZW50Q291bnRXZWlnaHQpOwog
CiAgICAgICAgICAgICBpZiAoU3RhdGlzdGljcy5kZWJ1Z2dpbmdTZWdtZW50YXRpb24pCiAgICAg
ICAgICAgICAgICAgY29uc29sZS5sb2coJ2dyaWQ9JyArIGdyaWRDb3VudCwgc2VnbWVudGF0aW9u
KTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkg
ewogICAgIGZ1bmN0aW9uIG9uZVNpZGVkVG9Ud29TaWRlZFByb2JhYmlsaXR5KHByb2JhYmlsaXR5
KSB7IHJldHVybiAyICogcHJvYmFiaWxpdHkgLSAxOyB9CiAgICAgZnVuY3Rpb24gdHdvU2lkZWRU
b09uZVNpZGVkUHJvYmFiaWxpdHkocHJvYmFiaWxpdHkpIHsgcmV0dXJuICgxIC0gKDEgLSBwcm9i
YWJpbGl0eSkgLyAyKTsgfQogCi0gICAgZnVuY3Rpb24gc3BsaXRJbnRvU2VnbWVudHNVbnRpbEdv
b2RFbm91Z2godmFsdWVzKSB7CisgICAgZnVuY3Rpb24gc3BsaXRJbnRvU2VnbWVudHNVbnRpbEdv
b2RFbm91Z2godmFsdWVzLCBCaXJnZUFuZE1hc3NhcnRDKSB7CiAgICAgICAgIGlmICh2YWx1ZXMu
bGVuZ3RoIDwgMikKICAgICAgICAgICAgIHJldHVybiBbMCwgdmFsdWVzLmxlbmd0aF07CiAKQEAg
LTI3OSw3ICsyNzksNyBAQCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogCiAg
ICAgICAgIHZhciBTY2h3YXJ6Q3JpdGVyaW9uQmV0YSA9IE1hdGgubG9nMXAodmFsdWVzLmxlbmd0
aCAtIDEpIC8gdmFsdWVzLmxlbmd0aDsKIAotICAgICAgICB2YXIgQmlyZ2VBbmRNYXNzYXJ0QyA9
IDIuNTsgLy8gU3VnZ2VzdGVkIGJ5IHRoZSBhdXRob3JzLgorICAgICAgICBCaXJnZUFuZE1hc3Nh
cnRDID0gQmlyZ2VBbmRNYXNzYXJ0QyB8fCAyLjU7IC8vIFN1Z2dlc3RlZCBieSB0aGUgYXV0aG9y
cy4KICAgICAgICAgdmFyIEJpcmdlQW5kTWFzc2FydFBlbmFsaXphdGlvbiA9IGZ1bmN0aW9uIChz
ZWdtZW50Q291bnQpIHsKICAgICAgICAgICAgIHJldHVybiBzZWdtZW50Q291bnQgKiAoMSArIEJp
cmdlQW5kTWFzc2FydEMgKiBNYXRoLmxvZzFwKHZhbHVlcy5sZW5ndGggLyBzZWdtZW50Q291bnQg
LSAxKSk7CiAgICAgICAgIH0KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvYXN5bmMtdGFzay5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2FzeW5jLXRhc2suanMJKG5vbmV4aXN0ZW50KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9hc3luYy10YXNrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTUxIEBACisKK2NsYXNzIEFzeW5jVGFzayB7CisKKyAgICBjb25zdHJ1Y3RvcihtZXRob2Qs
IGFyZ3MpCisgICAgeworICAgICAgICB0aGlzLl9tZXRob2QgPSBtZXRob2Q7CisgICAgICAgIHRo
aXMuX2FyZ3MgPSBhcmdzOworICAgIH0KKworICAgIGV4ZWN1dGUoKQorICAgIHsKKyAgICAgICAg
aWYgKCEodGhpcy5fbWV0aG9kIGluIFN0YXRpc3RpY3MpKQorICAgICAgICAgICAgdGhyb3cgYCR7
dGhpcy5fbWV0aG9kfSBpcyBub3QgYSB2YWxpZCBtZXRob2Qgb2YgU3RhdGlzdGljc2A7CisKKyAg
ICAgICAgQXN5bmNUYXNrLl9hc3luY01lc3NhZ2VJZCsrOworCisgICAgICAgIHZhciBzdGFydFRp
bWUgPSBEYXRlLm5vdygpOworICAgICAgICB2YXIgbWV0aG9kID0gdGhpcy5fbWV0aG9kOworICAg
ICAgICB2YXIgYXJncyA9IHRoaXMuX2FyZ3M7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShm
dW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBBc3luY1Rhc2tXb3JrZXIu
d2FpdEZvckF2YWlsYWJsZVdvcmtlcihmdW5jdGlvbiAod29ya2VyKSB7CisgICAgICAgICAgICAg
ICAgd29ya2VyLnNlbmRUYXNrKHtpZDogQXN5bmNUYXNrLl9hc3luY01lc3NhZ2VJZCwgbWV0aG9k
OiBtZXRob2QsIGFyZ3M6IGFyZ3N9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBzdGFydExhdGVuY3kgPSBkYXRhLndvcmtlclN0YXJ0VGltZSAtIHN0YXJ0
VGltZTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBz
dGFydFRpbWU7CisgICAgICAgICAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IGRhdGEuc3RhdHVz
ID09ICdyZXNvbHZlJyA/IHJlc29sdmUgOiByZWplY3Q7CisgICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHtyZXN1bHQ6IGRhdGEucmVzdWx0LCB3b3JrZXJJZDogd29ya2VyLmlkKCksIHN0YXJ0
TGF0ZW5jeTogc3RhcnRMYXRlbmN5LCB0b3RhbFRpbWU6IHRvdGFsVGltZSwgd29ya2VyVGltZTog
ZGF0YS53b3JrZXJUaW1lfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorCit9CisKK0FzeW5jVGFzay5fYXN5bmNNZXNzYWdlSWQgPSAw
OworCitjbGFzcyBBc3luY1Rhc2tXb3JrZXIgeworCisgICAgLy8gVGFrZXMgYSBjYWxsYmFjayBp
bnN0ZWFkIG9mIHJldHVybmluZyBhIHByb21pc2UgYmVjYXVzZSBhIHdvcmtlciBjYW4gYmVjb21l
IHVuYXZhaWxhYmxlIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IG1pY3JvdGFzay4KKyAg
ICBzdGF0aWMgd2FpdEZvckF2YWlsYWJsZVdvcmtlcihjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHZhciB3b3JrZXIgPSB0aGlzLl9tYWtlV29ya2VyRXZlbnR1YWxseUF2YWlsYWJsZSgpOworICAg
ICAgICBpZiAod29ya2VyKQorICAgICAgICAgICAgY2FsbGJhY2sod29ya2VyKTsKKyAgICAgICAg
dGhpcy5fcXVldWUucHVzaChjYWxsYmFjayk7CisgICAgfQorCisgICAgc3RhdGljIF9tYWtlV29y
a2VyRXZlbnR1YWxseUF2YWlsYWJsZSgpCisgICAgeworICAgICAgICB2YXIgd29ya2VyID0gdGhp
cy5fZmluZEF2YWlsYWJsZVdvcmtlcigpOworICAgICAgICBpZiAod29ya2VyKQorICAgICAgICAg
ICAgcmV0dXJuIHdvcmtlcjsKKworICAgICAgICB2YXIgY2FuU3RhcnRNb3JlV29ya2VyID0gdGhp
cy5fd29ya2VyU2V0LnNpemUgPCB0aGlzLl9tYXhXb3JrZXJDb3VudDsKKyAgICAgICAgaWYgKCFj
YW5TdGFydE1vcmVXb3JrZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBp
ZiAodGhpcy5fbGF0ZXN0U3RhcnRUaW1lID4gRGF0ZS5ub3coKSAtIDUwKSB7CisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgd29ya2VyID0g
QXN5bmNUYXNrV29ya2VyLl9maW5kQXZhaWxhYmxlV29ya2VyKCk7CisgICAgICAgICAgICAgICAg
aWYgKHdvcmtlcikKKyAgICAgICAgICAgICAgICAgICAgQXN5bmNUYXNrV29ya2VyLl9xdWV1ZS5w
b3AoKSh3b3JrZXIpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBBc3luY1Rhc2tXb3JrZXI7CisgICAg
fQorCisgICAgc3RhdGljIF9maW5kQXZhaWxhYmxlV29ya2VyKCkKKyAgICB7CisgICAgICAgIGZv
ciAodmFyIHdvcmtlciBvZiB0aGlzLl93b3JrZXJTZXQpIHsKKyAgICAgICAgICAgIGlmICghd29y
a2VyLl9jdXJyZW50VGFza0lkKQorICAgICAgICAgICAgICAgIHJldHVybiB3b3JrZXI7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fd2ViV29ya2VyID0gbmV3IFdvcmtlcignYXN5bmMtdGFzay5q
cycpOworICAgICAgICB0aGlzLl93ZWJXb3JrZXIub25tZXNzYWdlID0gdGhpcy5fZGlkUmVjaWV2
ZU1lc3NhZ2UuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5faWQgPSBBc3luY1Rhc2tXb3JrZXIu
X3dvcmtlcklkOworICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAgICAg
ICB0aGlzLl9jdXJyZW50VGFza0lkID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBu
dWxsOworCisgICAgICAgIEFzeW5jVGFza1dvcmtlci5fbGF0ZXN0U3RhcnRUaW1lID0gdGhpcy5f
c3RhcnRUaW1lOworICAgICAgICBBc3luY1Rhc2tXb3JrZXIuX3dvcmtlcklkKys7CisgICAgICAg
IEFzeW5jVGFza1dvcmtlci5fd29ya2VyU2V0LmFkZCh0aGlzKTsKKyAgICB9CisKKyAgICBpZCgp
IHsgcmV0dXJuIHRoaXMuX2lkOyB9CisKKyAgICBzZW5kVGFzayh0YXNrKQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2N1cnJlbnRUYXNrSWQpOworICAgICAgICBjb25zb2xl
LmFzc2VydCh0YXNrLmlkKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICB0aGlz
Ll9jdXJyZW50VGFza0lkID0gdGFzay5pZDsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uIChyZXNvbHZlKSB7CisgICAgICAgICAgICBzZWxmLl93ZWJXb3JrZXIucG9zdE1lc3Nh
Z2UodGFzayk7CisgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayA9IHJlc29sdmU7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIF9kaWRSZWNpZXZlTWVzc2FnZShldmVudCkKKyAgICB7CisgICAg
ICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX2NhbGxiYWNrOworCisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX2N1cnJlbnRUYXNrSWQpOworICAgICAgICB0aGlzLl9jdXJyZW50VGFza0lkID0g
bnVsbDsKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBudWxsOworCisgICAgICAgIGlmIChBc3lu
Y1Rhc2tXb3JrZXIuX3F1ZXVlLmxlbmd0aCkKKyAgICAgICAgICAgIEFzeW5jVGFza1dvcmtlci5f
cXVldWUucG9wKCkodGhpcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIHNlbGYg
PSB0aGlzOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHNlbGYuX2N1cnJlbnRUYXNrSWQgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAg
ICAgQXN5bmNUYXNrV29ya2VyLl93b3JrZXJTZXQuZGVsZXRlKHNlbGYpOworICAgICAgICAgICAg
fSwgMTAwMCk7CisgICAgICAgIH0KKworICAgICAgICBjYWxsYmFjayhldmVudC5kYXRhKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgd29ya2VyRGlkUmVjaWV2ZU1lc3NhZ2UoZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgZGF0YSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBpZCA9IGRhdGEuaWQ7
CisgICAgICAgIHZhciBtZXRob2QgPSBTdGF0aXN0aWNzW2RhdGEubWV0aG9kXTsKKyAgICAgICAg
dmFyIHN0YXJ0VGltZSA9IERhdGUubm93KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2
YXIgcmV0dXJuVmFsdWUgPSBtZXRob2QuYXBwbHkoU3RhdGlzdGljcywgZGF0YS5hcmdzKTsKKyAg
ICAgICAgICAgIHBvc3RNZXNzYWdlKHsnaWQnOiBpZCwgJ3N0YXR1cyc6ICdyZXNvbHZlJywgJ3Jl
c3VsdCc6IHJldHVyblZhbHVlLCAnd29ya2VyU3RhcnRUaW1lJzogc3RhcnRUaW1lLCAnd29ya2Vy
VGltZSc6IERhdGUubm93KCkgLSBzdGFydFRpbWV9KTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3Ip
IHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsnaWQnOiBpZCwgJ3N0YXR1cyc6ICdyZWplY3Qn
LCAncmVzdWx0JzogZXJyb3IudG9TdHJpbmcoKSwgJ3dvcmtlclN0YXJ0VGltZSc6IHN0YXJ0VGlt
ZSwgJ3dvcmtlclRpbWUnOiBEYXRlLm5vdygpIC0gc3RhcnRUaW1lfSk7CisgICAgICAgICAgICB0
aHJvdyBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KK30KKworQXN5bmNUYXNrV29ya2VyLl9tYXhX
b3JrZXJDb3VudCA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgJ2hhcmR3YXJl
Q29uY3VycmVuY3knIGluIG5hdmlnYXRvciA/IE1hdGgubWF4KDEsIG5hdmlnYXRvci5oYXJkd2Fy
ZUNvbmN1cnJlbmN5IC0gMSkgOiAxOworQXN5bmNUYXNrV29ya2VyLl93b3JrZXJTZXQgPSBuZXcg
U2V0OworQXN5bmNUYXNrV29ya2VyLl9xdWV1ZSA9IFtdOworQXN5bmNUYXNrV29ya2VyLl93b3Jr
ZXJJZCA9IDE7CitBc3luY1Rhc2tXb3JrZXIuX2xhdGVzdFN0YXJ0VGltZSA9IDA7CisKK2lmICh0
eXBlb2YgbW9kdWxlID09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cgPT0gJ3VuZGVmaW5l
ZCcgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT0gJ3VuZGVmaW5lZCcpIHsgLy8gSW5zaWRlIGEg
d29ya2VyCisgICAgaW1wb3J0U2NyaXB0cygnL3NoYXJlZC9zdGF0aXN0aWNzLmpzJyk7CisgICAg
b25tZXNzYWdlID0gQXN5bmNUYXNrV29ya2VyLndvcmtlckRpZFJlY2lldmVNZXNzYWdlLmJpbmQo
QXN5bmNUYXNrV29ya2VyKTsKK30KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2luZGV4Lmh0bWwJKHJldmlzaW9uIDIwNDE4OSkKKysrIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvaW5kZXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQCBSdW4gdG9vbHMvYnVuZGxlLXYzLXNjcmlwdHMgdG8gc3BlZWQgdXAgCiAgICAgICAg
IDxzY3JpcHQgc3JjPSJpbnN0cnVtZW50YXRpb24uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0IHNyYz0icmVtb3RlLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9InByaXZp
bGVnZWQtYXBpLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImFzeW5jLXRhc2su
anMiPjwvc2NyaXB0PgogCiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvdGltZS1zZXJpZXMu
anMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ibW9kZWxzL21lYXN1cmVtZW50LWFk
YXB0b3IuanMiPjwvc2NyaXB0PgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpz
CShyZXZpc2lvbiAyMDQxODkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSAr
NDIsOSBAQCBjbGFzcyBDaGFydFBhbmVCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzCiAgICAgICAg
IHZhciBmb3JtYXR0ZXIgPSByZXN1bHQubWV0cmljLm1ha2VGb3JtYXR0ZXIoNCk7CiAgICAgICAg
IHZhciBzZWxmID0gdGhpczsKIAotICAgICAgICB2YXIgc291cmNlTGlzdCA9IENoYXJ0U3R5bGVz
LmNyZWF0ZVNvdXJjZUxpc3QodGhpcy5fcGxhdGZvcm0sIHRoaXMuX21ldHJpYywgdGhpcy5fZGlz
YWJsZVNhbXBsaW5nLCB0aGlzLl9zaG93T3V0bGllcnMpOwotCiAgICAgICAgIHZhciBvdmVydmll
d09wdGlvbnMgPSBDaGFydFN0eWxlcy5vdmVydmlld0NoYXJ0T3B0aW9ucyhmb3JtYXR0ZXIpOwog
ICAgICAgICBvdmVydmlld09wdGlvbnMuc2VsZWN0aW9uLm9uY2hhbmdlID0gdGhpcy5fb3ZlcnZp
ZXdTZWxlY3Rpb25EaWRDaGFuZ2UuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdD
aGFydCA9IG5ldyBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydChzb3VyY2VMaXN0LCBvdmVydmll
d09wdGlvbnMpOworICAgICAgICB0aGlzLl9vdmVydmlld0NoYXJ0ID0gbmV3IEludGVyYWN0aXZl
VGltZVNlcmllc0NoYXJ0KHRoaXMuX2NyZWF0ZVNvdXJjZUxpc3QoZmFsc2UpLCBvdmVydmlld09w
dGlvbnMpOwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCkucXVlcnlT
ZWxlY3RvcignLmNoYXJ0LXBhbmUtb3ZlcnZpZXcnKSwgdGhpcy5fb3ZlcnZpZXdDaGFydCk7CiAK
ICAgICAgICAgdmFyIG1haW5PcHRpb25zID0gQ2hhcnRTdHlsZXMubWFpbkNoYXJ0T3B0aW9ucyhm
b3JtYXR0ZXIpOwpAQCAtNTUsNyArNTMsNyBAQCBjbGFzcyBDaGFydFBhbmVCYXNlIGV4dGVuZHMg
Q29tcG9uZW50QmFzCiAgICAgICAgIG1haW5PcHRpb25zLnNlbGVjdGlvbi5vbnpvb20gPSB0aGlz
Ll9tYWluU2VsZWN0aW9uRGlkWm9vbS5iaW5kKHRoaXMpOwogICAgICAgICBtYWluT3B0aW9ucy5h
bm5vdGF0aW9ucy5vbmNsaWNrID0gdGhpcy5fb3BlbkFuYWx5c2lzVGFzay5iaW5kKHRoaXMpOwog
ICAgICAgICBtYWluT3B0aW9ucy5vbmRhdGEgPSB0aGlzLl9kaWRGZXRjaERhdGEuYmluZCh0aGlz
KTsKLSAgICAgICAgdGhpcy5fbWFpbkNoYXJ0ID0gbmV3IEludGVyYWN0aXZlVGltZVNlcmllc0No
YXJ0KHNvdXJjZUxpc3QsIG1haW5PcHRpb25zKTsKKyAgICAgICAgdGhpcy5fbWFpbkNoYXJ0ID0g
bmV3IEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0KHRoaXMuX2NyZWF0ZVNvdXJjZUxpc3QodHJ1
ZSksIG1haW5PcHRpb25zKTsKICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVu
dCgpLnF1ZXJ5U2VsZWN0b3IoJy5jaGFydC1wYW5lLW1haW4nKSwgdGhpcy5fbWFpbkNoYXJ0KTsK
IAogICAgICAgICB0aGlzLl9tYWluQ2hhcnRTdGF0dXMgPSBuZXcgQ2hhcnRQYW5lU3RhdHVzVmll
dyhyZXN1bHQubWV0cmljLCB0aGlzLl9tYWluQ2hhcnQsIHRoaXMuX3JlcXVlc3RPcGVuaW5nQ29t
bWl0Vmlld2VyLmJpbmQodGhpcykpOwpAQCAtODAsMTEgKzc4LDE1IEBAIGNsYXNzIENoYXJ0UGFu
ZUJhc2UgZXh0ZW5kcyBDb21wb25lbnRCYXMKICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTGlz
dCgpOwogICAgIH0KIAorICAgIF9jcmVhdGVTb3VyY2VMaXN0KGlzTWFpbkNoYXJ0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIENoYXJ0U3R5bGVzLmNyZWF0ZVNvdXJjZUxpc3QodGhpcy5fcGxhdGZv
cm0sIHRoaXMuX21ldHJpYywgdGhpcy5fZGlzYWJsZVNhbXBsaW5nLCB0aGlzLl9zaG93T3V0bGll
cnMsIGlzTWFpbkNoYXJ0KTsKKyAgICB9CisKICAgICBfdXBkYXRlU291cmNlTGlzdCgpCiAgICAg
ewotICAgICAgICB2YXIgc291cmNlTGlzdCA9IENoYXJ0U3R5bGVzLmNyZWF0ZVNvdXJjZUxpc3Qo
dGhpcy5fcGxhdGZvcm0sIHRoaXMuX21ldHJpYywgdGhpcy5fZGlzYWJsZVNhbXBsaW5nLCB0aGlz
Ll9zaG93T3V0bGllcnMpOwotICAgICAgICB0aGlzLl9tYWluQ2hhcnQuc2V0U291cmNlTGlzdChz
b3VyY2VMaXN0KTsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdDaGFydC5zZXRTb3VyY2VMaXN0KHNv
dXJjZUxpc3QpOworICAgICAgICB0aGlzLl9tYWluQ2hhcnQuc2V0U291cmNlTGlzdCh0aGlzLl9j
cmVhdGVTb3VyY2VMaXN0KHRydWUpKTsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdDaGFydC5zZXRT
b3VyY2VMaXN0KHRoaXMuX2NyZWF0ZVNvdXJjZUxpc3QoZmFsc2UpKTsKICAgICB9CiAKICAgICBm
ZXRjaEFuYWx5c2lzVGFza3Mobm9DYWNoZSkKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1zdHlsZXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXN0eWxlcy5q
cwkocmV2aXNpb24gMjA0MTg5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9jb21wb25lbnRzL2NoYXJ0LXN0eWxlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTcsNyArMTcs
NyBAQCBjbGFzcyBDaGFydFN0eWxlcyB7CiAgICAgICAgIH07CiAgICAgfQogCi0gICAgc3RhdGlj
IGNyZWF0ZVNvdXJjZUxpc3QocGxhdGZvcm0sIG1ldHJpYywgZGlzYWJsZVNhbXBsaW5nLCBpbmNs
dWRlT3V0bGllcikKKyAgICBzdGF0aWMgY3JlYXRlU291cmNlTGlzdChwbGF0Zm9ybSwgbWV0cmlj
LCBkaXNhYmxlU2FtcGxpbmcsIGluY2x1ZGVPdXRsaWVyLCBzaG93UG9pbnQpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChwbGF0Zm9ybSBpbnN0YW5jZW9mIFBsYXRmb3JtKTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQobWV0cmljIGluc3RhbmNlb2YgTWV0cmljKTsKQEAgLTI3LDEzICsy
NywxMyBAQCBjbGFzcyBDaGFydFN0eWxlcyB7CiAKICAgICAgICAgdmFyIG1lYXN1cmVtZW50U2V0
ID0gTWVhc3VyZW1lbnRTZXQuZmluZFNldChwbGF0Zm9ybS5pZCgpLCBtZXRyaWMuaWQoKSwgbGFz
dE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIFsKLSAgICAgICAgICAgIHRoaXMuYmFzZWxpbmVT
dHlsZShtZWFzdXJlbWVudFNldCwgZGlzYWJsZVNhbXBsaW5nLCBpbmNsdWRlT3V0bGllciksCi0g
ICAgICAgICAgICB0aGlzLnRhcmdldFN0eWxlKG1lYXN1cmVtZW50U2V0LCBkaXNhYmxlU2FtcGxp
bmcsIGluY2x1ZGVPdXRsaWVyKSwKLSAgICAgICAgICAgIHRoaXMuY3VycmVudFN0eWxlKG1lYXN1
cmVtZW50U2V0LCBkaXNhYmxlU2FtcGxpbmcsIGluY2x1ZGVPdXRsaWVyKSwKKyAgICAgICAgICAg
IHRoaXMuYmFzZWxpbmVTdHlsZShtZWFzdXJlbWVudFNldCwgZGlzYWJsZVNhbXBsaW5nLCBpbmNs
dWRlT3V0bGllciwgc2hvd1BvaW50KSwKKyAgICAgICAgICAgIHRoaXMudGFyZ2V0U3R5bGUobWVh
c3VyZW1lbnRTZXQsIGRpc2FibGVTYW1wbGluZywgaW5jbHVkZU91dGxpZXIsIHNob3dQb2ludCks
CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdHlsZShtZWFzdXJlbWVudFNldCwgZGlzYWJsZVNh
bXBsaW5nLCBpbmNsdWRlT3V0bGllciwgc2hvd1BvaW50KSwKICAgICAgICAgXTsKICAgICB9CiAK
LSAgICBzdGF0aWMgYmFzZWxpbmVTdHlsZShtZWFzdXJlbWVudFNldCwgZGlzYWJsZVNhbXBsaW5n
LCBpbmNsdWRlT3V0bGllcikKKyAgICBzdGF0aWMgYmFzZWxpbmVTdHlsZShtZWFzdXJlbWVudFNl
dCwgZGlzYWJsZVNhbXBsaW5nLCBpbmNsdWRlT3V0bGllciwgc2hvd1BvaW50KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIG1lYXN1cmVtZW50U2V0OiBtZWFzdXJlbWVudFNl
dCwKQEAgLTQyLDE1ICs0MiwyMCBAQCBjbGFzcyBDaGFydFN0eWxlcyB7CiAgICAgICAgICAgICBp
bmNsdWRlT3V0bGllcnM6IGluY2x1ZGVPdXRsaWVyLAogICAgICAgICAgICAgdHlwZTogJ2Jhc2Vs
aW5lJywKICAgICAgICAgICAgIHBvaW50U3R5bGU6ICcjZjMzJywKLSAgICAgICAgICAgIHBvaW50
UmFkaXVzOiAyLAotICAgICAgICAgICAgbGluZVN0eWxlOiAnI2Y5OScsCisgICAgICAgICAgICBw
b2ludFJhZGl1czogc2hvd1BvaW50ID8gMiA6IDAsCisgICAgICAgICAgICBsaW5lU3R5bGU6IHNo
b3dQb2ludCA/ICcjZjk5JyA6ICcjZjY2JywKICAgICAgICAgICAgIGxpbmVXaWR0aDogMS41LAot
ICAgICAgICAgICAgaW50ZXJ2YWxTdHlsZTogJyNmZGQnLAotICAgICAgICAgICAgaW50ZXJ2YWxX
aWR0aDogMiwKKyAgICAgICAgICAgIGludGVydmFsU3R5bGU6ICdyZ2JhKDI1NSwgMTUzLCAxNTMs
IDAuMjUpJywKKyAgICAgICAgICAgIGludGVydmFsV2lkdGg6IDMsCisgICAgICAgICAgICBmb3Jl
Z3JvdW5kTGluZVN0eWxlOiAnI2YzMycsCisgICAgICAgICAgICBmb3JlZ3JvdW5kUG9pbnRSYWRp
dXM6IDAsCisgICAgICAgICAgICBiYWNrZ3JvdW5kSW50ZXJ2YWxTdHlsZTogJ3JnYmEoMjU1LCAx
NTMsIDE1MywgMC4xKScsCisgICAgICAgICAgICBiYWNrZ3JvdW5kUG9pbnRTdHlsZTogJyNmOTkn
LAorICAgICAgICAgICAgYmFja2dyb3VuZExpbmVTdHlsZTogJyNmY2MnLAogICAgICAgICB9Owog
ICAgIH0KIAotICAgIHN0YXRpYyB0YXJnZXRTdHlsZShtZWFzdXJlbWVudFNldCwgZGlzYWJsZVNh
bXBsaW5nLCBpbmNsdWRlT3V0bGllcikKKyAgICBzdGF0aWMgdGFyZ2V0U3R5bGUobWVhc3VyZW1l
bnRTZXQsIGRpc2FibGVTYW1wbGluZywgaW5jbHVkZU91dGxpZXIsIHNob3dQb2ludCkKICAgICB7
CiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICBtZWFzdXJlbWVudFNldDogbWVhc3VyZW1l
bnRTZXQsCkBAIC01OSwxNSArNjQsMjAgQEAgY2xhc3MgQ2hhcnRTdHlsZXMgewogICAgICAgICAg
ICAgaW5jbHVkZU91dGxpZXJzOiBpbmNsdWRlT3V0bGllciwKICAgICAgICAgICAgIHR5cGU6ICd0
YXJnZXQnLAogICAgICAgICAgICAgcG9pbnRTdHlsZTogJyMzM2YnLAotICAgICAgICAgICAgcG9p
bnRSYWRpdXM6IDIsCi0gICAgICAgICAgICBsaW5lU3R5bGU6ICcjOTlmJywKKyAgICAgICAgICAg
IHBvaW50UmFkaXVzOiBzaG93UG9pbnQgPyAyIDogMCwKKyAgICAgICAgICAgIGxpbmVTdHlsZTog
c2hvd1BvaW50ID8gJyM5OWYnIDogJyM2NmYnLAogICAgICAgICAgICAgbGluZVdpZHRoOiAxLjUs
Ci0gICAgICAgICAgICBpbnRlcnZhbFN0eWxlOiAnI2RkZicsCi0gICAgICAgICAgICBpbnRlcnZh
bFdpZHRoOiAyLAorICAgICAgICAgICAgaW50ZXJ2YWxTdHlsZTogJ3JnYmEoMTUzLCAxNTMsIDI1
NSwgMC4yNSknLAorICAgICAgICAgICAgaW50ZXJ2YWxXaWR0aDogMywKKyAgICAgICAgICAgIGZv
cmVncm91bmRMaW5lU3R5bGU6ICcjMzNmJywKKyAgICAgICAgICAgIGZvcmVncm91bmRQb2ludFJh
ZGl1czogMCwKKyAgICAgICAgICAgIGJhY2tncm91bmRJbnRlcnZhbFN0eWxlOiAncmdiYSgxNTMs
IDE1MywgMjU1LCAwLjEpJywKKyAgICAgICAgICAgIGJhY2tncm91bmRQb2ludFN0eWxlOiAnIzk5
ZicsCisgICAgICAgICAgICBiYWNrZ3JvdW5kTGluZVN0eWxlOiAnI2NjZicsCiAgICAgICAgIH07
CiAgICAgfQogCi0gICAgc3RhdGljIGN1cnJlbnRTdHlsZShtZWFzdXJlbWVudFNldCwgZGlzYWJs
ZVNhbXBsaW5nLCBpbmNsdWRlT3V0bGllcikKKyAgICBzdGF0aWMgY3VycmVudFN0eWxlKG1lYXN1
cmVtZW50U2V0LCBkaXNhYmxlU2FtcGxpbmcsIGluY2x1ZGVPdXRsaWVyLCBzaG93UG9pbnQpCiAg
ICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgbWVhc3VyZW1lbnRTZXQ6IG1lYXN1
cmVtZW50U2V0LApAQCAtNzUsMTEgKzg1LDE2IEBAIGNsYXNzIENoYXJ0U3R5bGVzIHsKICAgICAg
ICAgICAgIGluY2x1ZGVPdXRsaWVyczogaW5jbHVkZU91dGxpZXIsCiAgICAgICAgICAgICB0eXBl
OiAnY3VycmVudCcsCiAgICAgICAgICAgICBwb2ludFN0eWxlOiAnIzMzMycsCi0gICAgICAgICAg
ICBwb2ludFJhZGl1czogMiwKLSAgICAgICAgICAgIGxpbmVTdHlsZTogJyM5OTknLAorICAgICAg
ICAgICAgcG9pbnRSYWRpdXM6IHNob3dQb2ludCA/IDIgOiAwLAorICAgICAgICAgICAgbGluZVN0
eWxlOiBzaG93UG9pbnQgPyAnIzk5OScgOiAnIzY2NicsCiAgICAgICAgICAgICBsaW5lV2lkdGg6
IDEuNSwKLSAgICAgICAgICAgIGludGVydmFsU3R5bGU6ICcjZGRkJywKLSAgICAgICAgICAgIGlu
dGVydmFsV2lkdGg6IDIsCisgICAgICAgICAgICBpbnRlcnZhbFN0eWxlOiAncmdiYSgxNTMsIDE1
MywgMTUzLCAwLjI1KScsCisgICAgICAgICAgICBpbnRlcnZhbFdpZHRoOiAzLAorICAgICAgICAg
ICAgZm9yZWdyb3VuZExpbmVTdHlsZTogJyMzMzMnLAorICAgICAgICAgICAgZm9yZWdyb3VuZFBv
aW50UmFkaXVzOiAwLAorICAgICAgICAgICAgYmFja2dyb3VuZEludGVydmFsU3R5bGU6ICdyZ2Jh
KDE1MywgMTUzLCAxNTMsIDAuMSknLAorICAgICAgICAgICAgYmFja2dyb3VuZFBvaW50U3R5bGU6
ICcjOTk5JywKKyAgICAgICAgICAgIGJhY2tncm91bmRMaW5lU3R5bGU6ICcjY2NjJywKICAgICAg
ICAgICAgIGludGVyYWN0aXZlOiB0cnVlLAogICAgICAgICB9OwogICAgIH0KSW5kZXg6IFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFy
dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMJKHJldmlzaW9uIDIwNDE4OSkKKysrIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFy
dC5qcwkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDExIEBAIGNsYXNzIFRpbWVTZXJpZXNDaGFy
dCBleHRlbmRzIENvbXBvbmVudEIKICAgICAgICAgdGhpcy5lbGVtZW50KCkuc3R5bGUucG9zaXRp
b24gPSAncmVsYXRpdmUnOwogICAgICAgICB0aGlzLl9jYW52YXMgPSBudWxsOwogICAgICAgICB0
aGlzLl9zb3VyY2VMaXN0ID0gc291cmNlTGlzdDsKKyAgICAgICAgdGhpcy5fdHJlbmRMaW5lcyA9
IG51bGw7CiAgICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zOwogICAgICAgICB0aGlzLl9m
ZXRjaGVkVGltZVNlcmllcyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NhbXBsZWRUaW1lU2VyaWVz
RGF0YSA9IG51bGw7CisgICAgICAgIHRoaXMuX3JlbmRlcmVkVHJlbmRMaW5lcyA9IGZhbHNlOwog
ICAgICAgICB0aGlzLl92YWx1ZVJhbmdlQ2FjaGUgPSBudWxsOwogICAgICAgICB0aGlzLl9hbm5v
dGF0aW9ucyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2Fubm90YXRpb25Sb3dzID0gbnVsbDsKQEAg
LTc2LDE0ICs3OCwzNSBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRC
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0YXJ0VGltZSA8IGVuZFRpbWUsICdzdGFydFRpbWUg
bXVzdCBiZSBiZWZvcmUgZW5kVGltZScpOwogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBzdGFy
dFRpbWU7CiAgICAgICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lOworICAgICAgICB0aGlzLl9m
ZXRjaGVkVGltZVNlcmllcyA9IG51bGw7CiAgICAgICAgIHRoaXMuZmV0Y2hNZWFzdXJlbWVudFNl
dHMoZmFsc2UpOwogICAgIH0KIAogICAgIHNldFNvdXJjZUxpc3Qoc291cmNlTGlzdCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3NvdXJjZUxpc3QgPSBzb3VyY2VMaXN0OwotICAgICAgICB0aGlzLmZl
dGNoTWVhc3VyZW1lbnRTZXRzKGZhbHNlKTsKICAgICAgICAgdGhpcy5fZmV0Y2hlZFRpbWVTZXJp
ZXMgPSBudWxsOworICAgICAgICB0aGlzLmZldGNoTWVhc3VyZW1lbnRTZXRzKGZhbHNlKTsKKyAg
ICB9CisKKyAgICBzb3VyY2VMaXN0KCkgeyByZXR1cm4gdGhpcy5fc291cmNlTGlzdDsgfQorCisg
ICAgY2xlYXJUcmVuZExpbmVzKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RyZW5kTGluZXMgPSBu
dWxsOworICAgICAgICB0aGlzLl9yZW5kZXJlZFRyZW5kTGluZXMgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICB9CisKKyAgICBzZXRUcmVuZExpbmUoc291cmNl
SW5kZXgsIHRyZW5kTGluZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90cmVuZExpbmVzKQor
ICAgICAgICAgICAgdGhpcy5fdHJlbmRMaW5lcyA9IHRoaXMuX3RyZW5kTGluZXMuc2xpY2UoMCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3RyZW5kTGluZXMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fdHJlbmRMaW5lc1tzb3VyY2VJbmRleF0gPSB0cmVuZExpbmU7CisgICAgICAgIHRo
aXMuX3JlbmRlcmVkVHJlbmRMaW5lcyA9IGZhbHNlOworICAgICAgICB0aGlzLmVucXVldWVUb1Jl
bmRlcigpOwogICAgIH0KIAogICAgIGZldGNoTWVhc3VyZW1lbnRTZXRzKG5vQ2FjaGUpCkBAIC0x
OTgsNiArMjIxLDcgQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMgQ29tcG9uZW50Qgog
ICAgICAgICB2YXIgZG9uZVdvcmsgPSB0aGlzLl91cGRhdGVDYW52YXNTaXplSWZDbGllbnRTaXpl
Q2hhbmdlZCgpOwogICAgICAgICB2YXIgbWV0cmljcyA9IHRoaXMuX2NvbXB1dGVIb3Jpem9udGFs
UmVuZGVyaW5nTWV0cmljcygpOwogICAgICAgICBkb25lV29yayB8PSB0aGlzLl9lbnN1cmVTYW1w
bGVkVGltZVNlcmllcyhtZXRyaWNzKTsKKyAgICAgICAgZG9uZVdvcmsgfD0gdGhpcy5fZW5zdXJl
VHJlbmRMaW5lcygpOwogICAgICAgICBkb25lV29yayB8PSB0aGlzLl9lbnN1cmVWYWx1ZVJhbmdl
Q2FjaGUoKTsKICAgICAgICAgdGhpcy5fY29tcHV0ZVZlcnRpY2FsUmVuZGVyaW5nTWV0cmljcyht
ZXRyaWNzKTsKICAgICAgICAgZG9uZVdvcmsgfD0gdGhpcy5fbGF5b3V0QW5ub3RhdGlvbkJhcnMo
bWV0cmljcyk7CkBAIC0zODYsNyArNDEwLDE0IEBAIGNsYXNzIFRpbWVTZXJpZXNDaGFydCBleHRl
bmRzIENvbXBvbmVudEIKICAgICAgICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLl9zb3VyY2VMaXN0
W2ldOwogICAgICAgICAgICAgdmFyIHNlcmllcyA9IHRoaXMuX3NhbXBsZWRUaW1lU2VyaWVzRGF0
YVtpXTsKICAgICAgICAgICAgIGlmIChzZXJpZXMpCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVu
ZGVyVGltZVNlcmllcyhjb250ZXh0LCBtZXRyaWNzLCBzb3VyY2UsIHNlcmllcyk7CisgICAgICAg
ICAgICAgICAgdGhpcy5fcmVuZGVyVGltZVNlcmllcyhjb250ZXh0LCBtZXRyaWNzLCBzb3VyY2Us
IHNlcmllcywgdGhpcy5fdHJlbmRMaW5lcyAmJiB0aGlzLl90cmVuZExpbmVzW2ldID8gJ2JhY2tn
cm91bmQnIDogJycpOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9zb3VyY2VMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgc291cmNlID0g
dGhpcy5fc291cmNlTGlzdFtpXTsKKyAgICAgICAgICAgIHZhciB0cmVuZExpbmUgPSB0aGlzLl90
cmVuZExpbmVzID8gdGhpcy5fdHJlbmRMaW5lc1tpXSA6IG51bGw7CisgICAgICAgICAgICBpZiAo
c2VyaWVzICYmIHRyZW5kTGluZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJUaW1lU2Vy
aWVzKGNvbnRleHQsIG1ldHJpY3MsIHNvdXJjZSwgdHJlbmRMaW5lLCAnZm9yZWdyb3VuZCcpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlzLl9hbm5vdGF0aW9uUm93cykKQEAgLTQwMiw3
ICs0MzMsNyBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBfcmVuZGVyVGltZVNlcmllcyhjb250ZXh0LCBtZXRyaWNzLCBz
b3VyY2UsIHNlcmllcykKKyAgICBfcmVuZGVyVGltZVNlcmllcyhjb250ZXh0LCBtZXRyaWNzLCBz
b3VyY2UsIHNlcmllcywgbGF5ZXJOYW1lKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgcG9pbnQg
b2Ygc2VyaWVzKSB7CiAgICAgICAgICAgICBwb2ludC54ID0gbWV0cmljcy50aW1lVG9YKHBvaW50
LnRpbWUpOwpAQCAtNDEyLDI3ICs0NDMsNDMgQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0IGV4dGVu
ZHMgQ29tcG9uZW50QgogICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc291cmNlLmludGVy
dmFsU3R5bGU7CiAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gc291cmNlLmludGVydmFsU3R5
bGU7CiAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gc291cmNlLmludGVydmFsV2lkdGg7CisK
KyAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdmFyIHdpZHRoID0gMTsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgIHZhciBwb2ludCA9IHNlcmllc1tpXTsKLSAgICAgICAgICAgIGlmICghcG9pbnQuaW50ZXJ2
YWwpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBjb250ZXh0LmJlZ2lu
UGF0aCgpOwotICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnQueCwgbWV0cmljcy52YWx1
ZVRvWShwb2ludC5pbnRlcnZhbFswXSkpCi0gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhwb2lu
dC54LCBtZXRyaWNzLnZhbHVlVG9ZKHBvaW50LmludGVydmFsWzFdKSk7Ci0gICAgICAgICAgICBj
b250ZXh0LnN0cm9rZSgpOworICAgICAgICAgICAgdmFyIGludGVydmFsID0gcG9pbnQuaW50ZXJ2
YWwoKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGludGVydmFsID8gaW50ZXJ2YWxbMF0gOiBw
b2ludC52YWx1ZTsKKyAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHBvaW50LnggLSB3aWR0aCwg
bWV0cmljcy52YWx1ZVRvWSh2YWx1ZSkpOworICAgICAgICAgICAgY29udGV4dC5saW5lVG8ocG9p
bnQueCArIHdpZHRoLCBtZXRyaWNzLnZhbHVlVG9ZKHZhbHVlKSk7CiAgICAgICAgIH0KKyAgICAg
ICAgZm9yICh2YXIgaSA9IHNlcmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAg
ICAgICAgdmFyIHBvaW50ID0gc2VyaWVzW2ldOworICAgICAgICAgICAgdmFyIGludGVydmFsID0g
cG9pbnQuaW50ZXJ2YWwoKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGludGVydmFsID8gaW50
ZXJ2YWxbMV0gOiBwb2ludC52YWx1ZTsKKyAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHBvaW50
LnggKyB3aWR0aCwgbWV0cmljcy52YWx1ZVRvWSh2YWx1ZSkpOworICAgICAgICAgICAgY29udGV4
dC5saW5lVG8ocG9pbnQueCAtIHdpZHRoLCBtZXRyaWNzLnZhbHVlVG9ZKHZhbHVlKSk7CisgICAg
ICAgIH0KKyAgICAgICAgY29udGV4dC5maWxsKCk7CiAKLSAgICAgICAgY29udGV4dC5zdHJva2VT
dHlsZSA9IHNvdXJjZS5saW5lU3R5bGU7Ci0gICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gc291
cmNlLmxpbmVXaWR0aDsKKyAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRoaXMuX3NvdXJj
ZU9wdGlvbldpdGhGYWxsYmFjayhzb3VyY2UsIGxheWVyTmFtZSArICdMaW5lU3R5bGUnLCAnbGlu
ZVN0eWxlJyk7CisgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gdGhpcy5fc291cmNlT3B0aW9u
V2l0aEZhbGxiYWNrKHNvdXJjZSwgbGF5ZXJOYW1lICsgJ0xpbmVXaWR0aCcsICdsaW5lV2lkdGgn
KTsKICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKICAgICAgICAgZm9yICh2YXIgcG9pbnQg
b2Ygc2VyaWVzKQogICAgICAgICAgICAgY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7
CiAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CiAKLSAgICAgICAgY29udGV4dC5maWxsU3R5bGUg
PSBzb3VyY2UucG9pbnRTdHlsZTsKLSAgICAgICAgdmFyIHJhZGl1cyA9IHNvdXJjZS5wb2ludFJh
ZGl1czsKLSAgICAgICAgZm9yICh2YXIgcG9pbnQgb2Ygc2VyaWVzKQotICAgICAgICAgICAgdGhp
cy5fZmlsbENpcmNsZShjb250ZXh0LCBwb2ludC54LCBwb2ludC55LCByYWRpdXMpOworICAgICAg
ICBjb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuX3NvdXJjZU9wdGlvbldpdGhGYWxsYmFjayhzb3Vy
Y2UsIGxheWVyTmFtZSArICdQb2ludFN0eWxlJywgJ3BvaW50U3R5bGUnKTsKKyAgICAgICAgdmFy
IHJhZGl1cyA9IHRoaXMuX3NvdXJjZU9wdGlvbldpdGhGYWxsYmFjayhzb3VyY2UsIGxheWVyTmFt
ZSArICdQb2ludFJhZGl1cycsICdwb2ludFJhZGl1cycpOworICAgICAgICBpZiAocmFkaXVzKSB7
CisgICAgICAgICAgICBmb3IgKHZhciBwb2ludCBvZiBzZXJpZXMpCisgICAgICAgICAgICAgICAg
dGhpcy5fZmlsbENpcmNsZShjb250ZXh0LCBwb2ludC54LCBwb2ludC55LCByYWRpdXMpOworICAg
ICAgICB9CisgICAgfQorCisgICAgX3NvdXJjZU9wdGlvbldpdGhGYWxsYmFjayhvcHRpb24sIHBy
ZWZlcnJlZCwgZmFsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gcHJlZmVycmVkIGluIG9w
dGlvbiA/IG9wdGlvbltwcmVmZXJyZWRdIDogb3B0aW9uW2ZhbGxiYWNrXTsKICAgICB9CiAKICAg
ICBfZmlsbENpcmNsZShjb250ZXh0LCBjeCwgY3ksIHJhZGl1cykKQEAgLTQ3Niw3ICs1MjMsNyBA
QCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgICAgIC8vIEEgY2hhcnQgd2l0aCBYIHB4IHdpZHRo
IHNob3VsZG4ndCBoYXZlIG1vcmUgdGhhbiAyWCAvIDxyYWRpdXMtb2YtcG9pbnRzPiBkYXRhIHBv
aW50cy4KLSAgICAgICAgICAgIHZhciBtYXhpbXVtTnVtYmVyT2ZQb2ludHMgPSAyICogbWV0cmlj
cy5jaGFydFdpZHRoIC8gc291cmNlLnBvaW50UmFkaXVzOworICAgICAgICAgICAgdmFyIG1heGlt
dW1OdW1iZXJPZlBvaW50cyA9IDIgKiBtZXRyaWNzLmNoYXJ0V2lkdGggLyAoc291cmNlLnBvaW50
UmFkaXVzIHx8IDIpOwogCiAgICAgICAgICAgICB2YXIgcG9pbnRBZnRlclN0YXJ0ID0gdGltZVNl
cmllcy5maW5kUG9pbnRBZnRlclRpbWUoc3RhcnRUaW1lKTsKICAgICAgICAgICAgIHZhciBwb2lu
dEJlZm9yZVN0YXJ0ID0gKHBvaW50QWZ0ZXJTdGFydCA/IHRpbWVTZXJpZXMucHJldmlvdXNQb2lu
dChwb2ludEFmdGVyU3RhcnQpIDogbnVsbCkgfHwgdGltZVNlcmllcy5maXJzdFBvaW50KCk7CkBA
IC01NDcsNiArNTk0LDE0IEBAIGNsYXNzIFRpbWVTZXJpZXNDaGFydCBleHRlbmRzIENvbXBvbmVu
dEIKICAgICAgICAgcmV0dXJuIHNhbXBsZWREYXRhOwogICAgIH0KIAorICAgIF9lbnN1cmVUcmVu
ZExpbmVzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZW5kZXJlZFRyZW5kTGluZXMpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRoaXMuX3JlbmRlcmVkVHJlbmRMaW5l
cyA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIF9lbnN1cmVWYWx1
ZVJhbmdlQ2FjaGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlUmFuZ2VDYWNoZSkK
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVt
ZW50LWNsdXN0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtY2x1c3Rlci5qcwkocmV2aXNpb24gMjA0MTg5KQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQt
Y2x1c3Rlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEsOSArMjEsOSBAQCBjbGFzcyBNZWFzdXJl
bWVudENsdXN0ZXIgewogICAgICAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5fYWRhcHRvci5hcHBs
eVRvKHJvdyk7CiAgICAgICAgICAgICBpZiAocG9pbnQuaWQgaW4gaWRNYXAgfHwgKCFpbmNsdWRl
T3V0bGllcnMgJiYgcG9pbnQuaXNPdXRsaWVyKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIGlkTWFwW3BvaW50LmlkXSA9IHRydWU7Ci0gICAgICAgICAgICBwb2ludC5j
bHVzdGVyID0gdGhpczsKICAgICAgICAgICAgIHNlcmllcy5hcHBlbmQocG9pbnQpOworICAgICAg
ICAgICAgaWRNYXBbcG9pbnQuaWRdID0gcG9pbnQuc2VyaWVzSW5kZXg7CisgICAgICAgICAgICBw
b2ludC5jbHVzdGVyID0gdGhpczsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFz
dXJlbWVudC1zZXQuanMJKHJldmlzaW9uIDIwNDE4OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTgsNiArMTgsNyBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgICAgIHRoaXMuX2Fs
bEZldGNoZXMgPSB7fTsKICAgICAgICAgdGhpcy5fY2FsbGJhY2tNYXAgPSBuZXcgTWFwOwogICAg
ICAgICB0aGlzLl9wcmltYXJ5Q2x1c3RlclByb21pc2UgPSBudWxsOworICAgICAgICB0aGlzLl9z
ZWdtZW50YXRpb25DYWNoZSA9IG5ldyBNYXA7CiAgICAgfQogCiAgICAgcGxhdGZvcm1JZCgpIHsg
cmV0dXJuIHRoaXMuX3BsYXRmb3JtSWQ7IH0KQEAgLTE5Niw2ICsxOTcsMTEzIEBAIGNsYXNzIE1l
YXN1cmVtZW50U2V0IHsKIAogICAgICAgICByZXR1cm4gc2VyaWVzOwogICAgIH0KKworICAgIGZl
dGNoU2VnbWVudGF0aW9uKHNlZ21lbnRhdGlvbk5hbWUsIHBhcmFtZXRlcnMsIGNvbmZpZ1R5cGUs
IGluY2x1ZGVPdXRsaWVycywgZXh0ZW5kVG9GdXR1cmUpCisgICAgeworICAgICAgICB2YXIgY2Fj
aGVNYXAgPSB0aGlzLl9zZWdtZW50YXRpb25DYWNoZS5nZXQoY29uZmlnVHlwZSk7CisgICAgICAg
IGlmICghY2FjaGVNYXApIHsKKyAgICAgICAgICAgIGNhY2hlTWFwID0gbmV3IFdlYWtNYXA7Cisg
ICAgICAgICAgICB0aGlzLl9zZWdtZW50YXRpb25DYWNoZS5zZXQoY29uZmlnVHlwZSwgY2FjaGVN
YXApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRpbWVTZXJpZXMgPSBuZXcgVGltZVNlcmll
czsKKyAgICAgICAgdmFyIGlkTWFwID0ge307CisgICAgICAgIHZhciBwcm9taXNlcyA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBjbHVzdGVyIG9mIHRoaXMuX3NvcnRlZENsdXN0ZXJzKSB7CisgICAg
ICAgICAgICB2YXIgY2x1c3RlclN0YXJ0ID0gdGltZVNlcmllcy5sZW5ndGgoKTsKKyAgICAgICAg
ICAgIGNsdXN0ZXIuYWRkVG9TZXJpZXModGltZVNlcmllcywgY29uZmlnVHlwZSwgaW5jbHVkZU91
dGxpZXJzLCBpZE1hcCk7CisgICAgICAgICAgICB2YXIgY2x1c3RlckVuZCA9IHRpbWVTZXJpZXMu
bGVuZ3RoKCk7CisgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMuX2NhY2hlZENsdXN0ZXJT
ZWdtZW50YXRpb24oc2VnbWVudGF0aW9uTmFtZSwgcGFyYW1ldGVycywgY2FjaGVNYXAsCisgICAg
ICAgICAgICAgICAgY2x1c3RlciwgdGltZVNlcmllcywgY2x1c3RlclN0YXJ0LCBjbHVzdGVyRW5k
LCBpZE1hcCkpOworICAgICAgICB9CisgICAgICAgIGlmICghdGltZVNlcmllcy5sZW5ndGgoKSkK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7CisKKyAgICAgICAgdmFy
IHNlbGYgPSB0aGlzOworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4o
ZnVuY3Rpb24gKGNsdXN0ZXJTZWdtZW50YXRpb25zKSB7CisgICAgICAgICAgICB2YXIgc2VnbWVu
dGF0aW9uU2VyaWVzID0gW107CisgICAgICAgICAgICB2YXIgYWRkU2VnbWVudCA9IGZ1bmN0aW9u
IChzdGFydGluZ1BvaW50LCBlbmRpbmdQb2ludCkgeworICAgICAgICAgICAgICAgIHZhciB2YWx1
ZSA9IFN0YXRpc3RpY3MubWVhbih0aW1lU2VyaWVzLnZhbHVlc0JldHdlZW5SYW5nZShzdGFydGlu
Z1BvaW50LnNlcmllc0luZGV4LCBlbmRpbmdQb2ludC5zZXJpZXNJbmRleCkpOworICAgICAgICAg
ICAgICAgIHNlZ21lbnRhdGlvblNlcmllcy5wdXNoKHt2YWx1ZTogdmFsdWUsIHRpbWU6IHN0YXJ0
aW5nUG9pbnQudGltZSwgaW50ZXJ2YWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH19KTsK
KyAgICAgICAgICAgICAgICBzZWdtZW50YXRpb25TZXJpZXMucHVzaCh7dmFsdWU6IHZhbHVlLCB0
aW1lOiBlbmRpbmdQb2ludC50aW1lLCBpbnRlcnZhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVs
bDsgfX0pOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0aW5nSW5kZXgg
PSAwOworICAgICAgICAgICAgZm9yICh2YXIgc2VnbWVudGF0aW9uIG9mIGNsdXN0ZXJTZWdtZW50
YXRpb25zKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgZW5kaW5nSW5kZXggb2Ygc2VnbWVu
dGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZFNlZ21lbnQodGltZVNlcmllcy5maW5k
UG9pbnRCeUluZGV4KHN0YXJ0aW5nSW5kZXgpLCB0aW1lU2VyaWVzLmZpbmRQb2ludEJ5SW5kZXgo
ZW5kaW5nSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdJbmRleCA9IGVuZGlu
Z0luZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChleHRlbmRUb0Z1dHVyZSkKKyAgICAgICAgICAgICAgICB0aW1lU2VyaWVzLmV4dGVuZFRvRnV0
dXJlKCk7CisgICAgICAgICAgICBhZGRTZWdtZW50KHRpbWVTZXJpZXMuZmluZFBvaW50QnlJbmRl
eChzdGFydGluZ0luZGV4KSwgdGltZVNlcmllcy5sYXN0UG9pbnQoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gc2VnbWVudGF0aW9uU2VyaWVzOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBfY2Fj
aGVkQ2x1c3RlclNlZ21lbnRhdGlvbihzZWdtZW50YXRpb25OYW1lLCBwYXJhbWV0ZXJzLCBjYWNo
ZU1hcCwgY2x1c3RlciwgdGltZVNlcmllcywgY2x1c3RlclN0YXJ0LCBjbHVzdGVyRW5kLCBpZE1h
cCkKKyAgICB7CisgICAgICAgIHZhciBjYWNoZSA9IGNhY2hlTWFwLmdldChjbHVzdGVyKTsKKyAg
ICAgICAgaWYgKGNhY2hlICYmIHRoaXMuX3ZhbGlkYXRlU2VnbWVudGF0aW9uQ2FjaGUoY2FjaGUs
IHNlZ21lbnRhdGlvbk5hbWUsIHBhcmFtZXRlcnMpKSB7CisgICAgICAgICAgICB2YXIgc2VnbWVu
dGF0aW9uQnlJbmRleCA9IG5ldyBBcnJheShjYWNoZS5zZWdtZW50YXRpb24ubGVuZ3RoKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FjaGUuc2VnbWVudGF0aW9uLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGlkID0gY2FjaGUuc2VnbWVudGF0aW9uW2ldOwor
ICAgICAgICAgICAgICAgIGlmICghKGlkIGluIGlkTWFwKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgc2VnbWVudGF0aW9uQnlJbmRleFtpXSA9IGlk
TWFwW2lkXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoc2VnbWVudGF0aW9uQnlJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY2x1c3Rl
clZhbHVlcyA9IHRpbWVTZXJpZXMudmFsdWVzQmV0d2VlblJhbmdlKGNsdXN0ZXJTdGFydCwgY2x1
c3RlckVuZCk7CisgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VTZWdtZW50YXRpb25BbGdvcml0
aG0oc2VnbWVudGF0aW9uTmFtZSwgcGFyYW1ldGVycywgY2x1c3RlclZhbHVlcykudGhlbihmdW5j
dGlvbiAoc2VnbWVudGF0aW9uSW5DbHVzdGVySW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFJlbW92
ZSBjbHVzdGVyIHN0YXJ0L2VuZCBhcyBzZWdtZW50YXRpb24gcG9pbnRzLiBPdGhlcndpc2UgZWFj
aCBjbHVzdGVyIHdpbGwgYmUgcGxhY2VkIGludG8gaXRzIG93biBzZWdtZW50LiAKKyAgICAgICAg
ICAgIHZhciBzZWdtZW50YXRpb24gPSBzZWdtZW50YXRpb25JbkNsdXN0ZXJJbmRleC5zbGljZSgx
LCAtMSkubWFwKGZ1bmN0aW9uIChpbmRleCkgeyByZXR1cm4gY2x1c3RlclN0YXJ0ICsgaW5kZXg7
IH0pOworICAgICAgICAgICAgdmFyIGNhY2hlID0gc2VnbWVudGF0aW9uLm1hcChmdW5jdGlvbiAo
aW5kZXgpIHsgcmV0dXJuIHRpbWVTZXJpZXMuZmluZFBvaW50QnlJbmRleChpbmRleCkuaWQ7IH0p
OworICAgICAgICAgICAgY2FjaGVNYXAuc2V0KGNsdXN0ZXIsIHtzZWdtZW50YXRpb25OYW1lOiBz
ZWdtZW50YXRpb25OYW1lLCBzZWdtZW50YXRpb25QYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLnNsaWNl
KCksIHNlZ21lbnRhdGlvbjogY2FjaGV9KTsKKyAgICAgICAgICAgIHJldHVybiBzZWdtZW50YXRp
b247CisgICAgICAgIH0pOworICAgIH0KKworICAgIF92YWxpZGF0ZVNlZ21lbnRhdGlvbkNhY2hl
KGNhY2hlLCBzZWdtZW50YXRpb25OYW1lLCBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgaWYg
KGNhY2hlLnNlZ21lbnRhdGlvbk5hbWUgIT0gc2VnbWVudGF0aW9uTmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCEhY2FjaGUuc2VnbWVudGF0aW9uUGFyYW1ldGVy
cyAhPSAhIXBhcmFtZXRlcnMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
IChwYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICBpZiAocGFyYW1ldGVycy5sZW5ndGggIT0gY2Fj
aGUuc2VnbWVudGF0aW9uUGFyYW1ldGVycy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0
aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnNbaV0gIT0gY2FjaGUuc2Vn
bWVudGF0aW9uUGFyYW1ldGVyc1tpXSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIF9pbnZva2VTZWdtZW50YXRpb25BbGdvcml0aG0oc2VnbWVudGF0aW9uTmFtZSwgcGFy
YW1ldGVycywgdGltZVNlcmllc1ZhbHVlcykKKyAgICB7CisgICAgICAgIHZhciBhcmdzID0gW3Rp
bWVTZXJpZXNWYWx1ZXNdLmNvbmNhdChwYXJhbWV0ZXJzIHx8IFtdKTsKKworICAgICAgICB2YXIg
dGltZVNlcmllc0lzU2hvcnRFbm91Z2hGb3JTeW5jQ29tcHV0YXRpb24gPSB0aW1lU2VyaWVzVmFs
dWVzLmxlbmd0aCA8IDEwMDsKKyAgICAgICAgaWYgKHRpbWVTZXJpZXNJc1Nob3J0RW5vdWdoRm9y
U3luY0NvbXB1dGF0aW9uKSB7CisgICAgICAgICAgICBJbnN0cnVtZW50YXRpb24uc3RhcnRNZWFz
dXJpbmdUaW1lKCdfaW52b2tlU2VnbWVudGF0aW9uQWxnb3JpdGhtJywgJ3N5bmNTZWdtZW50YXRp
b24nKTsKKyAgICAgICAgICAgIHZhciBzZWdtZW50YXRpb24gPSBTdGF0aXN0aWNzW3NlZ21lbnRh
dGlvbk5hbWVdLmFwcGx5KHRpbWVTZXJpZXNWYWx1ZXMsIGFyZ3MpOworICAgICAgICAgICAgSW5z
dHJ1bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUoJ19pbnZva2VTZWdtZW50YXRpb25BbGdvcml0
aG0nLCAnc3luY1NlZ21lbnRhdGlvbicpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZShzZWdtZW50YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRhc2sgPSBuZXcg
QXN5bmNUYXNrKHNlZ21lbnRhdGlvbk5hbWUsIGFyZ3MpOworICAgICAgICByZXR1cm4gdGFzay5l
eGVjdXRlKCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIEluc3RydW1l
bnRhdGlvbi5yZXBvcnRNZWFzdXJlbWVudCgnX2ludm9rZVNlZ21lbnRhdGlvbkFsZ29yaXRobScs
ICd3b3JrZXJTdGFydExhdGVuY3knLCAnbXMnLCByZXNwb25zZS5zdGFydExhdGVuY3kpOworICAg
ICAgICAgICAgSW5zdHJ1bWVudGF0aW9uLnJlcG9ydE1lYXN1cmVtZW50KCdfaW52b2tlU2VnbWVu
dGF0aW9uQWxnb3JpdGhtJywgJ3dvcmtlclRpbWUnLCAnbXMnLCByZXNwb25zZS53b3JrZXJUaW1l
KTsKKyAgICAgICAgICAgIEluc3RydW1lbnRhdGlvbi5yZXBvcnRNZWFzdXJlbWVudCgnX2ludm9r
ZVNlZ21lbnRhdGlvbkFsZ29yaXRobScsICd0b3RhbFRpbWUnLCAnbXMnLCByZXNwb25zZS50b3Rh
bFRpbWUpOworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdDsKKyAgICAgICAgfSk7
CisgICAgfQorCiB9CiAKIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQpJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGltZS1zZXJpZXMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
dGltZS1zZXJpZXMuanMJKHJldmlzaW9uIDIwNDE4OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3RpbWUtc2VyaWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyICsxLDE1IEBACisndXNlIHN0cmljdCc7CiAKIC8vIHYzIFVJIHN0aWxsIHJlbGllcyBvbiBS
dW5zRGF0YSBmb3IgYXNzb2NpYXRpbmcgbWV0cmljcyB3aXRoIHVuaXRzLgogLy8gVXNlIGRlY2xh
cnRpdmUgc3ludGF4IG9uY2UgdGhhdCBkZXBlbmRlbmN5IGhhcyBiZWVuIHJlbW92ZWQuCi1UaW1l
U2VyaWVzID0gY2xhc3MgewordmFyIFRpbWVTZXJpZXMgPSBjbGFzcyB7CiAgICAgY29uc3RydWN0
b3IoKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YSA9IFtdOwogICAgIH0KIAorICAgIGxlbmd0
aCgpIHsgcmV0dXJuIHRoaXMuX2RhdGEubGVuZ3RoOyB9CisKICAgICBhcHBlbmQoaXRlbSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZW0uc2VyaWVzID09PSB1bmRlZmluZWQpOwpA
QCAtMjksNiArMzIsMTcgQEAgVGltZVNlcmllcyA9IGNsYXNzIHsKICAgICAgICAgfSk7CiAgICAg
fQogCisgICAgdmFsdWVzQmV0d2VlblJhbmdlKHN0YXJ0aW5nSW5kZXgsIGVuZGluZ0luZGV4KQor
ICAgIHsKKyAgICAgICAgc3RhcnRpbmdJbmRleCA9IE1hdGgubWF4KHN0YXJ0aW5nSW5kZXgsIDAp
OworICAgICAgICBlbmRpbmdJbmRleCA9IE1hdGgubWluKGVuZGluZ0luZGV4LCB0aGlzLl9kYXRh
Lmxlbmd0aCk7CisgICAgICAgIHZhciBsZW5ndGggPSBlbmRpbmdJbmRleCAtIHN0YXJ0aW5nSW5k
ZXg7CisgICAgICAgIHZhciB2YWx1ZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHZhbHVlc1tpXSA9IHRo
aXMuX2RhdGFbc3RhcnRpbmdJbmRleCArIGldLnZhbHVlOworICAgICAgICByZXR1cm4gdmFsdWVz
OworICAgIH0KKwogICAgIGZpcnN0UG9pbnQoKSB7IHJldHVybiB0aGlzLl9kYXRhLmxlbmd0aCA/
IHRoaXMuX2RhdGFbMF0gOiBudWxsOyB9CiAgICAgbGFzdFBvaW50KCkgeyByZXR1cm4gdGhpcy5f
ZGF0YS5sZW5ndGggPyB0aGlzLl9kYXRhW3RoaXMuX2RhdGEubGVuZ3RoIC0gMV0gOiBudWxsOyB9
CiAKQEAgLTY3LDMgKzgxLDYgQEAgVGltZVNlcmllcyA9IGNsYXNzIHsKICAgICB9CiAKIH07CisK
K2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRzLlRp
bWVTZXJpZXMgPSBUaW1lU2VyaWVzOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcwkocmV2aXNpb24gMjA0MTg5
KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5l
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNjkgQEAKIAorZnVuY3Rpb24gY3JlYXRlVHJl
bmRMaW5lRXhlY3V0YWJsZUZyb21BdmVyYWdpbmdGdW5jdGlvbihjYWxsYmFjaykgeworICAgIHJl
dHVybiBmdW5jdGlvbiAoc291cmNlLCBwYXJhbWV0ZXJzKSB7CisgICAgICAgIHZhciB0aW1lU2Vy
aWVzID0gc291cmNlLm1lYXN1cmVtZW50U2V0LmZldGNoZWRUaW1lU2VyaWVzKHNvdXJjZS50eXBl
LCBzb3VyY2UuaW5jbHVkZU91dGxpZXJzLCBzb3VyY2UuZXh0ZW5kVG9GdXR1cmUpOworICAgICAg
ICB2YXIgdmFsdWVzID0gdGltZVNlcmllcy52YWx1ZXMoKTsKKyAgICAgICAgaWYgKCF2YWx1ZXMu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTsKKworICAg
ICAgICB2YXIgYXZlcmFnZVZhbHVlcyA9IGNhbGxiYWNrLmNhbGwobnVsbCwgdmFsdWVzLCBwYXJh
bWV0ZXJzWzBdLCBwYXJhbWV0ZXJzWzFdKTsKKyAgICAgICAgaWYgKCFhdmVyYWdlVmFsdWVzKQor
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTsKKworICAgICAgICB2YXIg
aW50ZXJ2YWwgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9CisgICAgICAgIHZhciByZXN1
bHQgPSBuZXcgQXJyYXkoYXZlcmFnZVZhbHVlcy5sZW5ndGgpOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGF2ZXJhZ2VWYWx1ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICByZXN1bHRb
aV0gPSB7dGltZTogdGltZVNlcmllcy5maW5kUG9pbnRCeUluZGV4KGkpLnRpbWUsIHZhbHVlOiBh
dmVyYWdlVmFsdWVzW2ldLCBpbnRlcnZhbDogaW50ZXJ2YWx9OworCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9Cit9CisKK3ZhciBDaGFydFRyZW5kTGluZVR5
cGVzID0gWworICAgIHsKKyAgICAgICAgaWQ6IDAsCisgICAgICAgIGxhYmVsOiAnTm9uZScsCisg
ICAgfSwKKyAgICB7CisgICAgICAgIGlkOiA1LAorICAgICAgICBsYWJlbDogJ1NlZ21lbnRhdGlv
bicsCisgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChzb3VyY2UsIHBhcmFtZXRlcnMpIHsKKyAg
ICAgICAgICAgIHJldHVybiBzb3VyY2UubWVhc3VyZW1lbnRTZXQuZmV0Y2hTZWdtZW50YXRpb24o
J3NlZ21lbnRUaW1lU2VyaWVzQnlNYXhpbWl6aW5nU2Nod2FyekNyaXRlcmlvbicsIHBhcmFtZXRl
cnMsCisgICAgICAgICAgICAgICAgc291cmNlLnR5cGUsIHNvdXJjZS5pbmNsdWRlT3V0bGllcnMs
IHNvdXJjZS5leHRlbmRUb0Z1dHVyZSkudGhlbihmdW5jdGlvbiAoc2VnbWVudGF0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnRhdGlvbjsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9LAorICAgICAgICBwYXJhbWV0ZXJMaXN0OiBbCisgICAgICAgICAgICB7bGFiZWw6ICJT
ZWdtZW50IGNvdW50IHdlaWdodCIsIHZhbHVlOiAyLjUsIG1pbjogMC4wMSwgbWF4OiAxMCwgc3Rl
cDogMC4wMX0sCisgICAgICAgICAgICB7bGFiZWw6ICJHcmlkIHNpemUiLCB2YWx1ZTogNTAwLCBt
aW46IDEwMCwgbWF4OiAxMDAwMCwgc3RlcDogMTB9CisgICAgICAgIF0KKyAgICB9LAorICAgIHsK
KyAgICAgICAgaWQ6IDEsCisgICAgICAgIGxhYmVsOiAnU2ltcGxlIE1vdmluZyBBdmVyYWdlJywK
KyAgICAgICAgcGFyYW1ldGVyTGlzdDogWworICAgICAgICAgICAge2xhYmVsOiAiQmFja3dhcmQg
d2luZG93IHNpemUiLCB2YWx1ZTogOCwgbWluOiAyLCBzdGVwOiAxfSwKKyAgICAgICAgICAgIHts
YWJlbDogIkZvcndhcmQgd2luZG93IHNpemUiLCB2YWx1ZTogNCwgbWluOiAwLCBzdGVwOiAxfQor
ICAgICAgICBdLAorICAgICAgICBleGVjdXRlOiBjcmVhdGVUcmVuZExpbmVFeGVjdXRhYmxlRnJv
bUF2ZXJhZ2luZ0Z1bmN0aW9uKFN0YXRpc3RpY3MubW92aW5nQXZlcmFnZS5iaW5kKFN0YXRpc3Rp
Y3MpKQorICAgIH0sCisgICAgeworICAgICAgICBpZDogMiwKKyAgICAgICAgbGFiZWw6ICdDdW11
bGF0aXZlIE1vdmluZyBBdmVyYWdlJywKKyAgICAgICAgZXhlY3V0ZTogY3JlYXRlVHJlbmRMaW5l
RXhlY3V0YWJsZUZyb21BdmVyYWdpbmdGdW5jdGlvbihTdGF0aXN0aWNzLmN1bXVsYXRpdmVNb3Zp
bmdBdmVyYWdlLmJpbmQoU3RhdGlzdGljcykpCisgICAgfSwKKyAgICB7CisgICAgICAgIGlkOiAz
LAorICAgICAgICBsYWJlbDogJ0V4cG9uZW50aWFsIE1vdmluZyBBdmVyYWdlJywKKyAgICAgICAg
cGFyYW1ldGVyTGlzdDogWworICAgICAgICAgICAge2xhYmVsOiAiU21vb3RoaW5nIGZhY3RvciIs
IHZhbHVlOiAwLjAxLCBtaW46IDAuMDAxLCBtYXg6IDAuOSwgc3RlcDogMC4wMDF9LAorICAgICAg
ICBdLAorICAgICAgICBleGVjdXRlOiBjcmVhdGVUcmVuZExpbmVFeGVjdXRhYmxlRnJvbUF2ZXJh
Z2luZ0Z1bmN0aW9uKFN0YXRpc3RpY3MuZXhwb25lbnRpYWxNb3ZpbmdBdmVyYWdlLmJpbmQoU3Rh
dGlzdGljcykpCisgICAgfSwKK107CitDaGFydFRyZW5kTGluZVR5cGVzLkRlZmF1bHRUeXBlID0g
Q2hhcnRUcmVuZExpbmVUeXBlc1sxXTsKKworCiBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFy
dFBhbmVCYXNlIHsKICAgICBjb25zdHJ1Y3RvcihjaGFydHNQYWdlLCBwbGF0Zm9ybUlkLCBtZXRy
aWNJZCkKICAgICB7CkBAIC03LDYgKzcyLDEwIEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENo
YXJ0UGFuZUJhc2UgewogICAgICAgICB0aGlzLl9tYWluQ2hhcnRJbmRpY2F0b3JXYXNMb2NrZWQg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fY2hhcnRzUGFnZSA9IGNoYXJ0c1BhZ2U7CiAgICAgICAg
IHRoaXMuX2xvY2tlZFBvcG92ZXIgPSBudWxsOworICAgICAgICB0aGlzLl90cmVuZExpbmVUeXBl
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdHJlbmRMaW5lUGFyYW1ldGVycyA9IFtdOworICAgICAg
ICB0aGlzLl90cmVuZExpbmVWZXJzaW9uID0gMDsKKyAgICAgICAgdGhpcy5fcmVuZGVyZWRUcmFu
ZExpbmVPcHRpb25zID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxl
Y3RvcignY2xvc2UtYnV0dG9uJykuY29tcG9uZW50KCkuc2V0Q2FsbGJhY2soY2hhcnRzUGFnZS5j
bG9zZVBhbmUuYmluZChjaGFydHNQYWdlLCB0aGlzKSk7CiAKQEAgLTM0LDYgKzEwMyw5IEBAIGNs
YXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICBpZiAoZ3JhcGhP
cHRpb25zLnNpemUpCiAgICAgICAgICAgICBzdGF0ZVszXSA9IGdyYXBoT3B0aW9uczsKIAorICAg
ICAgICBpZiAodGhpcy5fdHJlbmRMaW5lVHlwZSkKKyAgICAgICAgICAgIHN0YXRlWzRdID0gW3Ro
aXMuX3RyZW5kTGluZVR5cGUuaWRdLmNvbmNhdCh0aGlzLl90cmVuZExpbmVQYXJhbWV0ZXJzKTsK
KwogICAgICAgICByZXR1cm4gc3RhdGU7CiAgICAgfQogCkBAIC01MiwxNCArMTI0LDI4IEBAIGNs
YXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICAgICAgdGhpcy5f
bWFpbkNoYXJ0LnNldEluZGljYXRvcihudWxsLCBmYWxzZSk7CiAKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZm9yY2VzIHNvdXJjZUxpc3QgdG8gYmUgc2V0IHR3aWNlLiBGaXJzdCBpbiBjb25maWd1
cmUgaW5zaWRlIHRoZSBjb25zdHJ1Y3RvciB0aGVuIGhlcmUuCisgICAgICAgIC8vIEZJWE1FOiBT
aG93IGZ1bGwgeS1heGlzIHdoZW4gZ3JhcGhPcHRpb25zIGlzIHRydWUgdG8gYmUgY29tcGF0aWJs
ZSB3aXRoIHYyIFVJLgogICAgICAgICB2YXIgZ3JhcGhPcHRpb25zID0gc3RhdGVbM107CiAgICAg
ICAgIGlmIChncmFwaE9wdGlvbnMgaW5zdGFuY2VvZiBTZXQpIHsKICAgICAgICAgICAgIHRoaXMu
c2V0U2FtcGxpbmdFbmFibGVkKCFncmFwaE9wdGlvbnMuaGFzKCdub3NhbXBsaW5nJykpOwogICAg
ICAgICAgICAgdGhpcy5zZXRTaG93T3V0bGllcnMoZ3JhcGhPcHRpb25zLmhhcygnc2hvd291dGxp
ZXJzJykpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IFNob3cgZnVsbCB5LWF4aXMg
d2hlbiBncmFwaE9wdGlvbnMgaXMgdHJ1ZSB0byBiZSBjb21wYXRpYmxlIHdpdGggdjIgVUkuCi0g
ICAgICAgIC8vIEZJWE1FOiBzdGF0ZVs0XSBzcGVjaWZpZXMgbW92aW5nIGF2ZXJhZ2UgaW4gdjIg
VUkKKyAgICAgICAgdmFyIHRyZW5kTGluZU9wdGlvbnMgPSBzdGF0ZVs0XTsKKyAgICAgICAgaWYg
KCEodHJlbmRMaW5lT3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRyZW5k
TGluZU9wdGlvbnMgPSBbXTsKKworICAgICAgICB2YXIgdHJlbmRMaW5lSWQgPSB0cmVuZExpbmVP
cHRpb25zWzBdOworICAgICAgICB2YXIgdHJlbmRMaW5lVHlwZSA9IENoYXJ0VHJlbmRMaW5lVHlw
ZXMuZmluZChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdHlwZS5pZCA9PSB0cmVuZExpbmVJZDsg
fSkgfHwgQ2hhcnRUcmVuZExpbmVUeXBlcy5EZWZhdWx0VHlwZTsKKworICAgICAgICB0aGlzLl90
cmVuZExpbmVUeXBlID0gdHJlbmRMaW5lVHlwZTsKKyAgICAgICAgdGhpcy5fdHJlbmRMaW5lUGFy
YW1ldGVycyA9ICh0cmVuZExpbmVUeXBlLnBhcmFtZXRlckxpc3QgfHwgW10pLm1hcChmdW5jdGlv
biAocGFyYW1ldGVyLCBpbmRleCkgeworICAgICAgICAgICAgdmFyIHNwZWNpZmllZFZhbHVlID0g
cGFyc2VGbG9hdCh0cmVuZExpbmVPcHRpb25zW2luZGV4ICsgMV0pOworICAgICAgICAgICAgcmV0
dXJuICFpc05hTihzcGVjaWZpZWRWYWx1ZSkgPyBzcGVjaWZpZWRWYWx1ZSA6IHBhcmFtZXRlci52
YWx1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVRyZW5kTGluZSgpOworICAg
ICAgICB0aGlzLl9yZW5kZXJlZFRyYW5kTGluZU9wdGlvbnMgPSBmYWxzZTsKKwogICAgICAgICAv
LyBGSVhNRTogc3RhdGVbNV0gc3BlY2lmaWVzIGVudmVsb3BlIGluIHYyIFVJCiAgICAgICAgIC8v
IEZJWE1FOiBzdGF0ZVs2XSBzcGVjaWZpZXMgY2hhbmdlIGRldGVjdGlvbiBhbGdvcml0aG0gaW4g
djIgVUkKICAgICB9CkBAIC0yMDIsNyArMjg4LDExIEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRz
IENoYXJ0UGFuZUJhc2UgewogICAgICAgICB2YXIgZmlsdGVyaW5nT3B0aW9ucyA9IHRoaXMuY29u
dGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jaGFydC1wYW5lLWZpbHRlcmluZy1vcHRpb25zJyk7CiAg
ICAgICAgIGFjdGlvbnMucHVzaCh0aGlzLl9tYWtlUG9wb3ZlckFjdGlvbkl0ZW0oZmlsdGVyaW5n
T3B0aW9ucywgJ0ZpbHRlcmluZycsIHRydWUpKTsKIAorICAgICAgICB2YXIgdHJlbmRMaW5lT3B0
aW9ucyA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jaGFydC1wYW5lLXRyZW5kLWxp
bmUtb3B0aW9ucycpOworICAgICAgICBhY3Rpb25zLnB1c2godGhpcy5fbWFrZVBvcG92ZXJBY3Rp
b25JdGVtKHRyZW5kTGluZU9wdGlvbnMsICdUcmVuZCBsaW5lcycsIHRydWUpKTsKKwogICAgICAg
ICB0aGlzLl9yZW5kZXJGaWx0ZXJpbmdQb3BvdmVyKCk7CisgICAgICAgIHRoaXMuX3JlbmRlclRy
ZW5kTGluZVBvcG92ZXIoKTsKIAogICAgICAgICB0aGlzLl9sb2NrZWRQb3BvdmVyID0gbnVsbDsK
ICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3Io
Jy5jaGFydC1wYW5lLWFjdGlvbi1idXR0b25zJyksIGFjdGlvbnMpOwpAQCAtMzA3LDYgKzM5Nywx
MTcgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIG1h
cmtBc091dGxpZXJCdXR0b24uZGlzYWJsZWQgPSAhZmlyc3RTZWxlY3RlZFBvaW50OwogICAgIH0K
IAorICAgIF9yZW5kZXJUcmVuZExpbmVQb3BvdmVyKCkKKyAgICB7CisgICAgICAgIHZhciBlbGVt
ZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICB2YXIgbGluayA9IENv
bXBvbmVudEJhc2UuY3JlYXRlTGluazsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAg
ICAgIGlmICh0aGlzLl90cmVuZExpbmVUeXBlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMu
cmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcudHJlbmQtbGluZS10
eXBlcycpLCBbCisgICAgICAgICAgICAgICAgZWxlbWVudCgnc2VsZWN0Jywge29uY2hhbmdlOiB0
aGlzLl90cmVuZExpbmVUeXBlRGlkQ2hhbmdlLmJpbmQodGhpcyl9LAorICAgICAgICAgICAgICAg
ICAgICBDaGFydFRyZW5kTGluZVR5cGVzLm1hcChmdW5jdGlvbiAodHlwZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ29wdGlvbicsIHR5cGUgPT0gc2VsZi5fdHJl
bmRMaW5lVHlwZSA/IHt2YWx1ZTogdHlwZS5pZCwgc2VsZWN0ZWQ6IHRydWV9IDoge3ZhbHVlOiB0
eXBlLmlkfSwgdHlwZS5sYWJlbCk7CisgICAgICAgICAgICAgICAgICAgIH0pKQorICAgICAgICAg
ICAgXSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlT
ZWxlY3RvcignLnRyZW5kLWxpbmUtdHlwZXMgc2VsZWN0JykudmFsdWUgPSB0aGlzLl90cmVuZExp
bmVUeXBlLmlkOworCisgICAgICAgIGlmICh0aGlzLl9yZW5kZXJlZFRyYW5kTGluZU9wdGlvbnMp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3JlbmRlcmVkVHJhbmRMaW5lT3B0
aW9ucyA9IHRydWU7CisKKyAgICAgICAgaWYgKHRoaXMuX3RyZW5kTGluZVBhcmFtZXRlcnMubGVu
Z3RoKSB7CisgICAgICAgICAgICB2YXIgY29uZmlndXJlZFBhcmFtZXRlcnMgPSB0aGlzLl90cmVu
ZExpbmVQYXJhbWV0ZXJzOworICAgICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29u
dGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy50cmVuZC1saW5lLXBhcmFtZXRlci1saXN0JyksIFsKKyAg
ICAgICAgICAgICAgICBlbGVtZW50KCdoMycsICdQYXJhbWV0ZXJzJyksCisgICAgICAgICAgICAg
ICAgZWxlbWVudCgndWwnLCB0aGlzLl90cmVuZExpbmVUeXBlLnBhcmFtZXRlckxpc3QubWFwKGZ1
bmN0aW9uIChwYXJhbWV0ZXIsIGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBhdHRy
aWJ1dGVzID0ge3R5cGU6ICdudW1iZXInfTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
bmFtZSBpbiBwYXJhbWV0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25h
bWVdID0gcGFyYW1ldGVyW25hbWVdOworICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnZh
bHVlID0gY29uZmlndXJlZFBhcmFtZXRlcnNbaW5kZXhdOworICAgICAgICAgICAgICAgICAgICB2
YXIgaW5wdXQgPSBlbGVtZW50KCdpbnB1dCcsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgICAg
ICAgICBpbnB1dC5wYXJhbWV0ZXJJbmRleCA9IGluZGV4OworICAgICAgICAgICAgICAgICAgICBp
bnB1dC5vbmlucHV0ID0gc2VsZi5fdHJlbmRMaW5lUGFyYW1ldGVyRGlkQ2hhbmdlLmJpbmQoc2Vs
Zik7CisgICAgICAgICAgICAgICAgICAgIGlucHV0Lm9uY2hhbmdlID0gc2VsZi5fdHJlbmRMaW5l
UGFyYW1ldGVyRGlkQ2hhbmdlLmJpbmQoc2VsZik7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtZW50KCdsaScsIGVsZW1lbnQoJ2xhYmVsJywgW3BhcmFtZXRlci5sYWJlbCArICc6ICcs
IGlucHV0XSkpOworICAgICAgICAgICAgICAgIH0pKQorICAgICAgICAgICAgXSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgpLnF1
ZXJ5U2VsZWN0b3IoJy50cmVuZC1saW5lLXBhcmFtZXRlci1saXN0JyksIFtdKTsKKyAgICB9CisK
KyAgICBfdHJlbmRMaW5lVHlwZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIHZhciBu
ZXdUeXBlID0gQ2hhcnRUcmVuZExpbmVUeXBlcy5maW5kKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVy
biB0eXBlLmlkID09IGV2ZW50LnRhcmdldC52YWx1ZSB9KTsKKyAgICAgICAgaWYgKG5ld1R5cGUg
PT0gdGhpcy5fdHJlbmRMaW5lVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0
aGlzLl90cmVuZExpbmVUeXBlID0gbmV3VHlwZTsKKyAgICAgICAgdGhpcy5fdHJlbmRMaW5lUGFy
YW1ldGVycyA9IHRoaXMuX2RlZmF1bHRQYXJhbWV0ZXJzRm9yVHJlbmRMaW5lKG5ld1R5cGUpOwor
ICAgICAgICB0aGlzLl9yZW5kZXJlZFRyYW5kTGluZU9wdGlvbnMgPSBmYWxzZTsKKworICAgICAg
ICB0aGlzLl91cGRhdGVUcmVuZExpbmUoKTsKKyAgICAgICAgdGhpcy5fY2hhcnRzUGFnZS5ncmFw
aE9wdGlvbnNEaWRDaGFuZ2UoKTsKKyAgICAgICAgdGhpcy5yZW5kZXIoKTsKKyAgICB9CisKKyAg
ICBfZGVmYXVsdFBhcmFtZXRlcnNGb3JUcmVuZExpbmUodHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0eXBlICYmIHR5cGUucGFyYW1ldGVyTGlzdCA/IHR5cGUucGFyYW1ldGVyTGlzdC5tYXAo
ZnVuY3Rpb24gKHBhcmFtZXRlcikgeyByZXR1cm4gcGFyYW1ldGVyLnZhbHVlOyB9KSA6IFtdOwor
ICAgIH0KKworICAgIF90cmVuZExpbmVQYXJhbWV0ZXJEaWRDaGFuZ2UoZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgaW5wdXQgPSBldmVudC50YXJnZXQ7CisgICAgICAgIHZhciBpbmRleCA9IGlu
cHV0LnBhcmFtZXRlckluZGV4OworICAgICAgICB2YXIgbmV3VmFsdWUgPSBwYXJzZUZsb2F0KGlu
cHV0LnZhbHVlKTsKKyAgICAgICAgaWYgKHRoaXMuX3RyZW5kTGluZVBhcmFtZXRlcnNbaW5kZXhd
ID09IG5ld1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl90cmVuZExp
bmVQYXJhbWV0ZXJzW2luZGV4XSA9IG5ld1ZhbHVlOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAvLyBTb21lIHRyZW5kIGxpbmVzLCBl
LmcuIHNlbWVudGF0aW9ucywgYXJlIGV4cGVuc2l2ZS4KKyAgICAgICAgICAgIGlmIChzZWxmLl90
cmVuZExpbmVQYXJhbWV0ZXJzW2luZGV4XSAhPSBuZXdWYWx1ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBzZWxmLl91cGRhdGVUcmVuZExpbmUoKTsKKyAgICAgICAgICAg
IHNlbGYuX2NoYXJ0c1BhZ2UuZ3JhcGhPcHRpb25zRGlkQ2hhbmdlKCk7CisgICAgICAgIH0sIDUw
MCk7CisgICAgfQorCisgICAgX2RpZEZldGNoRGF0YSgpCisgICAgeworICAgICAgICBzdXBlci5f
ZGlkRmV0Y2hEYXRhKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVRyZW5kTGluZSgpOworICAgIH0K
KworICAgIF91cGRhdGVUcmVuZExpbmUoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9tYWlu
Q2hhcnQuc291cmNlTGlzdCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
X3RyZW5kTGluZVZlcnNpb24rKzsKKyAgICAgICAgdmFyIGN1cnJlbnRUcmVuZExpbmVUeXBlID0g
dGhpcy5fdHJlbmRMaW5lVHlwZSB8fCBDaGFydFRyZW5kTGluZVR5cGVzLkRlZmF1bHRUeXBlOwor
ICAgICAgICB2YXIgY3VycmVudFRyZW5kTGluZVBhcmFtZXRlcnMgPSB0aGlzLl90cmVuZExpbmVQ
YXJhbWV0ZXJzIHx8IHRoaXMuX2RlZmF1bHRQYXJhbWV0ZXJzRm9yVHJlbmRMaW5lKGN1cnJlbnRU
cmVuZExpbmVUeXBlKTsKKyAgICAgICAgdmFyIGN1cnJlbnRUcmVuZExpbmVWZXJzaW9uID0gdGhp
cy5fdHJlbmRMaW5lVmVyc2lvbjsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICB2
YXIgc291cmNlTGlzdCA9IHRoaXMuX21haW5DaGFydC5zb3VyY2VMaXN0KCk7CisKKyAgICAgICAg
aWYgKCFjdXJyZW50VHJlbmRMaW5lVHlwZS5leGVjdXRlKSB7CisgICAgICAgICAgICB0aGlzLl9t
YWluQ2hhcnQuY2xlYXJUcmVuZExpbmVzKCk7CisgICAgICAgICAgICB0aGlzLnJlbmRlcigpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gV2FpdCBmb3IgYWxsIHRyZW5kbGluZXMg
dG8gYmUgcmVhZHkuIE90aGVyd2lzZSB3ZSBtaWdodCBzZWUgRk9DIHdoZW4gdGhlIGRvbWFpbiBp
cyBleHBhbmRlZC4KKyAgICAgICAgICAgIFByb21pc2UuYWxsKHNvdXJjZUxpc3QubWFwKGZ1bmN0
aW9uIChzb3VyY2UsIHNvdXJjZUluZGV4KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJl
bnRUcmVuZExpbmVUeXBlLmV4ZWN1dGUuY2FsbChudWxsLCBzb3VyY2UsIGN1cnJlbnRUcmVuZExp
bmVQYXJhbWV0ZXJzKS50aGVuKGZ1bmN0aW9uICh0cmVuZGxpbmVTZXJpZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNlbGYuX3RyZW5kTGluZVZlcnNpb24gPT0gY3VycmVudFRyZW5kTGlu
ZVZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYWluQ2hhcnQuc2V0VHJl
bmRMaW5lKHNvdXJjZUluZGV4LCB0cmVuZGxpbmVTZXJpZXMpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNl
bGYucmVuZGVyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHN0
YXRpYyBwYW5lSGVhZGVyVGVtcGxhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGAKQEAgLTMy
Nyw2ICs1MjgsMTAgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIg
Y2xhc3M9InNob3ctb3V0bGllcnMiPlNob3cgb3V0bGllcnM8L2xhYmVsPjwvbGk+CiAgICAgICAg
ICAgICAgICAgICAgICAgICA8bGk+PGJ1dHRvbiBjbGFzcz0ibWFyay1hcy1vdXRsaWVyIj5NYXJr
IHNlbGVjdGVkIHBvaW50cyBhcyBvdXRsaWVyPC9idXR0b24+PC9saT4KICAgICAgICAgICAgICAg
ICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjaGFydC1wYW5lLXRy
ZW5kLWxpbmUtb3B0aW9ucyBwb3BvdmVyIiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRyZW5kLWxpbmUtdHlwZXMiPjwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJlbmQtbGluZS1wYXJhbWV0ZXItbGlz
dCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgPC9u
YXY+CiAgICAgICAgICAgICA8L2hlYWRlcj4KICAgICAgICAgYDsKQEAgLTM5NywxMiArNjAyLDE4
IEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICAgICAg
ICAgIGJvcmRlcjogc29saWQgMXB4ICNjY2M7CiAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1
czogMC4ycmVtOwogICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwOwotICAgICAgICAgICAgICAg
IGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKLSAgICAgICAgICAgICAgICAt
d2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjVyZW0pOwogICAgICAgICAgICAgICAgIHBh
ZGRpbmc6IDAuMnJlbSAwOwogICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAg
ICAgICBtYXJnaW4tdG9wOiAtMC4ycmVtOwogICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDog
LTAuMnJlbTsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUs
IDAuOTUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBAc3VwcG9ydHMgKCAtd2Via2l0
LWJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjVyZW0pICkgeworICAgICAgICAgICAgICAgIC5jaGFy
dC1wYW5lLWFjdGlvbnMgLnBvcG92ZXIgeworICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5k
OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7CisgICAgICAgICAgICAgICAgICAgIC13ZWJraXQt
YmFja2Ryb3AtZmlsdGVyOiBibHVyKDAuNXJlbSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAuY2hhcnQtcGFuZS1hY3Rpb25zIC5wb3BvdmVyIGxpIHsK
QEAgLTQyOSw2ICs2NDAsMzIgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFz
ZSB7CiAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgICB9CiAK
KyAgICAgICAgICAgIC5jaGFydC1wYW5lLWFjdGlvbnMgLnBvcG92ZXIuY2hhcnQtcGFuZS1maWx0
ZXJpbmctb3B0aW9ucyB7CisgICAgICAgICAgICAgICAgcGFkZGluZzogMC4ycmVtOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAuY2hhcnQtcGFuZS1hY3Rpb25zIC5wb3BvdmVyLmNoYXJ0
LXBhbmUtdHJlbmQtbGluZS1vcHRpb25zIGgzIHsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6
IDAuOXJlbTsKKyAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMC45cmVtOworICAgICAgICAg
ICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsK
KyAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjJyZW07CisgICAgICAgICAgICAgICAgYm9yZGVy
LWJvdHRvbTogc29saWQgMXB4ICNjY2M7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5j
aGFydC1wYW5lLWFjdGlvbnMgLnBvcG92ZXIuY2hhcnQtcGFuZS10cmVuZC1saW5lLW9wdGlvbnMg
c2VsZWN0LAorICAgICAgICAgICAgLmNoYXJ0LXBhbmUtYWN0aW9ucyAucG9wb3Zlci5jaGFydC1w
YW5lLXRyZW5kLWxpbmUtb3B0aW9ucyBsYWJlbCB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAw
LjJyZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5jaGFydC1wYW5lLWFjdGlvbnMg
LnBvcG92ZXIuY2hhcnQtcGFuZS10cmVuZC1saW5lLW9wdGlvbnMgbGFiZWwgeworICAgICAgICAg
ICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAu
Y2hhcnQtcGFuZS1hY3Rpb25zIC5wb3BvdmVyLmNoYXJ0LXBhbmUtdHJlbmQtbGluZS1vcHRpb25z
IGlucHV0IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMi41cmVtOworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAuY2hhcnQtcGFuZS1hY3Rpb25zIC5wb3BvdmVyIGlucHV0W3R5cGU9dGV4
dF0gewogICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgICAgICB3
aWR0aDogMTVyZW07CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3Bh
Z2VzL2Rhc2hib2FyZC1wYWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvcGFnZXMvZGFzaGJvYXJkLXBhZ2UuanMJKHJldmlzaW9uIDIwNDE4OSkK
KysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvZGFzaGJvYXJkLXBh
Z2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBEYXNoYm9hcmRQ
YWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkCiAKICAgICAgICAgdmFyIG9wdGlvbnMgPSBDaGFydFN0
eWxlcy5kYXNoYm9hcmRPcHRpb25zKHJlc3VsdC5tZXRyaWMubWFrZUZvcm1hdHRlcigzKSk7CiAg
ICAgICAgIG9wdGlvbnMub25kYXRhID0gdGhpcy5fZmV0Y2hlZERhdGEuYmluZCh0aGlzKTsKLSAg
ICAgICAgdmFyIGNoYXJ0ID0gbmV3IFRpbWVTZXJpZXNDaGFydChDaGFydFN0eWxlcy5jcmVhdGVT
b3VyY2VMaXN0KHJlc3VsdC5wbGF0Zm9ybSwgcmVzdWx0Lm1ldHJpYywgZmFsc2UsIGZhbHNlKSwg
b3B0aW9ucyk7CisgICAgICAgIHZhciBjaGFydCA9IG5ldyBUaW1lU2VyaWVzQ2hhcnQoQ2hhcnRT
dHlsZXMuY3JlYXRlU291cmNlTGlzdChyZXN1bHQucGxhdGZvcm0sIHJlc3VsdC5tZXRyaWMsIGZh
bHNlLCBmYWxzZSwgdHJ1ZSksIG9wdGlvbnMpOwogICAgICAgICB0aGlzLl9jaGFydHMucHVzaChj
aGFydCk7CiAKICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgQ2hhcnRTdGF0dXNWaWV3KHJl
c3VsdC5tZXRyaWMsIGNoYXJ0KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9qcy92My1tb2RlbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3Rvb2xzL2pzL3YzLW1vZGVscy5qcwkocmV2aXNpb24gMjA0MTg5KQorKysgV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQCBpbXBvcnRGcm9tVjMoJ21vZGVscy9yb290LXNldC5qcycsICdNZWFzCiBpbXBv
cnRGcm9tVjMoJ21vZGVscy9yb290LXNldC5qcycsICdSb290U2V0Jyk7CiBpbXBvcnRGcm9tVjMo
J21vZGVscy90ZXN0LmpzJywgJ1Rlc3QnKTsKIGltcG9ydEZyb21WMygnbW9kZWxzL3Rlc3QtZ3Jv
dXAuanMnLCAnVGVzdEdyb3VwJyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy90aW1lLXNlcmllcy5q
cycsICdUaW1lU2VyaWVzJyk7CiAKIGltcG9ydEZyb21WMygncHJpdmlsZWdlZC1hcGkuanMnLCAn
UHJpdmlsZWdlZEFQSScpOwogaW1wb3J0RnJvbVYzKCdpbnN0cnVtZW50YXRpb24uanMnLCAnSW5z
dHJ1bWVudGF0aW9uJyk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0
cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LXRlc3RzLmpzCShyZXZpc2lvbiAy
MDQxODkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVu
dC1zZXQtdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw4IEBACiAndXNlIHN0cmlj
dCc7CiAKIHZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKK2lmICghYXNzZXJ0LmFsbW9z
dEVxdWFsKQorICAgIGFzc2VydC5hbG1vc3RFcXVhbCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2Fs
bW9zdC1lcXVhbC5qcycpOwogCiBsZXQgTW9ja1JlbW90ZUFQSSA9IHJlcXVpcmUoJy4vcmVzb3Vy
Y2VzL21vY2stcmVtb3RlLWFwaS5qcycpLk1vY2tSZW1vdGVBUEk7CiByZXF1aXJlKCcuLi90b29s
cy9qcy92My1tb2RlbHMuanMnKTsKQEAgLTc0MSw0ICs3NDMsMTQzIEBAIGRlc2NyaWJlKCdNZWFz
dXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKIAogICAgIH0pOwogCisgICAgZGVzY3JpYmUoJ2Zl
dGNoU2VnbWVudGF0aW9uJywgZnVuY3Rpb24gKCkgeworCisgICAgICAgIHZhciBzaW1wbGVTZWdt
ZW50YWJsZVZhbHVlcyA9IFsKKyAgICAgICAgICAgIDE1NDYuNTYwMywgMTU0OC4xNTM2LCAxNTYz
LjU0NTIsIDE1MzkuNzgyMywgMTU0Ni40MTg0LCAxNTQ4LjkyOTksIDE1MzIuNTQ0NCwgMTU0Ni4y
ODAwLCAxNTQ3LjE3NjAsIDE1NTEuMzUwNywKKyAgICAgICAgICAgIDE1NDguMzI3NywgMTU0NC43
NjczLCAxNTQyLjcxNTcsIDE1MzguMTcwMCwgMTUzOC4wOTQ4LCAxNTQzLjAzNjQsIDE1MzcuOTcz
NywgMTU0Mi4yNjExLCAxNTQzLjk2ODUsIDE1NDYuNDkwMSwKKyAgICAgICAgICAgIDE1NDQuNDA4
MCwgMTU0MC44NjcxLCAxNTM3LjMzNTMsIDE1NDkuNDMzMSwgMTU0MS40NDM2LCAxNTQ0LjEyOTks
IDE1NTAuMTc3MCwgMTU1My4xODcyLCAxNTQ5LjM0MTcsIDE1NDIuMzc4OCwKKyAgICAgICAgICAg
IDE1NDMuNTA5NCwgMTU0MS43OTA1LCAxNTM3LjY2MjUsIDE1NDcuMzg0MCwgMTUzOC41MTg1LCAx
NTQ5LjY3NjQsIDE1NTYuNjEzOCwgMTU1Mi4wNDc2LCAxNTQxLjc2MjksIDE1NDQuNzAwNiwKKyAg
ICAgICAgICAgIC8qIHNlZ21lbnRzIGNoYW5nZXMgaGVyZSAqLworICAgICAgICAgICAgMTU4Ny4x
MzkwLCAxNTk0LjU0NTEsIDE1ODYuMjQzMCwgMTU5Ni43MzEwLCAxNTQ4LjE0MjMKKyAgICAgICAg
XTsKKworICAgICAgICBmdW5jdGlvbiBtYWtlU2FtcGxlUnVucyh2YWx1ZXMsIHN0YXJ0UnVuSWQs
IHN0YXJ0VGltZSwgdGltZUluY3JlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHJ1
bklkID0gc3RhcnRSdW5JZDsKKyAgICAgICAgICAgIHZhciBidWlsZElkID0gMzQwMDsKKyAgICAg
ICAgICAgIHZhciBidWlsZE51bWJlciA9IDE7CisgICAgICAgICAgICB2YXIgbWFrZVJ1biA9IGZ1
bmN0aW9uICh2YWx1ZSwgY29tbWl0VGltZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBbcnVu
SWQrKywgdmFsdWUsIDEsIHZhbHVlLCB2YWx1ZSwgZmFsc2UsIFtdLCBjb21taXRUaW1lLCBjb21t
aXRUaW1lICsgMTAsIGJ1aWxkSWQrKywgYnVpbGROdW1iZXIrKywgTW9ja01vZGVscy5idWlsZGVy
LmlkKCldOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aW1lSW5jcmVtZW50ID0gTWF0
aC5mbG9vcih0aW1lSW5jcmVtZW50KTsKKyAgICAgICAgICAgIHZhciBydW5zID0gdmFsdWVzLm1h
cChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7IHJldHVybiBtYWtlUnVuKHZhbHVlLCBzdGFydFRp
bWUgKyBpbmRleCAqIHRpbWVJbmNyZW1lbnQpOyB9KQorICAgICAgICAgICAgCisgICAgICAgICAg
ICByZXR1cm4gcnVuczsKKyAgICAgICAgfQorCisgICAgICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0
byBzZWdtZW50IGEgc2luZ2xlIGNsdXN0ZXInLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAg
ICAgdmFyIHNldCA9IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSwgNTAwMCk7CisgICAgICAg
ICAgICB2YXIgcHJvbWlzZSA9IHNldC5mZXRjaEJldHdlZW4oNDAwMCwgNTAwMCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEuanNv
bicpOworCisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHsKKyAgICAgICAgICAgICAg
ICAnY2x1c3RlclN0YXJ0JzogMTAwMCwKKyAgICAgICAgICAgICAgICAnY2x1c3RlclNpemUnOiAx
MDAwLAorICAgICAgICAgICAgICAgICdmb3JtYXRNYXAnOiBbJ2lkJywgJ21lYW4nLCAnaXRlcmF0
aW9uQ291bnQnLCAnc3VtJywgJ3NxdWFyZVN1bScsICdtYXJrZWRPdXRsaWVyJywgJ3JldmlzaW9u
cycsICdjb21taXRUaW1lJywgJ2J1aWxkJywgJ2J1aWxkVGltZScsICdidWlsZE51bWJlcicsICdi
dWlsZGVyJ10sCisgICAgICAgICAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzoge2N1cnJlbnQ6IG1h
a2VTYW1wbGVSdW5zKHNpbXBsZVNlZ21lbnRhYmxlVmFsdWVzLCA2NDAwLCA0MDAwLCAxMDAwIC8g
NTApfSwKKyAgICAgICAgICAgICAgICAnc3RhcnRUaW1lJzogNDAwMCwKKyAgICAgICAgICAgICAg
ICAnZW5kVGltZSc6IDUwMDAsCisgICAgICAgICAgICAgICAgJ2xhc3RNb2RpZmllZCc6IDUwMDAs
CisgICAgICAgICAgICAgICAgJ2NsdXN0ZXJDb3VudCc6IDQsCisgICAgICAgICAgICAgICAgJ3N0
YXR1cyc6ICdPSyd9KTsKKworICAgICAgICAgICAgdmFyIHRpbWVTZXJpZXM7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoc2V0LmZldGNoZWRUaW1lU2VyaWVzKCdjdXJyZW50JywgZmFsc2UsIGZh
bHNlKS5sZW5ndGgoKSwgMCk7CisgICAgICAgICAgICB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aW1lU2VyaWVzID0gc2V0LmZldGNo
ZWRUaW1lU2VyaWVzKCdjdXJyZW50JywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwodGltZVNlcmllcy5sZW5ndGgoKSwgNDUpOworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbCh0aW1lU2VyaWVzLmZpcnN0UG9pbnQoKS50aW1lLCA0MDAwKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwodGltZVNlcmllcy5sYXN0UG9pbnQoKS50aW1lLCA0ODgwKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2V0LmZldGNoU2VnbWVudGF0aW9uKCdzZWdtZW50VGlt
ZVNlcmllc0J5TWF4aW1pemluZ1NjaHdhcnpDcml0ZXJpb24nLCBbXSwgJ2N1cnJlbnQnLCBmYWxz
ZSk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChzZWdtZW50YXRpb24pIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2VnbWVudGF0aW9uLmxlbmd0aCwgNCk7CisKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2VnbWVudGF0aW9uWzBdLnRpbWUsIDQwMDApOworICAg
ICAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChzZWdtZW50YXRpb25bMF0udmFsdWUsIDE1
NDUuMDgyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2VnbWVudGF0aW9uWzBdLnZh
bHVlLCBzZWdtZW50YXRpb25bMV0udmFsdWUpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZWdtZW50YXRpb25bMV0udGltZSwgdGltZVNlcmllcy5maW5kUG9pbnRCeUluZGV4KDM5KS50
aW1lKTsKKworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWdtZW50YXRpb25bMl0udGlt
ZSwgdGltZVNlcmllcy5maW5kUG9pbnRCeUluZGV4KDM5KS50aW1lKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuYWxtb3N0RXF1YWwoc2VnbWVudGF0aW9uWzJdLnZhbHVlLCAxNTgxLjg3Mik7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlZ21lbnRhdGlvblsyXS52YWx1ZSwgc2VnbWVu
dGF0aW9uWzNdLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2VnbWVudGF0
aW9uWzNdLnRpbWUsIDQ4ODApOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg
IH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGJlIGFi
bGUgdG8gc2VnbWVudCB0d28gY2x1c3RlcnMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAg
ICAgdmFyIHNldCA9IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSwgNTAwMCk7CisgICAgICAg
ICAgICB2YXIgcHJvbWlzZSA9IHNldC5mZXRjaEJldHdlZW4oMzAwMCwgNTAwMCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEuanNv
bicpOworCisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHsKKyAgICAgICAgICAgICAg
ICAnY2x1c3RlclN0YXJ0JzogMTAwMCwKKyAgICAgICAgICAgICAgICAnY2x1c3RlclNpemUnOiAx
MDAwLAorICAgICAgICAgICAgICAgICdmb3JtYXRNYXAnOiBbJ2lkJywgJ21lYW4nLCAnaXRlcmF0
aW9uQ291bnQnLCAnc3VtJywgJ3NxdWFyZVN1bScsICdtYXJrZWRPdXRsaWVyJywgJ3JldmlzaW9u
cycsICdjb21taXRUaW1lJywgJ2J1aWxkJywgJ2J1aWxkVGltZScsICdidWlsZE51bWJlcicsICdi
dWlsZGVyJ10sCisgICAgICAgICAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzoge2N1cnJlbnQ6IG1h
a2VTYW1wbGVSdW5zKHNpbXBsZVNlZ21lbnRhYmxlVmFsdWVzLnNsaWNlKDMwKSwgNjQwMCwgNDAw
MCwgMTAwMCAvIDMwKX0sCisgICAgICAgICAgICAgICAgJ3N0YXJ0VGltZSc6IDQwMDAsCisgICAg
ICAgICAgICAgICAgJ2VuZFRpbWUnOiA1MDAwLAorICAgICAgICAgICAgICAgICdsYXN0TW9kaWZp
ZWQnOiA1MDAwLAorICAgICAgICAgICAgICAgICdjbHVzdGVyQ291bnQnOiA0LAorICAgICAgICAg
ICAgICAgICdzdGF0dXMnOiAnT0snfSk7CisKKyAgICAgICAgICAgIHdhaXRGb3JNZWFzdXJlbWVu
dFNldCgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1sxXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtNDAwMC5qc29uJyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHNldC5mZXRjaFNlZ21lbnRhdGlvbignc2VnbWVudFRpbWVTZXJp
ZXNCeU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9uJywgW10sICdjdXJyZW50JywgZmFsc2UpOwor
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoc2VnbWVudGF0aW9uKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHRpbWVTZXJpZXMgPSBzZXQuZmV0Y2hlZFRpbWVTZXJpZXMoJ2N1cnJlbnQnLCBm
YWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0aW1lU2VyaWVzLmxl
bmd0aCgpLCAxNSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRpbWVTZXJpZXMuZmly
c3RQb2ludCgpLnRpbWUsIDQwMDApOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0aW1l
U2VyaWVzLmxhc3RQb2ludCgpLnRpbWUsIDQ0NjIpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNlZ21lbnRhdGlvbi5sZW5ndGgsIDQpOworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChzZWdtZW50YXRpb25bMF0udGltZSwgdGltZVNlcmllcy5maXJzdFBvaW50KCkudGltZSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFsKHNlZ21lbnRhdGlvblswXS52YWx1
ZSwgMTU0NS40NDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWdtZW50YXRpb25b
MF0udmFsdWUsIHNlZ21lbnRhdGlvblsxXS52YWx1ZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNlZ21lbnRhdGlvblsxXS50aW1lLCB0aW1lU2VyaWVzLmZpbmRQb2ludEJ5SW5kZXgo
OSkudGltZSk7CisKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2VnbWVudGF0aW9uWzJd
LnRpbWUsIHRpbWVTZXJpZXMuZmluZFBvaW50QnlJbmRleCg5KS50aW1lKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoc2VnbWVudGF0aW9uWzJdLnZhbHVlLCAxNTgxLjg3Mik7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlZ21lbnRhdGlvblsyXS52YWx1ZSwgc2Vn
bWVudGF0aW9uWzNdLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2VnbWVu
dGF0aW9uWzNdLnRpbWUsIHRpbWVTZXJpZXMubGFzdFBvaW50KCkudGltZSk7CisKKyAgICAgICAg
ICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKHsKKyAgICAgICAgICAgICAgICAgICAgJ2NsdXN0
ZXJTdGFydCc6IDEwMDAsCisgICAgICAgICAgICAgICAgICAgICdjbHVzdGVyU2l6ZSc6IDEwMDAs
CisgICAgICAgICAgICAgICAgICAgICdmb3JtYXRNYXAnOiBbJ2lkJywgJ21lYW4nLCAnaXRlcmF0
aW9uQ291bnQnLCAnc3VtJywgJ3NxdWFyZVN1bScsICdtYXJrZWRPdXRsaWVyJywgJ3JldmlzaW9u
cycsICdjb21taXRUaW1lJywgJ2J1aWxkJywgJ2J1aWxkVGltZScsICdidWlsZE51bWJlcicsICdi
dWlsZGVyJ10sCisgICAgICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6IHtjdXJyZW50
OiBtYWtlU2FtcGxlUnVucyhzaW1wbGVTZWdtZW50YWJsZVZhbHVlcy5zbGljZSgwLCAzMCksIDY1
MDAsIDMwMDAsIDEwMDAgLyAzMCl9LAorICAgICAgICAgICAgICAgICAgICAnc3RhcnRUaW1lJzog
MzAwMCwKKyAgICAgICAgICAgICAgICAgICAgJ2VuZFRpbWUnOiA0MDAwLAorICAgICAgICAgICAg
ICAgICAgICAnbGFzdE1vZGlmaWVkJzogNTAwMCwKKyAgICAgICAgICAgICAgICAgICAgJ2NsdXN0
ZXJDb3VudCc6IDQsCisgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOworICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNldC5mZXRjaFNl
Z21lbnRhdGlvbignc2VnbWVudFRpbWVTZXJpZXNCeU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9u
JywgW10sICdjdXJyZW50JywgZmFsc2UpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
c2VnbWVudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgdmFyIHRpbWVTZXJpZXMgPSBzZXQuZmV0
Y2hlZFRpbWVTZXJpZXMoJ2N1cnJlbnQnLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh0aW1lU2VyaWVzLmxlbmd0aCgpLCA0NSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHRpbWVTZXJpZXMuZmlyc3RQb2ludCgpLnRpbWUsIDMwMDApOworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh0aW1lU2VyaWVzLmxhc3RQb2ludCgpLnRpbWUsIDQ0NjIp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWdtZW50YXRpb24ubGVuZ3RoLCA0KTsK
KworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWdtZW50YXRpb25bMF0udGltZSwgdGlt
ZVNlcmllcy5maXJzdFBvaW50KCkudGltZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmFsbW9z
dEVxdWFsKHNlZ21lbnRhdGlvblswXS52YWx1ZSwgMTU0NS4wODIpOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChzZWdtZW50YXRpb25bMF0udmFsdWUsIHNlZ21lbnRhdGlvblsxXS52YWx1
ZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlZ21lbnRhdGlvblsxXS50aW1lLCB0
aW1lU2VyaWVzLmZpbmRQb2ludEJ5SW5kZXgoMzkpLnRpbWUpOworCisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNlZ21lbnRhdGlvblsyXS50aW1lLCB0aW1lU2VyaWVzLmZpbmRQb2ludEJ5
SW5kZXgoMzkpLnRpbWUpOworICAgICAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChzZWdt
ZW50YXRpb25bMl0udmFsdWUsIDE1ODEuODcyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoc2VnbWVudGF0aW9uWzJdLnZhbHVlLCBzZWdtZW50YXRpb25bM10udmFsdWUpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzZWdtZW50YXRpb25bM10udGltZSwgdGltZVNlcmllcy5s
YXN0UG9pbnQoKS50aW1lKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9
KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CisKKyAgICB9KTsKIH0pOwpJbmRleDogV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvc3RhdGlzdGljcy10ZXN0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRl
c3RzLmpzCShyZXZpc2lvbiAyMDQxOTApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5p
dC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDI5ICsyLDkg
QEAKIAogdmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwogdmFyIFN0YXRpc3RpY3MgPSBy
ZXF1aXJlKCcuLi9wdWJsaWMvc2hhcmVkL3N0YXRpc3RpY3MuanMnKTsKK2lmICghYXNzZXJ0LmFs
bW9zdEVxdWFsKQorICAgIGFzc2VydC5hbG1vc3RFcXVhbCA9IHJlcXVpcmUoJy4vcmVzb3VyY2Vz
L2FsbW9zdC1lcXVhbC5qcycpOwogCi1pZiAoIWFzc2VydC5hbG1vc3RFcXVhbCkgewotICAgIGFz
c2VydC5hbG1vc3RFcXVhbCA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBwcmVjaXNpb24s
IG1lc3NhZ2UpIHsKLSAgICAgICAgdmFyIHN1ZmZpZWRNZXNzYWdlID0gKG1lc3NhZ2UgPyBtZXNz
YWdlICsgJyAnIDogJycpOwotICAgICAgICBpZiAoaXNOYU4oZXhwZWN0ZWQpKSB7Ci0gICAgICAg
ICAgICBhc3NlcnQoaXNOYU4oYWN0dWFsKSwgYCR7c3VmZmllZE1lc3NhZ2V9ZXhwZWN0ZWQgTmFO
IGJ1dCBnb3QgJHthY3R1YWx9YCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoZXhwZWN0ZWQgPT0gMCkgewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFj
dHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCFwcmVjaXNpb24pCi0gICAgICAgICAgICBwcmVjaXNpb24gPSA2Owot
ICAgICAgICB2YXIgdG9sZXJhbmNlID0gMSAvIE1hdGgucG93KDEwLCBwcmVjaXNpb24pOwotICAg
ICAgICB2YXIgcmVsYXRpdmVEaWZmZXJlbmNlID0gTWF0aC5hYnMoKGFjdHVhbCAtIGV4cGVjdGVk
KSAvIGV4cGVjdGVkKTsKLSAgICAgICAgdmFyIHBlcmNlbnREaWZmZXJlbmNlID0gKHJlbGF0aXZl
RGlmZmVyZW5jZSAqIDEwMCkudG9GaXhlZCgyKTsKLSAgICAgICAgYXNzZXJ0KHJlbGF0aXZlRGlm
ZmVyZW5jZSA8IHRvbGVyYW5jZSwKLSAgICAgICAgICAgIGAke3N1ZmZpZWRNZXNzYWdlfWV4cGVj
dGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9ICgke3BlcmNlbnREaWZmZXJlbmNlfSUg
ZGlmZmVyZW5jZSlgKTsKLSAgICB9Ci19CiAKIGRlc2NyaWJlKCdhc3NlcnQuYWxtb3N0RXF1YWwn
LCBmdW5jdGlvbiAoKSB7CiAgICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgd2hlbiB2YWx1ZXMgYXJl
IGlkZW50aWNhbCcsIGZ1bmN0aW9uICgpIHsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL3Jlc291cmNlcy9hbG1vc3QtZXF1YWwuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2VzL2FsbW9zdC1lcXVhbC5q
cwkobm9uZXhpc3RlbnQpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9y
ZXNvdXJjZXMvYWxtb3N0LWVxdWFsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAK
K3ZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKKworZnVuY3Rpb24gYWxtb3N0RXF1YWwo
YWN0dWFsLCBleHBlY3RlZCwgcHJlY2lzaW9uLCBtZXNzYWdlKQoreworICAgIHZhciBzdWZmaWVk
TWVzc2FnZSA9IChtZXNzYWdlID8gbWVzc2FnZSArICcgJyA6ICcnKTsKKyAgICBpZiAoaXNOYU4o
ZXhwZWN0ZWQpKSB7CisgICAgICAgIGFzc2VydChpc05hTihhY3R1YWwpLCBgJHtzdWZmaWVkTWVz
c2FnZX1leHBlY3RlZCBOYU4gYnV0IGdvdCAke2FjdHVhbH1gKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChleHBlY3RlZCA9PSAwKSB7CisgICAgICAgIGFzc2VydC5lcXVhbChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICghcHJlY2lzaW9uKQorICAgICAgICBwcmVjaXNpb24gPSA2OworICAgIHZhciB0b2xlcmFu
Y2UgPSAxIC8gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7CisgICAgdmFyIHJlbGF0aXZlRGlmZmVy
ZW5jZSA9IE1hdGguYWJzKChhY3R1YWwgLSBleHBlY3RlZCkgLyBleHBlY3RlZCk7CisgICAgdmFy
IHBlcmNlbnREaWZmZXJlbmNlID0gKHJlbGF0aXZlRGlmZmVyZW5jZSAqIDEwMCkudG9GaXhlZCgy
KTsKKyAgICBhc3NlcnQocmVsYXRpdmVEaWZmZXJlbmNlIDwgdG9sZXJhbmNlLAorICAgICAgICBg
JHtzdWZmaWVkTWVzc2FnZX1leHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSAo
JHtwZXJjZW50RGlmZmVyZW5jZX0lIGRpZmZlcmVuY2UpYCk7Cit9CisKK2lmICh0eXBlb2YgbW9k
dWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRzID0gYWxtb3N0RXF1YWw7Cg==
</data>
<flag name="review"
          id="309236"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>