<?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>27627</bug_id>
          
          <creation_ts>2009-07-23 15:16:15 -0700</creation_ts>
          <short_desc>DRT animation/transition pause API does not pause accelerated animations</short_desc>
          <delta_ts>2009-08-03 12:40:27 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134280</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-07-23 15:16:15 -0700</bug_when>
    <thetext>The &apos;pauseAnimationAtTimeOnElementWithId&apos; and &apos;pauseTransitionAtTimeOnElementWithId&apos; methods available to JS in DRT don&apos;t do the right thing for animations that are accelerated, making it hard to write tests that give pixel-accurate results for these kinds of animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134283</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-07-23 15:16:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/6442932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134288</commentid>
    <comment_count>2</comment_count>
      <attachid>33385</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-07-23 15:22:20 -0700</bug_when>
    <thetext>Created attachment 33385
Patch, changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134609</commentid>
    <comment_count>3</comment_count>
      <attachid>33385</attachid>
    <who name="">mitz</who>
    <bug_when>2009-07-24 11:33:45 -0700</bug_when>
    <thetext>Comment on attachment 33385
Patch, changelogs

Minor style issues:

&gt; -void AnimationBase::pauseAtTime(double t)
&gt; +void AnimationBase::freezeAtTime(double t)

While you’re at it, please rename &apos;t&apos; to &apos;time&apos;.

&gt; +    ASSERT(m_startTime);        // if m_startTime is zero, we haven&apos;t started yet, so we&apos;ll get a bad pause time.

Since it ends with a period, it must begin with a capital “If” instead of “if”.

&gt; +    void freezeAtTime(double t);

No need to name the parameter here.

&gt; +    virtual void suspendAnimations(double time = 0);    // zero value for time means &quot;use currentTime()&quot;.

“Zero” instead of “zero”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136327</commentid>
    <comment_count>4</comment_count>
      <attachid>33916</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-07-31 18:24:39 -0700</bug_when>
    <thetext>Created attachment 33916
Unbitrotted patch, some tests need tweaking still.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136745</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-08-03 12:40:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/46727</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33385</attachid>
            <date>2009-07-23 15:22:20 -0700</date>
            <delta_ts>2009-07-24 11:33:45 -0700</delta_ts>
            <desc>Patch, changelogs</desc>
            <filename>27627_patch.txt</filename>
            <type>text/plain</type>
            <size>47451</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNzBkYTZlLi5hOTUyYjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMDct
MjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB0aGUgRFJUIEFQSXMgdG8g
cGF1c2UgdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMgd29yayBmb3IgYWNjZWxlcmF0ZWQgYW5p
bWF0aW9ucworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI3NjI3PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQ0MjkzMj4KKworICAgICAgICBGaXgg
dGhlICdwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCcgYW5kICdwYXVzZVRyYW5z
aXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQnIEFQSXMKKyAgICAgICAgYXZhaWxhYmxlIHRvIExh
eW91dFRlc3RzIHRvIHdvcmsgd2l0aCBhY2NlbGVyYXRlZCBhbmltYXRpb25zIGFuZCB0cmFuc2l0
aW9ucy4gRG9uZSBieSBzZW5kaW5nCisgICAgICAgIHRoZSBwYXVzZSB0aW1lIGRvd24gdG8gdGhl
IEdyYXBoaWNzTGF5ZXIsIGFuZCB1c2luZyBpdCB0byBzdG9wIHRpbWUgb24gdGhlIGxheWVyLgor
ICAgICAgICAKKyAgICAgICAgSSBhbHNvIGFkZGVkIGFuIGFzc2VydGlvbiB0byBjaGVjayB0aGF0
IHRoZSBhbmltYXRpb24gaGFzIGFjdHVhbGx5IHN0YXJ0ZWQgd2hlbiB3ZQorICAgICAgICB0cnkg
dG8gcGF1c2UgaXQsIHRvIGNoZWNrIHRoYXQgdGhlIHBhdXNlIHRpbWUgd2UgY29tcHV0ZSBpcyB2
YWxpZC4gVGhpcyByZXZlYWxlZCBhIG51bWJlcgorICAgICAgICBvZiB0ZXN0cyB0aGF0IHRyaWVk
IHRvIHBhdXNlIGJlZm9yZSBhbmltYXRpb25zIHN0YXJ0ZWQsIHJlcXVpcmVkIHNvbWUgYW1vdW50
IG9mIHRlc3QgZml4aW5nLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tZHJ0LWFw
aS1tdWx0aXBsZS1rZXlmcmFtZXMuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlv
bi1kcnQtYXBpLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24taGl0LXRlc3Qt
dHJhbnNmb3JtLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24taGl0LXRlc3Qu
aHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanM6Cisg
ICAgICAgIChpc0Nsb3NlRW5vdWdoKToKKyAgICAgICAgKG1hdHJpeFN0cmluZ1RvQXJyYXkpOgor
ICAgICAgICAoY2hlY2tFeHBlY3RlZFZhbHVlKToKKyAgICAgICAgKGVuZFRlc3QpOgorICAgICAg
ICAoc3RhcnRUZXN0KToKKyAgICAgICAgKCk6CisgICAgICAgICh3YWl0Rm9yQW5pbWF0aW9uVG9T
dGFydCk6CisgICAgICAgICogYW5pbWF0aW9ucy90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9u
cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogYW5pbWF0aW9ucy90cmFuc2Zvcm0t
b3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hbmltYXRp
b25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tb3JpZ2luLXZz
LWZ1bmN0aW9ucy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9h
bmltYXRpb25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1kcnQtYXBpLWRlbGF5Lmh0bWw6
CisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1oaXQtdGVzdC10cmFuc2Zvcm0uaHRt
bDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLXNob3J0aGFuZC1kZWxheS5odG1s
OgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzOgorICAg
ICAgICAoaXNDbG9zZUVub3VnaCk6CisgICAgICAgIChjaGVja0V4cGVjdGVkVmFsdWUpOgorICAg
ICAgICAoZW5kVGVzdCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHdhaXRGb3JBbmlt
YXRpb25TdGFydCk6CisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAocnVuVHJhbnNpdGlv
blRlc3QpOgorCiAyMDA5LTA3LTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZHJ0LWFwaS1tdWx0aXBsZS1rZXlmcmFtZXMuaHRtbCBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRydC1hcGktbXVsdGlwbGUta2V5ZnJh
bWVzLmh0bWwKaW5kZXggY2MxNzBiNi4uMDIzZTExZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9hbmltYXRpb24tZHJ0LWFwaS1tdWx0aXBsZS1rZXlmcmFtZXMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1kcnQtYXBpLW11bHRpcGxlLWtleWZy
YW1lcy5odG1sCkBAIC0yNiwxNSArMjYsMjcgQEAKICAgICAgIDYwJSB7IGxlZnQ6IDE1cHg7IH0K
ICAgICAgIHRvIHsgbGVmdDogMjBweDsgfQogICAgIH0KLSAgICAgICAgIAotICAgICA8L3N0eWxl
PgorICAgPC9zdHlsZT4KKworICAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMu
anMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBmdW5j
dGlvbiBzdGFydFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgIAorICAgIGZ1
bmN0aW9uIGFuaW1hdGlvblN0YXJ0ZWQoKQorICAgIHsKICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKCFsYXlvdXRUZXN0Q29udHJvbGxlci5wYXVz
ZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgiYW5pbSIsIDMsICJib3giKSkKICAgICAg
ICAgICB0aHJvdygiQW5pbWF0aW9uIGlzIG5vdCBydW5uaW5nIik7CisKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0YXJ0VGVzdCgpCisgICAgeworICAgICAgd2FpdEZvckFuaW1hdGlvblRvU3RhcnQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpLCBhbmltYXRpb25TdGFydGVkKTsKKyAgICB9CiAg
ICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZHJ0LWFwaS5odG1sIGIvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZHJ0LWFwaS5odG1sCmluZGV4IDA2ZTA2ZWMu
Ljg4NzJhZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRy
dC1hcGkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1kcnQtYXBp
Lmh0bWwKQEAgLTI5LDE0ICsyOSwyNiBAQAogICAgICAgfQogICAgIH0KICAgICAgICAgIAotICAg
ICA8L3N0eWxlPgotICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij4KLSAgICBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgIDwvc3R5bGU+CisKKyAgPHNjcmlw
dCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIg
Y2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgY2hhcnNldD0idXRmLTgiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICBmdW5j
dGlvbiBhbmltYXRpb25TdGFydGVkKCkKKyAgICB7CiAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CiAgICAgICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoImJvdW5jZSIsIDEuMCwgInRhcmdldCIpKQog
ICAgICAgICAgIHRocm93KCJBbmltYXRpb24gaXMgbm90IHJ1bm5pbmciKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgICAgfQogICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0YXJ0VGVzdCgpCisgICAgeworICAgICAgd2FpdEZvckFuaW1hdGlvblRvU3RhcnQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLCBhbmltYXRpb25TdGFydGVkKTsKKyAg
ICB9CiAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24taGl0LXRlc3QtdHJh
bnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1oaXQtdGVzdC10
cmFuc2Zvcm0uaHRtbAppbmRleCBkODA2MzU2Li5jOTZmZjRkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1oaXQtdGVzdC10cmFuc2Zvcm0uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1oaXQtdGVzdC10cmFuc2Zvcm0uaHRtbApA
QCAtMjcsNyArMjcsOSBAQAogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CiAgICAg
ICAgIHBvc2l0aW9uOmFic29sdXRlOwogICAgIH0KLSAgICAgPC9zdHlsZT4KKyAgIDwvc3R5bGU+
CisKKyAgIDxzY3JpcHQgc3JjPSJhbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgIGZ1bmN0aW9uIGNoZWNr
UmVzdWx0KHBvcywgaXNJbikKICAgICAgICAgewpAQCAtNzEsNyArNzMsNyBAQAogICAgICAgICAg
ICAgfQogICAgICAgCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0
Iikuc3R5bGUud2Via2l0QW5pbWF0aW9uTmFtZSA9ICJhbmltIjsKLSAgICAgICAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KGRvVGVzdCwgMCk7CisgICAgICAgICAgICB3YWl0Rm9yQW5pbWF0aW9uVG9T
dGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0JyksIGRvVGVzdCk7CiAgICAgICAg
IH0KICAgIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9hbmltYXRpb24taGl0LXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5p
bWF0aW9uLWhpdC10ZXN0Lmh0bWwKaW5kZXggNmUwYzU2YS4uZmFlMDM5NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24taGl0LXRlc3QuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1oaXQtdGVzdC5odG1sCkBAIC0yNyw3ICsyNyw5
IEBACiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKICAgICAgICAgcG9zaXRpb246
YWJzb2x1dGU7CiAgICAgfQotICAgICA8L3N0eWxlPgorICAgIDwvc3R5bGU+CisKKyAgIDxzY3Jp
cHQgc3JjPSJhbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KHBvcywg
aXNJbikKICAgICAgICAgewpAQCAtNzEsNyArNzMsNyBAQAogICAgICAgICAgICAgfQogICAgICAg
CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iikuc3R5bGUud2Vi
a2l0QW5pbWF0aW9uTmFtZSA9ICJhbmltIjsKLSAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KGRvVGVzdCwgMCk7CisgICAgICAgICAgICB3YWl0Rm9yQW5pbWF0aW9uVG9TdGFydChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0JyksIGRvVGVzdCk7CiAgICAgICAgIH0KICAgIDwvc2Ny
aXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tdGVzdC1oZWxwZXJzLmpzIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tdGVz
dC1oZWxwZXJzLmpzCmluZGV4IDIxNTA0ZDMuLmQwMWI1YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcworKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMKQEAgLTI5LDE2NyArMjksMTY5
IEBAIEZ1bmN0aW9uIHBhcmFtZXRlcnM6CiAgICAgSWYgdGhlIENTUyBwcm9wZXJ0eSBuYW1lIGlz
ICJ3ZWJraXRUcmFuc2Zvcm0uTiIsIGV4cGVjdGVkIHZhbHVlIG11c3QgYmUgYSBudW1iZXIgY29y
cmVzcG9uZGluZyB0byB0aGUgTnRoIGVsZW1lbnQgb2YgdGhlIG1hdHJpeAogCiAqLwotZnVuY3Rp
b24gcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZCwgY2FsbGJhY2ssIGV2ZW50KQorZnVuY3Rpb24g
aXNDbG9zZUVub3VnaChhY3R1YWwsIGRlc2lyZWQsIHRvbGVyYW5jZSkKIHsKLSAgICB2YXIgcmVz
dWx0ID0gIiI7Ci0gICAgdmFyIGhhc1BhdXNlQW5pbWF0aW9uQVBJID0gKCdsYXlvdXRUZXN0Q29u
dHJvbGxlcicgaW4gd2luZG93KSAmJiAoJ3BhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkJyBpbiBsYXlvdXRUZXN0Q29udHJvbGxlcik7Ci0gICAgCi0gICAgZnVuY3Rpb24gaXNDbG9z
ZUVub3VnaChhY3R1YWwsIGRlc2lyZWQsIHRvbGVyYW5jZSkKLSAgICB7Ci0gICAgICAgIHZhciBk
aWZmID0gTWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7Ci0gICAgICAgIHJldHVybiBkaWZmIDw9
IHRvbGVyYW5jZTsKKyAgICB2YXIgZGlmZiA9IE1hdGguYWJzKGFjdHVhbCAtIGRlc2lyZWQpOwor
ICAgIHJldHVybiBkaWZmIDw9IHRvbGVyYW5jZTsKK30KKworZnVuY3Rpb24gbWF0cml4U3RyaW5n
VG9BcnJheShzKQoreworICAgIHZhciBtID0gcy5zcGxpdCgiKCIpOworICAgIG0gPSBtWzFdLnNw
bGl0KCIpIik7CisgICAgcmV0dXJuIG1bMF0uc3BsaXQoIiwiKTsKK30KKworZnVuY3Rpb24gY2hl
Y2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBpbmRleCkKK3sKKyAgICB2YXIgYW5pbWF0aW9uTmFt
ZSA9IGV4cGVjdGVkW2luZGV4XVswXTsKKyAgICB2YXIgdGltZSA9IGV4cGVjdGVkW2luZGV4XVsx
XTsKKyAgICB2YXIgZWxlbWVudElkID0gZXhwZWN0ZWRbaW5kZXhdWzJdOworICAgIHZhciBwcm9w
ZXJ0eSA9IGV4cGVjdGVkW2luZGV4XVszXTsKKyAgICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVj
dGVkW2luZGV4XVs0XTsKKyAgICB2YXIgdG9sZXJhbmNlID0gZXhwZWN0ZWRbaW5kZXhdWzVdOwor
CisgICAgLy8gQ2hlY2sgZm9yIGEgcGFpciBvZiBlbGVtZW50IElkcworICAgIHZhciBjb21wYXJl
RWxlbWVudHMgPSBmYWxzZTsKKyAgICB2YXIgZWxlbWVudElkMjsKKyAgICBpZiAodHlwZW9mIGVs
ZW1lbnRJZCAhPSAic3RyaW5nIikgeworICAgICAgICBpZiAoZWxlbWVudElkLmxlbmd0aCAhPSAy
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIGVsZW1lbnRJZDIg
PSBlbGVtZW50SWRbMV07CisgICAgICAgIGVsZW1lbnRJZCA9IGVsZW1lbnRJZFswXTsKKyAgICAg
ICAgY29tcGFyZUVsZW1lbnRzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoYW5pbWF0aW9uTmFt
ZSAmJiBoYXNQYXVzZUFuaW1hdGlvbkFQSSAmJiAhbGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoYW5pbWF0aW9uTmFtZSwgdGltZSwgZWxlbWVu
dElkKSkgeworICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBhbmltYXRpb24gXCIiICsgYW5pbWF0
aW9uTmFtZSArICJcIiBpcyBub3QgcnVubmluZyIgKyAiPGJyPiI7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgZnVuY3Rpb24gbWF0cml4U3RyaW5nVG9BcnJheShzKQotICAgIHsK
LSAgICAgICAgdmFyIG0gPSBzLnNwbGl0KCIoIik7Ci0gICAgICAgIG0gPSBtWzFdLnNwbGl0KCIp
Iik7Ci0gICAgICAgIHJldHVybiBtWzBdLnNwbGl0KCIsIik7CisgICAgaWYgKGNvbXBhcmVFbGVt
ZW50cyAmJiBhbmltYXRpb25OYW1lICYmIGhhc1BhdXNlQW5pbWF0aW9uQVBJICYmICFsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChhbmltYXRp
b25OYW1lLCB0aW1lLCBlbGVtZW50SWQyKSkgeworICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBh
bmltYXRpb24gXCIiICsgYW5pbWF0aW9uTmFtZSArICJcIiBpcyBub3QgcnVubmluZyIgKyAiPGJy
PiI7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgZnVuY3Rpb24gY2hlY2tFeHBl
Y3RlZFZhbHVlKGV4cGVjdGVkLCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHZhciBhbmltYXRpb25O
YW1lID0gZXhwZWN0ZWRbaW5kZXhdWzBdOwotICAgICAgICB2YXIgdGltZSA9IGV4cGVjdGVkW2lu
ZGV4XVsxXTsKLSAgICAgICAgdmFyIGVsZW1lbnRJZCA9IGV4cGVjdGVkW2luZGV4XVsyXTsKLSAg
ICAgICAgdmFyIHByb3BlcnR5ID0gZXhwZWN0ZWRbaW5kZXhdWzNdOwotICAgICAgICB2YXIgZXhw
ZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkW2luZGV4XVs0XTsKLSAgICAgICAgdmFyIHRvbGVyYW5jZSA9
IGV4cGVjdGVkW2luZGV4XVs1XTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgYSBwYWlyIG9mIGVs
ZW1lbnQgSWRzCi0gICAgICAgIHZhciBjb21wYXJlRWxlbWVudHMgPSBmYWxzZTsKLSAgICAgICAg
dmFyIGVsZW1lbnRJZDI7Ci0gICAgICAgIGlmICh0eXBlb2YgZWxlbWVudElkICE9ICJzdHJpbmci
KSB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudElkLmxlbmd0aCAhPSAyKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGVsZW1lbnRJZDIgPSBl
bGVtZW50SWRbMV07Ci0gICAgICAgICAgICBlbGVtZW50SWQgPSBlbGVtZW50SWRbMF07Ci0gICAg
ICAgICAgICBjb21wYXJlRWxlbWVudHMgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGFuaW1hdGlvbk5hbWUgJiYgaGFzUGF1c2VBbmltYXRpb25BUEkgJiYgIWxheW91dFRlc3RDb250
cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGFuaW1hdGlvbk5hbWUs
IHRpbWUsIGVsZW1lbnRJZCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAtIGFuaW1h
dGlvbiBcIiIgKyBhbmltYXRpb25OYW1lICsgIlwiIGlzIG5vdCBydW5uaW5nIiArICI8YnI+IjsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGNv
bXBhcmVFbGVtZW50cyAmJiBhbmltYXRpb25OYW1lICYmIGhhc1BhdXNlQW5pbWF0aW9uQVBJICYm
ICFsYXlvdXRUZXN0Q29udHJvbGxlci5wYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJ
ZChhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQyKSkgewotICAgICAgICAgICAgcmVzdWx0
ICs9ICJGQUlMIC0gYW5pbWF0aW9uIFwiIiArIGFuaW1hdGlvbk5hbWUgKyAiXCIgaXMgbm90IHJ1
bm5pbmciICsgIjxicj4iOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICB2YXIgY29tcHV0ZWRWYWx1ZSwgY29tcHV0ZWRWYWx1ZTI7Ci0gICAgICAgIHZh
ciBwYXNzID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFwcm9wZXJ0eS5pbmRleE9mKCJ3ZWJraXRUcmFu
c2Zvcm0iKSkgewotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLndlYmtpdFRyYW5zZm9y
bTsKLSAgICAgICAgICAgIGlmIChjb21wYXJlRWxlbWVudHMpIHsKLSAgICAgICAgICAgICAgICBj
b21wdXRlZFZhbHVlMiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGVsZW1lbnRJZDIpKS53ZWJraXRUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgdmFy
IG0xID0gbWF0cml4U3RyaW5nVG9BcnJheShjb21wdXRlZFZhbHVlKTsKLSAgICAgICAgICAgICAg
ICB2YXIgbTIgPSBtYXRyaXhTdHJpbmdUb0FycmF5KGNvbXB1dGVkVmFsdWUyKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdlIGFzc3VtZSB0aGF0IGJvdGgg
bWF0cmljZXMgYXJlIGVpdGhlciBib3RoIDJEIG9yIGJvdGggM0QKLSAgICAgICAgICAgICAgICB2
YXIgY291bnQgPSAoY29tcHV0ZWRWYWx1ZS5zdWJzdHJpbmcoMCwgNykgPT0gIm1hdHJpeDNkIikg
PyAxNiA6IDY7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKHBhcnNlRmxvYXQo
bTFbaV0pLCBtMltpXSwgdG9sZXJhbmNlKTsKKyAgICB2YXIgY29tcHV0ZWRWYWx1ZSwgY29tcHV0
ZWRWYWx1ZTI7CisgICAgdmFyIHBhc3MgPSB0cnVlOworICAgIGlmICghcHJvcGVydHkuaW5kZXhP
Zigid2Via2l0VHJhbnNmb3JtIikpIHsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLndlYmtp
dFRyYW5zZm9ybTsKKyAgICAgICAgaWYgKGNvbXBhcmVFbGVtZW50cykgeworICAgICAgICAgICAg
Y29tcHV0ZWRWYWx1ZTIgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQyKSkud2Via2l0VHJhbnNmb3JtOworICAgICAgICAgICAgdmFyIG0x
ID0gbWF0cml4U3RyaW5nVG9BcnJheShjb21wdXRlZFZhbHVlKTsKKyAgICAgICAgICAgIHZhciBt
MiA9IG1hdHJpeFN0cmluZ1RvQXJyYXkoY29tcHV0ZWRWYWx1ZTIpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBmb3Igbm93IHdlIGFzc3VtZSB0aGF0IGJvdGggbWF0cmljZXMgYXJlIGVp
dGhlciBib3RoIDJEIG9yIGJvdGggM0QKKyAgICAgICAgICAgIHZhciBjb3VudCA9IChjb21wdXRl
ZFZhbHVlLnN1YnN0cmluZygwLCA3KSA9PSAibWF0cml4M2QiKSA/IDE2IDogNjsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIHBh
c3MgPSBpc0Nsb3NlRW5vdWdoKHBhcnNlRmxvYXQobTFbaV0pLCBtMltpXSwgdG9sZXJhbmNlKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXBhc3MpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAic3RyaW5nIikKKyAgICAgICAgICAgICAg
ICBwYXNzID0gKGNvbXB1dGVkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSk7CisgICAgICAgICAgICBl
bHNlIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAibnVtYmVyIikgeworICAgICAgICAgICAg
ICAgIHZhciBtID0gbWF0cml4U3RyaW5nVG9BcnJheShjb21wdXRlZFZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZsb2F0KG1bcGFyc2VJbnQocHJvcGVy
dHkuc3Vic3RyaW5nKDE2KSldKSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG0gPSBtYXRyaXhTdHJpbmdUb0FycmF5
KGNvbXB1dGVkVmFsdWUpOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBleHBlY3Rl
ZFZhbHVlLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3Nl
RW5vdWdoKHBhcnNlRmxvYXQobVtpXSksIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghcGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAic3RyaW5n
IikKLSAgICAgICAgICAgICAgICAgICAgcGFzcyA9IChjb21wdXRlZFZhbHVlID09IGV4cGVjdGVk
VmFsdWUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZFZhbHVlID09
ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBtID0gbWF0cml4U3RyaW5nVG9B
cnJheShjb21wdXRlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VF
bm91Z2gocGFyc2VGbG9hdChtW3BhcnNlSW50KHByb3BlcnR5LnN1YnN0cmluZygxNikpXSksIGV4
cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgdmFyIG0gPSBtYXRyaXhTdHJpbmdUb0FycmF5KGNvbXB1dGVkVmFsdWUp
OwotICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZS5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2go
cGFyc2VGbG9hdChtW2ldKSwgZXhwZWN0ZWRWYWx1ZVtpXSwgdG9sZXJhbmNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghcGFzcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhlaWdodCIpIHsKLSAg
ICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5saW5lSGVpZ2h0KTsKLSAgICAg
ICAgICAgIGlmIChjb21wYXJlRWxlbWVudHMpIHsKLSAgICAgICAgICAgICAgICBjb21wdXRlZFZh
bHVlMiA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGVsZW1lbnRJZDIpKS5saW5lSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBwYXNzID0g
aXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBjb21wdXRlZFZhbHVlMiwgdG9sZXJhbmNlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwYXNzID0g
aXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKLSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBj
b21wdXRlZFN0eWxlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7
Ci0gICAgICAgICAgICBpZiAoY29tcGFyZUVsZW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgdmFy
IGNvbXB1dGVkU3R5bGUyID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbWVudElkMikpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpOwotICAg
ICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUyID0gY29tcHV0ZWRTdHlsZTIuZ2V0RmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKTsKLSAgICAgICAgICAgICAgICBwYXNzID0g
aXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBjb21wdXRlZFZhbHVlMiwgdG9sZXJhbmNlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwYXNzID0g
aXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwog
ICAgICAgICB9Ci0KKyAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09ICJsaW5lSGVpZ2h0Iikgewor
ICAgICAgICBjb21wdXRlZFZhbHVlID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkubGluZUhlaWdodCk7CiAgICAgICAg
IGlmIChjb21wYXJlRWxlbWVudHMpIHsKLSAgICAgICAgICAgIGlmIChwYXNzKQotICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSAiUEFTUyAtIFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZv
ciBcIiIgKyBlbGVtZW50SWQgKyAiXCIgYW5kIFwiIiArIGVsZW1lbnRJZDIgKyAiXCIgZWxlbWVu
dHMgYXQgIiArIHRpbWUgKyAicyBhcmUgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIiICsgIjxi
cj4iOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAt
IFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIg
YW5kIFwiIiArIGVsZW1lbnRJZDIgKyAiXCIgZWxlbWVudHMgYXQgIiArIHRpbWUgKyAicyBzYXc6
IFwiIiArIGNvbXB1dGVkVmFsdWUgKyAiXCIgYW5kIFwiIiArIGNvbXB1dGVkVmFsdWUyICsgIlwi
IHdoaWNoIGFyZSBub3QgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIiICsgIjxicj4iOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHBhc3MpCi0gICAgICAgICAgICAgICAgcmVz
dWx0ICs9ICJQQVNTIC0gXCIiICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVs
ZW1lbnRJZCArICJcIiBlbGVtZW50IGF0ICIgKyB0aW1lICsgInMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogIiArIGV4cGVjdGVkVmFsdWUgKyAiPGJyPiI7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlMIC0gXCIiICsgcHJvcGVydHkgKyAiXCIgcHJvcGVy
dHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBlbGVtZW50IGF0ICIgKyB0aW1lICsgInMgZXhw
ZWN0ZWQ6ICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQgc2F3OiAiICsgY29tcHV0ZWRWYWx1ZSAr
ICI8YnI+IjsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUyID0gcGFyc2VJbnQod2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkMikpLmxpbmVI
ZWlnaHQpOworICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwg
Y29tcHV0ZWRWYWx1ZTIsIHRvbGVyYW5jZSk7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1
ZSwgdG9sZXJhbmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJ
ZCkpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpOworICAgICAgICBjb21wdXRlZFZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpOworICAgICAgICBpZiAoY29tcGFyZUVsZW1lbnRzKSB7CisgICAgICAgICAgICB2YXIgY29t
cHV0ZWRTdHlsZTIgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChlbGVtZW50SWQyKSkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAg
ICAgICBjb21wdXRlZFZhbHVlMiA9IGNvbXB1dGVkU3R5bGUyLmdldEZsb2F0VmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7CisgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3Vn
aChjb21wdXRlZFZhbHVlLCBjb21wdXRlZFZhbHVlMiwgdG9sZXJhbmNlKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZh
bHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGVu
ZFRlc3QoKQotICAgIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
LmlubmVySFRNTCA9IHJlc3VsdDsKLQotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmIChjb21wYXJlRWxlbWVudHMpIHsKKyAgICAgICAgaWYgKHBhc3MpCisgICAgICAgICAg
ICByZXN1bHQgKz0gIlBBU1MgLSBcIiIgKyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIi
ICsgZWxlbWVudElkICsgIlwiIGFuZCBcIiIgKyBlbGVtZW50SWQyICsgIlwiIGVsZW1lbnRzIGF0
ICIgKyB0aW1lICsgInMgYXJlIGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyIiArICI8YnI+IjsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlMIC0gXCIiICsgcHJvcGVy
dHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBhbmQgXCIiICsgZWxl
bWVudElkMiArICJcIiBlbGVtZW50cyBhdCAiICsgdGltZSArICJzIHNhdzogXCIiICsgY29tcHV0
ZWRWYWx1ZSArICJcIiBhbmQgXCIiICsgY29tcHV0ZWRWYWx1ZTIgKyAiXCIgd2hpY2ggYXJlIG5v
dCBjbG9zZSBlbm91Z2ggdG8gZWFjaCBvdGhlciIgKyAiPGJyPiI7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKHBhc3MpCisgICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MgLSBcIiIgKyBwcm9w
ZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsgIlwiIGVsZW1lbnQgYXQg
IiArIHRpbWUgKyAicyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAiICsgZXhwZWN0ZWRWYWx1ZSAr
ICI8YnI+IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlMIC0gXCIi
ICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBlbGVt
ZW50IGF0ICIgKyB0aW1lICsgInMgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQg
c2F3OiAiICsgY29tcHV0ZWRWYWx1ZSArICI8YnI+IjsKICAgICB9Cit9CiAKLSAgICBmdW5jdGlv
biBjaGVja0V4cGVjdGVkVmFsdWVDYWxsYmFjayhleHBlY3RlZCwgaW5kZXgpCi0gICAgewotICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oKSB7IGNoZWNrRXhwZWN0ZWRWYWx1ZShleHBlY3RlZCwgaW5k
ZXgpOyB9OwotICAgIH0KK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAKLSAgICB2YXIgdGVzdFN0
YXJ0ZWQgPSBmYWxzZTsKLSAgICBmdW5jdGlvbiBzdGFydFRlc3QoZXhwZWN0ZWQsIGNhbGxiYWNr
KQotICAgIHsKLSAgICAgICAgaWYgKHRlc3RTdGFydGVkKSByZXR1cm47Ci0gICAgICAgIHRlc3RT
dGFydGVkID0gdHJ1ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CiAKLSAgICAgICAgaWYg
KGNhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2soKTsKK2Z1bmN0aW9uIGNoZWNrRXhwZWN0
ZWRWYWx1ZUNhbGxiYWNrKGV4cGVjdGVkLCBpbmRleCkKK3sKKyAgICByZXR1cm4gZnVuY3Rpb24o
KSB7IGNoZWNrRXhwZWN0ZWRWYWx1ZShleHBlY3RlZCwgaW5kZXgpOyB9OworfQogCi0gICAgICAg
IHZhciBtYXhUaW1lID0gMDsKK3ZhciB0ZXN0U3RhcnRlZCA9IGZhbHNlOworZnVuY3Rpb24gc3Rh
cnRUZXN0KGV4cGVjdGVkLCBjYWxsYmFjaykKK3sKKyAgICBpZiAodGVzdFN0YXJ0ZWQpCisgICAg
ICAgIHJldHVybjsKKyAgICB0ZXN0U3RhcnRlZCA9IHRydWU7CiAKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGFuaW1h
dGlvbk5hbWUgPSBleHBlY3RlZFtpXVswXTsKLSAgICAgICAgICAgIHZhciB0aW1lID0gZXhwZWN0
ZWRbaV1bMV07CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjaygpOwogCi0gICAg
ICAgICAgICAvLyBXZSBjYW4gb25seSB1c2UgdGhlIGFuaW1hdGlvbiBmYXN0LWZvcndhcmQgbWVj
aGFuaXNtIGlmIHRoZXJlJ3MgYW4gYW5pbWF0aW9uIG5hbWUKLSAgICAgICAgICAgIC8vIGFuZCBE
UlQgaW1wbGVtZW50cyBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgpCi0gICAg
ICAgICAgICBpZiAoYW5pbWF0aW9uTmFtZSAmJiBoYXNQYXVzZUFuaW1hdGlvbkFQSSkKLSAgICAg
ICAgICAgICAgICBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGkpOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWUgPiBtYXhUaW1lKQotICAgICAgICAgICAg
ICAgICAgICBtYXhUaW1lID0gdGltZTsKKyAgICB2YXIgbWF4VGltZSA9IDA7CiAKLSAgICAgICAg
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjaGVja0V4cGVjdGVkVmFsdWVDYWxsYmFjayhleHBl
Y3RlZCwgaSksIHRpbWUgKiAxMDAwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGFu
aW1hdGlvbk5hbWUgPSBleHBlY3RlZFtpXVswXTsKKyAgICAgICAgdmFyIHRpbWUgPSBleHBlY3Rl
ZFtpXVsxXTsKIAotICAgICAgICBpZiAobWF4VGltZSA+IDApCi0gICAgICAgICAgICB3aW5kb3cu
c2V0VGltZW91dChlbmRUZXN0LCBtYXhUaW1lICogMTAwMCArIDUwKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAvLyBXZSBjYW4gb25seSB1c2UgdGhlIGFu
aW1hdGlvbiBmYXN0LWZvcndhcmQgbWVjaGFuaXNtIGlmIHRoZXJlJ3MgYW4gYW5pbWF0aW9uIG5h
bWUKKyAgICAgICAgLy8gYW5kIERSVCBpbXBsZW1lbnRzIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKCkKKyAgICAgICAgaWYgKGFuaW1hdGlvbk5hbWUgJiYgaGFzUGF1c2VBbmlt
YXRpb25BUEkpCisgICAgICAgICAgICBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGkpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aW1lID4gbWF4VGltZSkKKyAgICAgICAg
ICAgICAgICBtYXhUaW1lID0gdGltZTsKKworICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQo
Y2hlY2tFeHBlY3RlZFZhbHVlQ2FsbGJhY2soZXhwZWN0ZWQsIGkpLCB0aW1lICogMTAwMCk7Cisg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICBpZiAobWF4VGltZSA+IDApCisgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGVuZFRlc3QsIG1heFRpbWUgKiAxMDAwICsgNTApOworICAgIGVsc2UK
KyAgICAgICAgZW5kVGVzdCgpOworfQorCit2YXIgcmVzdWx0ID0gIiI7Cit2YXIgaGFzUGF1c2VB
bmltYXRpb25BUEkgPSAoJ2xheW91dFRlc3RDb250cm9sbGVyJyBpbiB3aW5kb3cpICYmICgncGF1
c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQnIGluIGxheW91dFRlc3RDb250cm9sbGVy
KTsKKworZnVuY3Rpb24gcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZCwgY2FsbGJhY2ssIGV2ZW50
LCBkb1BpeGVsVGVzdCkKK3sKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYg
KCFkb1BpeGVsVGVzdCkKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KICAgICAKQEAgLTIwMSw1ICsyMDMsMTQgQEAgZnVuY3Rpb24gcnVuQW5pbWF0aW9uVGVzdChl
eHBlY3RlZCwgY2FsbGJhY2ssIGV2ZW50KQogICAgICAgICBldmVudCA9ICJ3ZWJraXRBbmltYXRp
b25TdGFydCI7CiAgICAgZWxzZSBpZiAoZXZlbnQgPT0gImxvYWQiKQogICAgICAgICB0YXJnZXQg
PSB3aW5kb3c7Ci0gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZ1bmN0aW9uKCkg
eyBzdGFydFRlc3QoZXhwZWN0ZWQsIGNhbGxiYWNrKTsgfSwgZmFsc2UpOworICAgIHRhcmdldC5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jdGlvbigpIHsgCisgICAgICAgIHdpbmRvdy5zZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzdGFydFRlc3QoZXhwZWN0ZWQsIGNhbGxiYWNrKTsgfSwgMCk7
IC8vIGRlbGF5IHRvIGdpdmUgaGFyZHdhcmUgYW5pbWF0aW9ucyBhIGNoYW5jZSB0byBzdGFydAor
ICAgIH0sIGZhbHNlKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckFuaW1hdGlvblRvU3RhcnQoZWxl
bWVudCwgY2FsbGJhY2spCit7CisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRB
bmltYXRpb25TdGFydCcsIGZ1bmN0aW9uKCkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChj
YWxsYmFjaywgMCk7IC8vIGRlbGF5IHRvIGdpdmUgaGFyZHdhcmUgYW5pbWF0aW9ucyBhIGNoYW5j
ZSB0byBzdGFydAorICAgIH0sIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMuaHRtbCBiL0xheW91dFRlc3Rz
L2FuaW1hdGlvbnMvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMuaHRtbAppbmRleCBlNjg3
NGMyLi5hM2M0ZTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zZm9y
bS1vcmlnaW4tdnMtZnVuY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90
cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1sCkBAIC01NywxMCArNTcsOCBAQAogICAg
IDwvc3R5bGU+CiAgICAgCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgICAgfQogCiAgICAgICByZXN1bHQgPSAiIjsKICAgICAgIGNvbnN0
IGRlZmF1bHRUb2xlcmFuY2UgPSAwLjI7CkBAIC0xMDMsMTAgKzEwMSwxMyBAQAogICAgICAgICAg
IGlmIChwYXNzKQogICAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTKGVsZW1lbnQgJyIraWQrIicg
bWF0Y2hlcyBleHBlY3RlZCB2YWx1ZSk8YnI+IjsKICAgICAgIH0KLQorICAgICAgCiAgICAgICBm
dW5jdGlvbiBzdGFydCgpCiAgICAgICB7Ci0gICAgICAgICAgc2V0VGltZW91dCgic25hcHNob3Qo
J2IxJyk7IHNuYXBzaG90KCdiMicpOyIsIDI1MCk7CisgICAgICAgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzbmFwc2hvdCgnYjEnKTsKKyAgICAgICAgICAg
IHNuYXBzaG90KCdiMicpOworICAgICAgICAgIH0sIDI1MCk7CiAKICAgICAgICAgICB3aW5kb3cu
c2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hbmltYXRpb25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25z
LWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FuaW1hdGlvbnMv
dHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMtZXhwZWN0ZWQuY2hlY2tzdW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhN2U2MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hbmltYXRpb25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVu
Y3Rpb25zLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0wLDAgKzEgQEAKK2E2MTVjYjgzYWVkYzllOTVi
ZThkZWFiOTg5MTAyNmIzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FuaW1hdGlvbnMvdHJhbnNmb3JtLW9yaWdpbi12cy1m
dW5jdGlvbnMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FuaW1hdGlv
bnMvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZjA4YzQKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBh
bmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tb3JpZ2lu
LXZzLWZ1bmN0aW9ucy1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYW5pbWF0aW9ucy90cmFuc2Zv
cm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNWU2MzczMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hbmltYXRpb25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDUyCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg1MgorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDM2CisgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAyNzd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzc6ICJQ
QVNTKGVsZW1lbnQgJ2IxJyBtYXRjaGVzIGV4cGVjdGVkIHZhbHVlKSIKKyAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMjc3LDApIHNpemUgMHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMTgpIHNpemUgMjc3eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRo
IDI3NzogIlBBU1MoZWxlbWVudCAnYjInIG1hdGNoZXMgZXhwZWN0ZWQgdmFsdWUpIgorICAgICAg
ICBSZW5kZXJCUiB7QlJ9IGF0ICgyNzcsMTgpIHNpemUgMHgxOAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKK2xheWVyIGF0ICgzMDAsODApIHNpemUgMjAweDIwMAorICBSZW5kZXJCbG9jayAo
cG9zaXRpb25lZCkge0RJVn0gYXQgKDMwMCw4MCkgc2l6ZSAyMDB4MjAwIFtiZ2NvbG9yPSMyMjg4
MjJdCitsYXllciBhdCAoMzAwLDMyMCkgc2l6ZSAyMDB4MjAwCisgIFJlbmRlckJsb2NrIChwb3Np
dGlvbmVkKSB7RElWfSBhdCAoMzAwLDMyMCkgc2l6ZSAyMDB4MjAwIFtiZ2NvbG9yPSMyMjg4MjJd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWRydC1hcGkt
ZGVsYXkuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZHJ0LWFwaS1k
ZWxheS5odG1sCmluZGV4IDRiYmM4ZGIuLjU4OWY1OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZHJ0LWFwaS1kZWxheS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZHJ0LWFwaS1kZWxheS5odG1sCkBAIC0yMCw3ICsy
MCw4IEBACiAgICAgLm1vdmVkIHsKICAgICAgIGxlZnQ6IDIwMHB4OwogICAgIH0KLSAgICAgPC9z
dHlsZT4KKyAgIDwvc3R5bGU+CisgICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi10ZXN0LWhlbHBl
cnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0Pgog
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICBm
dW5jdGlvbiBlbmRUZXN0KCkgewogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewpAQCAtNDIsNyArNDMsNyBAQAogICAgICAgfQogICAgICAgCiAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuY2xhc3NOYW1lID0gIm1vdmVkIjsKLSAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KGVuZFRlc3QsIDApOworICAgICAgd2FpdEZvckFuaW1hdGlvblN0YXJ0KGVu
ZFRlc3QsIDEpOwogICAgIH0KICAgIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1oaXQtdGVzdC10cmFuc2Zvcm0uaHRtbCBi
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24taGl0LXRlc3QtdHJhbnNmb3JtLmh0
bWwKaW5kZXggMTJiNzk5OC4uODE5MTgxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbi1oaXQtdGVzdC10cmFuc2Zvcm0uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWhpdC10ZXN0LXRyYW5zZm9ybS5odG1sCkBAIC0yNiw2
ICsyNiw3IEBACiAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOwogICAgIH0KICAgICAgPC9zdHls
ZT4KKyAgIDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAgICAgICBmdW5jdGlvbiBjaGVj
a1Jlc3VsdChwb3MsIGlzSW4pCiAgICAgICAgIHsKQEAgLTY5LDcgKzcwLDcgQEAKICAgICAgICAg
ICAgIH0KICAgICAgIAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dCIpLnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVYKDMwMHB4KSI7Ci0gICAgICAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChkb1Rlc3QsIDApOworICAgICAgICAgICAgd2FpdEZvckFu
aW1hdGlvblN0YXJ0KGRvVGVzdCk7CiAgICAgICAgIH0KICAgIDwvc2NyaXB0PgogPC9oZWFkPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1zaG9ydGhhbmQt
ZGVsYXkuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tc2hvcnRoYW5k
LWRlbGF5Lmh0bWwKaW5kZXggYjExYTA4Yy4uNThkNWNiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1zaG9ydGhhbmQtZGVsYXkuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLXNob3J0aGFuZC1kZWxheS5odG1sCkBAIC0y
MSw3ICsyMSw4IEBACiAgICAgLm1vdmVkIHsKICAgICAgIGxlZnQ6IDIwMHB4OwogICAgIH0KLSAg
ICAgPC9zdHlsZT4KKyAgIDwvc3R5bGU+CisgICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi10ZXN0
LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2Ny
aXB0PgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
ICAgICBmdW5jdGlvbiBlbmRUZXN0KCkgewogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewpAQCAtNDMsNyArNDQsNyBAQAogICAgICAgfQogICAgICAgCiAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuY2xhc3NOYW1lID0gIm1vdmVkIjsKLSAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGVuZFRlc3QsIDApOworICAgICAgd2FpdEZvckFuaW1hdGlvblN0
YXJ0KGVuZFRlc3QsIDEpOwogICAgIH0KICAgIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMgYi9M
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcwppbmRleCA1
Y2FhMWI1Li5hYTY3OWJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFu
c2l0aW9uLXRlc3QtaGVscGVycy5qcworKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFu
c2l0aW9uLXRlc3QtaGVscGVycy5qcwpAQCAtMjYsMTUwICsyNiwxNjUgQEAgZnVuY3Rpb24gcm91
bmROdW1iZXIobnVtLCBkZWNpbWFsUGxhY2VzKQogICByZXR1cm4gTWF0aC5yb3VuZChudW0gKiBN
YXRoLnBvdygxMCwgZGVjaW1hbFBsYWNlcykpIC8gTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMp
OwogfQogCi1mdW5jdGlvbiBydW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZCwgY2FsbGJhY2ssIHVz
ZVBhdXNlQVBJKQorZnVuY3Rpb24gaXNDbG9zZUVub3VnaChhY3R1YWwsIGRlc2lyZWQsIHRvbGVy
YW5jZSkKIHsKLSAgICB2YXIgcmVzdWx0ID0gIiI7Ci0gICAgdmFyIGhhc1BhdXNlVHJhbnNpdGlv
bkFQSSA9ICgnbGF5b3V0VGVzdENvbnRyb2xsZXInIGluIHdpbmRvdykgJiYgKCdwYXVzZVRyYW5z
aXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQnIGluIGxheW91dFRlc3RDb250cm9sbGVyKTsKLSAg
ICAKLSAgICBmdW5jdGlvbiBpc0Nsb3NlRW5vdWdoKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNl
KQotICAgIHsKLSAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsK
LSAgICAgICAgcmV0dXJuIGRpZmYgPD0gdG9sZXJhbmNlOwotICAgIH0KKyAgICB2YXIgZGlmZiA9
IE1hdGguYWJzKGFjdHVhbCAtIGRlc2lyZWQpOworICAgIHJldHVybiBkaWZmIDw9IHRvbGVyYW5j
ZTsKK30KIAotICAgIGZ1bmN0aW9uIGNoZWNrRXhwZWN0ZWRWYWx1ZShleHBlY3RlZCwgaW5kZXgp
Ci0gICAgewotICAgICAgICB2YXIgdGltZSA9IGV4cGVjdGVkW2luZGV4XVswXTsKLSAgICAgICAg
dmFyIGVsZW1lbnRJZCA9IGV4cGVjdGVkW2luZGV4XVsxXTsKLSAgICAgICAgdmFyIHByb3BlcnR5
ID0gZXhwZWN0ZWRbaW5kZXhdWzJdOwotICAgICAgICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVj
dGVkW2luZGV4XVszXTsKLSAgICAgICAgdmFyIHRvbGVyYW5jZSA9IGV4cGVjdGVkW2luZGV4XVs0
XTsKLQotICAgICAgICB2YXIgY29tcHV0ZWRWYWx1ZTsKLSAgICAgICAgdmFyIHBhc3MgPSBmYWxz
ZTsKLSAgICAgICAgdmFyIHRyYW5zZm9ybVJlZ0V4cCA9IC9eLXdlYmtpdC10cmFuc2Zvcm0oXC5c
ZCspPyQvOwotICAgICAgICBpZiAodHJhbnNmb3JtUmVnRXhwLnRlc3QocHJvcGVydHkpKSB7Ci0g
ICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkud2Via2l0VHJhbnNmb3JtOwotICAgICAgICAg
ICAgaWYgKHR5cGVvZiBleHBlY3RlZFZhbHVlID09ICJzdHJpbmciKQotICAgICAgICAgICAgICAg
IHBhc3MgPSAoY29tcHV0ZWRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKHR5cGVvZiBleHBlY3RlZFZhbHVlID09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIG0gPSBjb21wdXRlZFZhbHVlLnNwbGl0KCIoIik7Ci0gICAgICAgICAgICAgICAgdmFy
IG0gPSBtWzFdLnNwbGl0KCIsIik7Ci0gICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91
Z2gocGFyc2VGbG9hdChtW3BhcnNlSW50KHByb3BlcnR5LnN1YnN0cmluZygxOCkpXSksIGV4cGVj
dGVkVmFsdWUsIHRvbGVyYW5jZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHZhciBtID0gY29tcHV0ZWRWYWx1ZS5zcGxpdCgiKCIpOwotICAgICAgICAgICAgICAgIHZh
ciBtID0gbVsxXS5zcGxpdCgiLCIpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBl
eHBlY3RlZFZhbHVlLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MgPSBp
c0Nsb3NlRW5vdWdoKHBhcnNlRmxvYXQobVtpXSksIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5j
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFzcykKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhlaWdodCIpIHsKLSAgICAgICAgICAgIGNvbXB1dGVk
VmFsdWUgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQpKS5saW5lSGVpZ2h0KTsKLSAgICAgICAgICAgIHBhc3MgPSBpc0Ns
b3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7CitmdW5j
dGlvbiBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGluZGV4KQoreworICAgIHZhciB0aW1l
ID0gZXhwZWN0ZWRbaW5kZXhdWzBdOworICAgIHZhciBlbGVtZW50SWQgPSBleHBlY3RlZFtpbmRl
eF1bMV07CisgICAgdmFyIHByb3BlcnR5ID0gZXhwZWN0ZWRbaW5kZXhdWzJdOworICAgIHZhciBl
eHBlY3RlZFZhbHVlID0gZXhwZWN0ZWRbaW5kZXhdWzNdOworICAgIHZhciB0b2xlcmFuY2UgPSBl
eHBlY3RlZFtpbmRleF1bNF07CisKKyAgICB2YXIgY29tcHV0ZWRWYWx1ZTsKKyAgICB2YXIgcGFz
cyA9IGZhbHNlOworICAgIHZhciB0cmFuc2Zvcm1SZWdFeHAgPSAvXi13ZWJraXQtdHJhbnNmb3Jt
KFwuXGQrKT8kLzsKKyAgICBpZiAodHJhbnNmb3JtUmVnRXhwLnRlc3QocHJvcGVydHkpKSB7Cisg
ICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS53ZWJraXRUcmFuc2Zvcm07CisgICAgICAgIGlmICh0
eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAic3RyaW5nIikKKyAgICAgICAgICAgIHBhc3MgPSAoY29t
cHV0ZWRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZW9mIGV4
cGVjdGVkVmFsdWUgPT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHZhciBtID0gY29tcHV0ZWRW
YWx1ZS5zcGxpdCgiKCIpOworICAgICAgICAgICAgdmFyIG0gPSBtWzFdLnNwbGl0KCIsIik7Cisg
ICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZsb2F0KG1bcGFyc2VJbnQocHJv
cGVydHkuc3Vic3RyaW5nKDE4KSldKSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkuZ2V0UHJvcGVy
dHlDU1NWYWx1ZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZS5jc3NW
YWx1ZVR5cGUgPT0gQ1NTVmFsdWUuQ1NTX1ZBTFVFX0xJU1QpIHsKLSAgICAgICAgICAgICAgICAv
LyBGb3Igbm93LCBhc3N1bWUgdGhhdCB2YWx1ZSBsaXN0cyBhcmUgc2ltcGxlIGxpc3RzIG9mIG51
bWJlciB2YWx1ZXMgKGUuZy4gdHJhbnNmb3JtLW9yaWdpbikKLSAgICAgICAgICAgICAgICB2YXIg
dmFsdWVzID0gW107Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wdXRl
ZFN0eWxlLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGNv
bXB1dGVkU3R5bGVbaV0uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVS
KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB2
YWx1ZXMuam9pbignLCcpOwotICAgICAgICAgICAgICAgIHBhc3MgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgICAgICAgICBwYXNzICY9IGlzQ2xvc2VFbm91Z2godmFsdWVzW2ldLCBleHBlY3RlZFZhbHVl
W2ldLCB0b2xlcmFuY2UpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wdXRlZFN0eWxlLmNz
c1ZhbHVlVHlwZSA9PSBDU1NWYWx1ZS5DU1NfUFJJTUlUSVZFX1ZBTFVFKSB7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoIChjb21wdXRlZFN0eWxlLnByaW1pdGl2ZVR5cGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZS5DU1NfU1RSSU5HOgotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IGNvbXB1dGVkU3R5bGUuZ2V0U3RyaW5nVmFsdWUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBjb21wdXRlZFZhbHVlID09IGV4cGVj
dGVkVmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZS5DU1NfUkdCQ09MT1I6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcmdiQ29sb3IgPSBjb21wdXRlZFN0eWxlLmdldFJHQkNvbG9yVmFsdWUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBbcmdiQ29sb3IucmVk
LmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYkNvbG9yLmdyZWVuLmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJnYkNvbG9yLmJsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZS5DU1NfTlVNQkVSKV07IC8vIGFscGhhIGlzIG5vdCBleHBvc2VkIHRvIEpTCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwYXNzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhc3MgJj0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlW2ldLCBleHBlY3RlZFZhbHVlW2ld
LCB0b2xlcmFuY2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX1JFQ1Q6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gY29tcHV0ZWRTdHlsZS5nZXRSZWN0VmFsdWUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBjb21wdXRlZFZhbHVlID09IGV4cGVjdGVk
VmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBjb21w
dXRlZFN0eWxlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVl
LCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHZhciBtID0gY29tcHV0ZWRWYWx1ZS5zcGxpdCgiKCIpOworICAgICAgICAgICAgdmFyIG0g
PSBtWzFdLnNwbGl0KCIsIik7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXhwZWN0ZWRW
YWx1ZS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdo
KHBhcnNlRmxvYXQobVtpXSksIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFwYXNzKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT0gImxpbmVIZWlnaHQi
KSB7CisgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5saW5lSGVpZ2h0KTsKKyAg
ICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwg
dG9sZXJhbmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkp
LmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpOworICAgICAgICBpZiAoY29tcHV0ZWRTdHls
ZS5jc3NWYWx1ZVR5cGUgPT0gQ1NTVmFsdWUuQ1NTX1ZBTFVFX0xJU1QpIHsKKyAgICAgICAgICAg
IC8vIEZvciBub3csIGFzc3VtZSB0aGF0IHZhbHVlIGxpc3RzIGFyZSBzaW1wbGUgbGlzdHMgb2Yg
bnVtYmVyIHZhbHVlcyAoZS5nLiB0cmFuc2Zvcm0tb3JpZ2luKQorICAgICAgICAgICAgdmFyIHZh
bHVlcyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wdXRlZFN0eWxl
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goY29tcHV0ZWRTdHls
ZVtpXS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB2YWx1ZXMuam9pbignLCcpOwor
ICAgICAgICAgICAgcGFzcyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHZhbHVlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBwYXNzICY9IGlzQ2xvc2VFbm91
Z2godmFsdWVzW2ldLCBleHBlY3RlZFZhbHVlW2ldLCB0b2xlcmFuY2UpOworICAgICAgICB9IGVs
c2UgaWYgKGNvbXB1dGVkU3R5bGUuY3NzVmFsdWVUeXBlID09IENTU1ZhbHVlLkNTU19QUklNSVRJ
VkVfVkFMVUUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29tcHV0ZWRTdHlsZS5wcmltaXRpdmVU
eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZS5DU1NfU1RSSU5H
OgorICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gY29tcHV0ZWRTdHlsZS5nZXRT
dHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBwYXNzID0gY29tcHV0ZWRWYWx1ZSA9
PSBleHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlLkNTU19SR0JDT0xPUjoKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIHJnYkNvbG9yID0gY29tcHV0ZWRTdHlsZS5nZXRSR0JDb2xvclZhbHVlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBbcmdiQ29sb3IucmVkLmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmdiQ29sb3IuZ3JlZW4uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZS5DU1NfTlVNQkVSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZ2JDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJF
UildOyAvLyBhbHBoYSBpcyBub3QgZXhwb3NlZCB0byBKUworICAgICAgICAgICAgICAgICAgICBw
YXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyAr
K2kpCisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICY9IGlzQ2xvc2VFbm91Z2goY29tcHV0
ZWRWYWx1ZVtpXSwgZXhwZWN0ZWRWYWx1ZVtpXSwgdG9sZXJhbmNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZS5DU1Nf
UkVDVDoKKyAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IGNvbXB1dGVkU3R5bGUu
Z2V0UmVjdFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBjb21wdXRlZFZhbHVl
ID09IGV4cGVjdGVkVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBjb21w
dXRlZFN0eWxlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7Cisg
ICAgICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4
cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAg
ICAgICBpZiAocGFzcykKLSAgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUyAtIFwiIiArIHByb3Bl
cnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIgZWxlbWVudCBhdCAi
ICsgdGltZSArICJzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86ICIgKyBleHBlY3RlZFZhbHVlICsg
Ijxicj4iOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBcIiIg
KyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsgIlwiIGVsZW1l
bnQgYXQgIiArIHRpbWUgKyAicyBleHBlY3RlZDogIiArIGV4cGVjdGVkVmFsdWUgKyAiIGJ1dCBz
YXc6ICIgKyBjb21wdXRlZFZhbHVlICsgIjxicj4iOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGVu
ZFRlc3QoKQotICAgIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
LmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICBpZiAocGFzcykKKyAgICAgICAgcmVzdWx0ICs9ICJQ
QVNTIC0gXCIiICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCAr
ICJcIiBlbGVtZW50IGF0ICIgKyB0aW1lICsgInMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogIiAr
IGV4cGVjdGVkVmFsdWUgKyAiPGJyPiI7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgKz0gIkZB
SUwgLSBcIiIgKyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsg
IlwiIGVsZW1lbnQgYXQgIiArIHRpbWUgKyAicyBleHBlY3RlZDogIiArIGV4cGVjdGVkVmFsdWUg
KyAiIGJ1dCBzYXc6ICIgKyBjb21wdXRlZFZhbHVlICsgIjxicj4iOworfQogCi0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgfQorZnVuY3Rpb24gZW5kVGVzdCgpCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKIAot
ICAgIGZ1bmN0aW9uIGNoZWNrRXhwZWN0ZWRWYWx1ZUNhbGxiYWNrKGV4cGVjdGVkLCBpbmRleCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsgY2hlY2tFeHBlY3RlZFZhbHVlKGV4
cGVjdGVkLCBpbmRleCk7IH07Ci0gICAgfQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KIAot
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoZXhwZWN0ZWQpCi0gICAgewotICAgICAgICB2YXIgbWF4VGlt
ZSA9IDA7CitmdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFsdWVDYWxsYmFjayhleHBlY3RlZCwgaW5k
ZXgpCit7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0
ZWQsIGluZGV4KTsgfTsKK30KIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVk
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgdGltZSA9IGV4cGVjdGVkW2ldWzBdOwot
ICAgICAgICAgICAgdmFyIGVsZW1lbnRJZCA9IGV4cGVjdGVkW2ldWzFdOwotICAgICAgICAgICAg
dmFyIHByb3BlcnR5ID0gZXhwZWN0ZWRbaV1bMl07Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnR5
LmluZGV4T2YoIi13ZWJraXQtdHJhbnNmb3JtIikpCitmdW5jdGlvbiBydW5UZXN0KGV4cGVjdGVk
LCB1c2VQYXVzZUFQSSkKK3sKKyAgICB2YXIgbWF4VGltZSA9IDA7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgdGltZSA9IGV4cGVj
dGVkW2ldWzBdOworICAgICAgICB2YXIgZWxlbWVudElkID0gZXhwZWN0ZWRbaV1bMV07CisgICAg
ICAgIHZhciBwcm9wZXJ0eSA9IGV4cGVjdGVkW2ldWzJdOworICAgICAgICBpZiAoIXByb3BlcnR5
LmluZGV4T2YoIi13ZWJraXQtdHJhbnNmb3JtIikpCiAgICAgICAgICAgICBwcm9wZXJ0eSA9ICIt
d2Via2l0LXRyYW5zZm9ybSI7CiAKLSAgICAgICAgICAgIC8vIFdlIGNhbiBvbmx5IHVzZSB0aGUg
dHJhbnNpdGlvbiBmYXN0LWZvcndhcmQgbWVjaGFuaXNtIGlmIERSVCBpbXBsZW1lbnRzIHBhdXNl
VHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgpCi0gICAgICAgICAgICBpZiAoaGFzUGF1
c2VUcmFuc2l0aW9uQVBJICYmIHVzZVBhdXNlQVBJKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIucGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKHByb3Bl
cnR5LCB0aW1lLCBlbGVtZW50SWQpOwotICAgICAgICAgICAgICAgIGNoZWNrRXhwZWN0ZWRWYWx1
ZShleHBlY3RlZCwgaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAodGltZSA+IG1heFRpbWUpCi0gICAgICAgICAgICAgICAgICAgIG1heFRp
bWUgPSB0aW1lOworICAgICAgICAvLyBXZSBjYW4gb25seSB1c2UgdGhlIHRyYW5zaXRpb24gZmFz
dC1mb3J3YXJkIG1lY2hhbmlzbSBpZiBEUlQgaW1wbGVtZW50cyBwYXVzZVRyYW5zaXRpb25BdFRp
bWVPbkVsZW1lbnRXaXRoSWQoKQorICAgICAgICBpZiAoaGFzUGF1c2VUcmFuc2l0aW9uQVBJICYm
IHVzZVBhdXNlQVBJKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5wYXVzZVRy
YW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQocHJvcGVydHksIHRpbWUsIGVsZW1lbnRJZCk7
CisgICAgICAgICAgICBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKHRpbWUgPiBtYXhUaW1lKQorICAgICAgICAgICAgICAg
IG1heFRpbWUgPSB0aW1lOwogCi0gICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2hl
Y2tFeHBlY3RlZFZhbHVlQ2FsbGJhY2soZXhwZWN0ZWQsIGkpLCB0aW1lICogMTAwMCk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjaGVja0V4cGVjdGVkVmFs
dWVDYWxsYmFjayhleHBlY3RlZCwgaSksIHRpbWUgKiAxMDAwKTsKICAgICAgICAgfQotCi0gICAg
ICAgIGlmIChtYXhUaW1lID4gMCkKLSAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGVuZFRl
c3QsIG1heFRpbWUgKiAxMDAwICsgNTApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbmRU
ZXN0KCk7CiAgICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdChleHBlY3RlZCwgY2Fs
bGJhY2spCi0gICAgewotICAgICAgICBpZiAoY2FsbGJhY2spCisKKyAgICBpZiAobWF4VGltZSA+
IDApCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGVuZFRlc3QsIG1heFRpbWUgKiAxMDAwICsg
NTApOworICAgIGVsc2UKKyAgICAgICAgZW5kVGVzdCgpOworfQorCitmdW5jdGlvbiB3YWl0Rm9y
QW5pbWF0aW9uU3RhcnQoY2FsbGJhY2ssIGRlbGF5KQoreworICAgIHZhciBkZWxheVRpbWVvdXQg
PSBkZWxheSA/IDEwMDAgKiBkZWxheSArIDEwIDogMDsKKyAgICAvLyBXaHkgdGhlIHR3byBzZXRU
aW1lb3V0cz8gV2VsbCwgZm9yIGhhcmR3YXJlIGFuaW1hdGlvbnMgd2UgbmVlZCB0byBlbnN1cmUg
dGhhdCB0aGUgaGFyZHdhcmUgYW5pbWF0aW9uCisgICAgLy8gaGFzIHN0YXJ0ZWQgYmVmb3JlIHdl
IHRyeSB0byBwYXVzZSBpdCwgYW5kIHRpbWVycyBmaXJlIGJlZm9yZSBhbmltYXRpb25zIGdldCBj
b21taXR0ZWQgaW4gdGhlIHJ1bmxvb3AuCisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
Y2FsbGJhY2soKTsKKyAgICAgICAgfSwgMCk7CisgICAgfSwgZGVsYXlUaW1lb3V0KTsKK30KIAot
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgcnVuVGVzdChleHBlY3RlZCk7
IH0sIDApOwotICAgIH0KK2Z1bmN0aW9uIHN0YXJ0VGVzdChleHBlY3RlZCwgdXNlUGF1c2VBUEks
IGNhbGxiYWNrKQoreworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJhY2soKTsKKwor
ICAgIHdhaXRGb3JBbmltYXRpb25TdGFydChmdW5jdGlvbigpIHsKKyAgICAgICAgcnVuVGVzdChl
eHBlY3RlZCwgdXNlUGF1c2VBUEkpOworICAgIH0pOworfQorCit2YXIgcmVzdWx0ID0gIiI7Cit2
YXIgaGFzUGF1c2VUcmFuc2l0aW9uQVBJOworCitmdW5jdGlvbiBydW5UcmFuc2l0aW9uVGVzdChl
eHBlY3RlZCwgY2FsbGJhY2ssIHVzZVBhdXNlQVBJLCBkb1BpeGVsVGVzdCkKK3sKKyAgICBoYXNQ
YXVzZVRyYW5zaXRpb25BUEkgPSAoJ2xheW91dFRlc3RDb250cm9sbGVyJyBpbiB3aW5kb3cpICYm
ICgncGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkJyBpbiBsYXlvdXRUZXN0Q29u
dHJvbGxlcik7CiAgICAgCiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICgh
ZG9QaXhlbFRlc3QpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKCFleHBlY3RlZCkKICAgICAgICAgdGhyb3coIkV4cGVjdGVkIHJlc3Vs
dHMgYXJlIG1pc3NpbmchIik7CiAgICAgCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBmdW5jdGlvbigpIHsgc3RhcnRUZXN0KGV4cGVjdGVkLCBjYWxsYmFjayk7IH0sIGZhbHNl
KTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeyBzdGFy
dFRlc3QoZXhwZWN0ZWQsIHVzZVBhdXNlQVBJLCBjYWxsYmFjayk7IH0sIGZhbHNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk3
NzYwZi4uMzNiMGJmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wNy0yMyAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIHRoZSBEUlQgQVBJcyB0byBwYXVzZSB0cmFuc2l0aW9ucyBh
bmQgYW5pbWF0aW9ucyB3b3JrIGZvciBhY2NlbGVyYXRlZCBhbmltYXRpb25zCisgICAgICAgIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2Mjc+CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82NDQyOTMyPgorCisgICAgICAgIEZpeCB0aGUgJ3BhdXNlQW5pbWF0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkJyBhbmQgJ3BhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVu
dFdpdGhJZCcgQVBJcworICAgICAgICBhdmFpbGFibGUgdG8gTGF5b3V0VGVzdHMgdG8gd29yayB3
aXRoIGFjY2VsZXJhdGVkIGFuaW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zLiBEb25lIGJ5IHNlbmRp
bmcKKyAgICAgICAgdGhlIHBhdXNlIHRpbWUgZG93biB0byB0aGUgR3JhcGhpY3NMYXllciwgYW5k
IHVzaW5nIGl0IHRvIHN0b3AgdGltZSBvbiB0aGUgbGF5ZXIuCisgICAgICAgIAorICAgICAgICBJ
IGFsc28gYWRkZWQgYW4gYXNzZXJ0aW9uIHRvIGNoZWNrIHRoYXQgdGhlIGFuaW1hdGlvbiBoYXMg
YWN0dWFsbHkgc3RhcnRlZCB3aGVuIHdlCisgICAgICAgIHRyeSB0byBwYXVzZSBpdCwgdG8gY2hl
Y2sgdGhhdCB0aGUgcGF1c2UgdGltZSB3ZSBjb21wdXRlIGlzIHZhbGlkLiBUaGlzIHJldmVhbGVk
IGEgbnVtYmVyCisgICAgICAgIG9mIHRlc3RzIHRoYXQgdHJpZWQgdG8gcGF1c2UgYmVmb3JlIGFu
aW1hdGlvbnMgc3RhcnRlZCwgcmVxdWlyZWQgc29tZSBhbW91bnQgb2YgdGVzdCBmaXhpbmcuCisK
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0VGltZSk6CisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5oOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnBh
dXNlQW5pbWF0aW9uQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlv
bjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnN1c3Bl
bmRBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKwogMjAwOS0wNy0yMyAgRGF2aWQgSHlhdHQgIDxo
eWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGFjOWUyYzQuLjk4MzE1
NTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNDUsNiAr
NDUsOCBAQAogI2luY2x1ZGUgIk1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
Ik1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCisj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlVuaXRCZXppZXIuaCIKIApAQCAt
MTA2NiwxMCArMTA2OCwxOCBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmdvSW50b0VuZGluZ09yTG9v
cGluZ1N0YXRlKCkKICAgICBtX2FuaW1TdGF0ZSA9IGlzTG9vcGluZyA/IEFuaW1hdGlvblN0YXRl
TG9vcGluZyA6IEFuaW1hdGlvblN0YXRlRW5kaW5nOwogfQogICAKLXZvaWQgQW5pbWF0aW9uQmFz
ZTo6cGF1c2VBdFRpbWUoZG91YmxlIHQpCit2b2lkIEFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0VGlt
ZShkb3VibGUgdCkKIHsKLSAgICB1cGRhdGVQbGF5U3RhdGUoZmFsc2UpOworICAgIEFTU0VSVCht
X3N0YXJ0VGltZSk7ICAgICAgICAvLyBpZiBtX3N0YXJ0VGltZSBpcyB6ZXJvLCB3ZSBoYXZlbid0
IHN0YXJ0ZWQgeWV0LCBzbyB3ZSdsbCBnZXQgYSBiYWQgcGF1c2UgdGltZS4KICAgICBtX3BhdXNl
VGltZSA9IG1fc3RhcnRUaW1lICsgdCAtIG1fYW5pbWF0aW9uLT5kZWxheSgpOworCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChtX29iamVjdCAmJiBtX29iamVjdC0+
aGFzTGF5ZXIoKSkgeworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KG1fb2JqZWN0KS0+bGF5ZXIoKTsKKyAgICAgICAgaWYgKGxheWVyLT5pc0NvbXBv
c2l0ZWQoKSkKKyAgICAgICAgICAgIGxheWVyLT5iYWNraW5nKCktPnN1c3BlbmRBbmltYXRpb25z
KG1fcGF1c2VUaW1lKTsKKyAgICB9CisjZW5kaWYKIH0KIAogZG91YmxlIEFuaW1hdGlvbkJhc2U6
OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5oCmluZGV4IDhmNTVhOGUuLjM0ODJmNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5oCkBAIC0xNTYsNyArMTU2LDggQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zv
cm1GdW5jdGlvbkxpc3RWYWxpZDsgfQogICAgIAotICAgIHZvaWQgcGF1c2VBdFRpbWUoZG91Ymxl
IHQpOworICAgIC8vIEZyZWV6ZSB0aGUgYW5pbWF0aW9uOyB1c2VkIGJ5IER1bXBSZW5kZXJUcmVl
LgorICAgIHZvaWQgZnJlZXplQXRUaW1lKGRvdWJsZSB0KTsKICAgICAKICAgICBkb3VibGUgYmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXggOTQ4MWI4ZC4uODk0NmQ4MCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApAQCAtNDgw
LDcgKzQ4MCw3IEBAIGJvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbkF0VGlt
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGRvdWJsZSB0CiAKICAgICBpbnQgY291bnQgPSBr
ZXlmcmFtZUFuaW0tPm1fYW5pbWF0aW9uLT5pdGVyYXRpb25Db3VudCgpOwogICAgIGlmICgodCA+
PSAwLjApICYmICghY291bnQgfHwgKHQgPD0gY291bnQgKiBrZXlmcmFtZUFuaW0tPmR1cmF0aW9u
KCkpKSkgewotICAgICAgICBrZXlmcmFtZUFuaW0tPnBhdXNlQXRUaW1lKHQpOworICAgICAgICBr
ZXlmcmFtZUFuaW0tPmZyZWV6ZUF0VGltZSh0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC00OTcsNyArNDk3LDcgQEAgYm9vbCBDb21wb3NpdGVBbmltYXRpb246OnBhdXNlVHJh
bnNpdGlvbkF0VGltZShpbnQgcHJvcGVydHksIGRvdWJsZSB0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoKHQgPj0gMC4wKSAmJiAodCA8PSBpbXBsQW5pbS0+ZHVyYXRpb24oKSkp
IHsKLSAgICAgICAgaW1wbEFuaW0tPnBhdXNlQXRUaW1lKHQpOworICAgICAgICBpbXBsQW5pbS0+
ZnJlZXplQXRUaW1lKHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGIxODI1NDguLmM4NGMz
ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAt
NDE3LDcgKzQxNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6cmVtb3ZlRmluaXNoZWRUcmFuc2l0
aW9ucyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiAgICAgfQogfQogCi12b2lkIEdyYXBo
aWNzTGF5ZXI6OnN1c3BlbmRBbmltYXRpb25zKCkKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c3VzcGVu
ZEFuaW1hdGlvbnMoZG91YmxlKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCmluZGV4IDNjYzExMjguLjMxYzlmN2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0yNjUsNyArMjY1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlRmluaXNoZWRUcmFuc2l0aW9ucyhBbmltYXRlZFByb3BlcnR5SUQpOwogICAg
IHZvaWQgcmVtb3ZlQWxsQW5pbWF0aW9ucygpOwogCi0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmRB
bmltYXRpb25zKCk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0
aW1lID0gMCk7ICAgIC8vIHplcm8gdmFsdWUgZm9yIHRpbWUgbWVhbnMgInVzZSBjdXJyZW50VGlt
ZSgpIi4KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwogICAgIAogICAgIC8v
IExheWVyIGNvbnRlbnRzCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0xheWVyQ0EuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzTGF5ZXJDQS5oCmluZGV4IDFlMGFhMmMuLjQ5NDgwMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5p
bWF0aW9ucyhkb3VibGUgdGltZSA9IDApOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRp
b25zKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYW5pbWF0ZVRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1WYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgZG91YmxlIGJl
Z2luVGltZSwgYm9vbCBpc1RyYW5zaXRpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCmluZGV4IDVmYjg2YmYuLmI5M2MyMTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KQEAg
LTEzNTYsOSArMTM1Niw5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRLZXlmcmFtZUFuaW1h
dGlvbihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIFRyYW5zZm9yCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3VzcGVuZEFuaW1h
dGlvbnMoKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0
aW1lKQogewotICAgIGRvdWJsZSB0ID0gY3VycmVudFRpbWVUb01lZGlhVGltZShjdXJyZW50VGlt
ZSgpKTsKKyAgICBkb3VibGUgdCA9IGN1cnJlbnRUaW1lVG9NZWRpYVRpbWUodGltZSA/IHRpbWUg
OiBjdXJyZW50VGltZSgpKTsKICAgICBbcHJpbWFyeUxheWVyKCkgc2V0U3BlZWQ6MF07CiAgICAg
W3ByaW1hcnlMYXllcigpIHNldFRpbWVPZmZzZXQ6dF07CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBjZTBmZmIxLi45MWRiYTc4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwMzMsOSArMTAzMyw5IEBAIHZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjp0cmFuc2l0aW9uRmluaXNoZWQoaW50IHByb3BlcnR5KQogICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnJlbW92ZUZpbmlzaGVkVHJhbnNpdGlvbnMoYW5pbWF0ZWRQ
cm9wZXJ0eSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdXNwZW5kQW5pbWF0aW9u
cygpCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRp
bWUpCiB7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIG1f
Z3JhcGhpY3NMYXllci0+c3VzcGVuZEFuaW1hdGlvbnModGltZSk7CiB9CiAKIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjpyZXN1bWVBbmltYXRpb25zKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgKaW5kZXggMjViMWEzMS4uMWEyZjVlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
bmltYXRpb25GaW5pc2hlZChjb25zdCBTdHJpbmcmIG5hbWUsIGludCBpbmRleCwgYm9vbCByZXNl
dCk7CiAgICAgdm9pZCB0cmFuc2l0aW9uRmluaXNoZWQoaW50IHByb3BlcnR5KTsKIAotICAgIHZv
aWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJs
ZSB0aW1lID0gMCk7CiAgICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CiAKICAgICBJbnRSZWN0
IGNvbXBvc2l0ZWRCb3VuZHMoKSBjb25zdDsK
</data>
<flag name="review"
          id="17679"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33916</attachid>
            <date>2009-07-31 18:24:39 -0700</date>
            <delta_ts>2009-07-31 18:24:39 -0700</delta_ts>
            <desc>Unbitrotted patch, some tests need tweaking still.</desc>
            <filename>27627_patch_recent.txt</filename>
            <type>text/plain</type>
            <size>41892</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRydC1hcGktbXVs
dGlwbGUta2V5ZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1k
cnQtYXBpLW11bHRpcGxlLWtleWZyYW1lcy5odG1sCmluZGV4IGNjMTcwYjYuLjAyM2UxMWYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRydC1hcGktbXVsdGlw
bGUta2V5ZnJhbWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24t
ZHJ0LWFwaS1tdWx0aXBsZS1rZXlmcmFtZXMuaHRtbApAQCAtMjYsMTUgKzI2LDI3IEBACiAgICAg
ICA2MCUgeyBsZWZ0OiAxNXB4OyB9CiAgICAgICB0byB7IGxlZnQ6IDIwcHg7IH0KICAgICB9Ci0g
ICAgICAgICAKLSAgICAgPC9zdHlsZT4KKyAgIDwvc3R5bGU+CisKKyAgIDxzY3JpcHQgc3JjPSJh
bmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFy
c2V0PSJ1dGYtOCI+Ci0gICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAKKyAgICBmdW5jdGlvbiBhbmltYXRpb25TdGFydGVkKCkKKyAgICB7CiAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgIGlmICghbGF5
b3V0VGVzdENvbnRyb2xsZXIucGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoImFu
aW0iLCAzLCAiYm94IikpCiAgICAgICAgICAgdGhyb3coIkFuaW1hdGlvbiBpcyBub3QgcnVubmlu
ZyIpOworCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICAg
IH0KICAgICB9CisKKyAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAgIHsKKyAgICAgIHdhaXRG
b3JBbmltYXRpb25Ub1N0YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSwgYW5pbWF0
aW9uU3RhcnRlZCk7CisgICAgfQogICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9
InN0YXJ0VGVzdCgpIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0
aW9uLWRydC1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRydC1h
cGkuaHRtbAppbmRleCAwNmUwNmVjLi44ODcyYWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL2FuaW1hdGlvbi1kcnQtYXBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9hbmltYXRpb24tZHJ0LWFwaS5odG1sCkBAIC0yOSwxNCArMjksMjYgQEAKICAgICAgIH0K
ICAgICB9CiAgICAgICAgICAKLSAgICAgPC9zdHlsZT4KLSAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICA8L3N0eWxlPgorCisgIDxzY3JpcHQgc3JjPSJhbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworCisgICAgZnVuY3Rpb24gYW5pbWF0aW9uU3RhcnRlZCgpCisgICAgewogICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICBpZiAoIWxheW91
dFRlc3RDb250cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKCJib3Vu
Y2UiLCAxLjAsICJ0YXJnZXQiKSkKICAgICAgICAgICB0aHJvdygiQW5pbWF0aW9uIGlzIG5vdCBy
dW5uaW5nIik7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAg
ICAgIH0KICAgICB9CisKKyAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAgIHsKKyAgICAgIHdh
aXRGb3JBbmltYXRpb25Ub1N0YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKSwg
YW5pbWF0aW9uU3RhcnRlZCk7CisgICAgfQogICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBv
bmxvYWQ9InN0YXJ0VGVzdCgpIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
YW5pbWF0aW9uLWhpdC10ZXN0LXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9hbmltYXRpb24taGl0LXRlc3QtdHJhbnNmb3JtLmh0bWwKaW5kZXggZDgwNjM1Ni4uYzk2ZmY0
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24taGl0LXRlc3Qt
dHJhbnNmb3JtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24taGl0
LXRlc3QtdHJhbnNmb3JtLmh0bWwKQEAgLTI3LDcgKzI3LDkgQEAKICAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogeWVsbG93OwogICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKICAgICB9Ci0gICAg
IDwvc3R5bGU+CisgICA8L3N0eWxlPgorCisgICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3Qt
aGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3Jp
cHQ+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgog
ICAgICAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChwb3MsIGlzSW4pCiAgICAgICAgIHsKQEAgLTcx
LDcgKzczLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgIAogICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLnN0eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgPSAiYW5p
bSI7Ci0gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChkb1Rlc3QsIDApOworICAgICAgICAg
ICAgd2FpdEZvckFuaW1hdGlvblRvU3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rhcmdl
dCcpLCBkb1Rlc3QpOwogICAgICAgICB9CiAgICA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWhpdC10ZXN0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1oaXQtdGVzdC5odG1sCmluZGV4IDZlMGM1NmEu
LmZhZTAzOTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWhp
dC10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24taGl0LXRl
c3QuaHRtbApAQCAtMjcsNyArMjcsOSBAQAogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3c7CiAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOwogICAgIH0KLSAgICAgPC9zdHlsZT4KKyAg
ICA8L3N0eWxlPgorCisgICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAgICAgICBmdW5j
dGlvbiBjaGVja1Jlc3VsdChwb3MsIGlzSW4pCiAgICAgICAgIHsKQEAgLTcxLDcgKzczLDcgQEAK
ICAgICAgICAgICAgIH0KICAgICAgIAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldCIpLnN0eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgPSAiYW5pbSI7Ci0gICAgICAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChkb1Rlc3QsIDApOworICAgICAgICAgICAgd2FpdEZvckFu
aW1hdGlvblRvU3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLCBkb1Rlc3Qp
OwogICAgICAgICB9CiAgICA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyBiL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwppbmRleCA2ZmUxODEyLi41ZjU3NmM4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBl
cnMuanMKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tdGVzdC1oZWxwZXJz
LmpzCkBAIC0yOSwxNjkgKzI5LDE3NCBAQCBGdW5jdGlvbiBwYXJhbWV0ZXJzOgogICAgIElmIHRo
ZSBDU1MgcHJvcGVydHkgbmFtZSBpcyAid2Via2l0VHJhbnNmb3JtLk4iLCBleHBlY3RlZCB2YWx1
ZSBtdXN0IGJlIGEgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIE50aCBlbGVtZW50IG9mIHRo
ZSBtYXRyaXgKIAogKi8KLWZ1bmN0aW9uIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWQsIGNhbGxi
YWNrLCBldmVudCwgZGlzYWJsZVBhdXNlQW5pbWF0aW9uQVBJKQorCitmdW5jdGlvbiBpc0Nsb3Nl
RW5vdWdoKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQogewotICAgIHZhciByZXN1bHQgPSAi
IjsKLSAgICB2YXIgaGFzUGF1c2VBbmltYXRpb25BUEkgPSAoJ2xheW91dFRlc3RDb250cm9sbGVy
JyBpbiB3aW5kb3cpICYmICgncGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQnIGlu
IGxheW91dFRlc3RDb250cm9sbGVyKTsKLSAgICBpZiAoZGlzYWJsZVBhdXNlQW5pbWF0aW9uQVBJ
KQotICAgICAgICBoYXNQYXVzZUFuaW1hdGlvbkFQSSA9IGZhbHNlOworICAgIHZhciBkaWZmID0g
TWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7CisgICAgcmV0dXJuIGRpZmYgPD0gdG9sZXJhbmNl
OworfQogCi0gICAgZnVuY3Rpb24gaXNDbG9zZUVub3VnaChhY3R1YWwsIGRlc2lyZWQsIHRvbGVy
YW5jZSkKLSAgICB7Ci0gICAgICAgIHZhciBkaWZmID0gTWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJl
ZCk7Ci0gICAgICAgIHJldHVybiBkaWZmIDw9IHRvbGVyYW5jZTsKK2Z1bmN0aW9uIG1hdHJpeFN0
cmluZ1RvQXJyYXkocykKK3sKKyAgICB2YXIgbSA9IHMuc3BsaXQoIigiKTsKKyAgICBtID0gbVsx
XS5zcGxpdCgiKSIpOworICAgIHJldHVybiBtWzBdLnNwbGl0KCIsIik7Cit9CisKK2Z1bmN0aW9u
IGNoZWNrRXhwZWN0ZWRWYWx1ZShleHBlY3RlZCwgaW5kZXgpCit7CisgICAgdmFyIGFuaW1hdGlv
bk5hbWUgPSBleHBlY3RlZFtpbmRleF1bMF07CisgICAgdmFyIHRpbWUgPSBleHBlY3RlZFtpbmRl
eF1bMV07CisgICAgdmFyIGVsZW1lbnRJZCA9IGV4cGVjdGVkW2luZGV4XVsyXTsKKyAgICB2YXIg
cHJvcGVydHkgPSBleHBlY3RlZFtpbmRleF1bM107CisgICAgdmFyIGV4cGVjdGVkVmFsdWUgPSBl
eHBlY3RlZFtpbmRleF1bNF07CisgICAgdmFyIHRvbGVyYW5jZSA9IGV4cGVjdGVkW2luZGV4XVs1
XTsKKworICAgIC8vIENoZWNrIGZvciBhIHBhaXIgb2YgZWxlbWVudCBJZHMKKyAgICB2YXIgY29t
cGFyZUVsZW1lbnRzID0gZmFsc2U7CisgICAgdmFyIGVsZW1lbnRJZDI7CisgICAgaWYgKHR5cGVv
ZiBlbGVtZW50SWQgIT0gInN0cmluZyIpIHsKKyAgICAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGgg
IT0gMikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBlbGVtZW50
SWQyID0gZWxlbWVudElkWzFdOworICAgICAgICBlbGVtZW50SWQgPSBlbGVtZW50SWRbMF07Cisg
ICAgICAgIGNvbXBhcmVFbGVtZW50cyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKGFuaW1hdGlv
bk5hbWUgJiYgaGFzUGF1c2VBbmltYXRpb25BUEkgJiYgIWxheW91dFRlc3RDb250cm9sbGVyLnBh
dXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGFuaW1hdGlvbk5hbWUsIHRpbWUsIGVs
ZW1lbnRJZCkpIHsKKyAgICAgICAgcmVzdWx0ICs9ICJGQUlMIC0gYW5pbWF0aW9uIFwiIiArIGFu
aW1hdGlvbk5hbWUgKyAiXCIgaXMgbm90IHJ1bm5pbmciICsgIjxicj4iOworICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGZ1bmN0aW9uIG1hdHJpeFN0cmluZ1RvQXJyYXkocykKLSAg
ICB7Ci0gICAgICAgIHZhciBtID0gcy5zcGxpdCgiKCIpOwotICAgICAgICBtID0gbVsxXS5zcGxp
dCgiKSIpOwotICAgICAgICByZXR1cm4gbVswXS5zcGxpdCgiLCIpOworICAgIGlmIChjb21wYXJl
RWxlbWVudHMgJiYgYW5pbWF0aW9uTmFtZSAmJiBoYXNQYXVzZUFuaW1hdGlvbkFQSSAmJiAhbGF5
b3V0VGVzdENvbnRyb2xsZXIucGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoYW5p
bWF0aW9uTmFtZSwgdGltZSwgZWxlbWVudElkMikpIHsKKyAgICAgICAgcmVzdWx0ICs9ICJGQUlM
IC0gYW5pbWF0aW9uIFwiIiArIGFuaW1hdGlvbk5hbWUgKyAiXCIgaXMgbm90IHJ1bm5pbmciICsg
Ijxicj4iOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGZ1bmN0aW9uIGNoZWNr
RXhwZWN0ZWRWYWx1ZShleHBlY3RlZCwgaW5kZXgpCi0gICAgewotICAgICAgICB2YXIgYW5pbWF0
aW9uTmFtZSA9IGV4cGVjdGVkW2luZGV4XVswXTsKLSAgICAgICAgdmFyIHRpbWUgPSBleHBlY3Rl
ZFtpbmRleF1bMV07Ci0gICAgICAgIHZhciBlbGVtZW50SWQgPSBleHBlY3RlZFtpbmRleF1bMl07
Ci0gICAgICAgIHZhciBwcm9wZXJ0eSA9IGV4cGVjdGVkW2luZGV4XVszXTsKLSAgICAgICAgdmFy
IGV4cGVjdGVkVmFsdWUgPSBleHBlY3RlZFtpbmRleF1bNF07Ci0gICAgICAgIHZhciB0b2xlcmFu
Y2UgPSBleHBlY3RlZFtpbmRleF1bNV07Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcGFpciBv
ZiBlbGVtZW50IElkcwotICAgICAgICB2YXIgY29tcGFyZUVsZW1lbnRzID0gZmFsc2U7Ci0gICAg
ICAgIHZhciBlbGVtZW50SWQyOwotICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRJZCAhPSAic3Ry
aW5nIikgewotICAgICAgICAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGggIT0gMikKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBlbGVtZW50SWQy
ID0gZWxlbWVudElkWzFdOwotICAgICAgICAgICAgZWxlbWVudElkID0gZWxlbWVudElkWzBdOwot
ICAgICAgICAgICAgY29tcGFyZUVsZW1lbnRzID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChhbmltYXRpb25OYW1lICYmIGhhc1BhdXNlQW5pbWF0aW9uQVBJICYmICFsYXlvdXRUZXN0
Q29udHJvbGxlci5wYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChhbmltYXRpb25O
YW1lLCB0aW1lLCBlbGVtZW50SWQpKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBh
bmltYXRpb24gXCIiICsgYW5pbWF0aW9uTmFtZSArICJcIiBpcyBub3QgcnVubmluZyIgKyAiPGJy
PiI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlm
IChjb21wYXJlRWxlbWVudHMgJiYgYW5pbWF0aW9uTmFtZSAmJiBoYXNQYXVzZUFuaW1hdGlvbkFQ
SSAmJiAhbGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWQoYW5pbWF0aW9uTmFtZSwgdGltZSwgZWxlbWVudElkMikpIHsKLSAgICAgICAgICAgIHJl
c3VsdCArPSAiRkFJTCAtIGFuaW1hdGlvbiBcIiIgKyBhbmltYXRpb25OYW1lICsgIlwiIGlzIG5v
dCBydW5uaW5nIiArICI8YnI+IjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgdmFyIGNvbXB1dGVkVmFsdWUsIGNvbXB1dGVkVmFsdWUyOwotICAgICAg
ICB2YXIgcGFzcyA9IHRydWU7Ci0gICAgICAgIGlmICghcHJvcGVydHkuaW5kZXhPZigid2Via2l0
VHJhbnNmb3JtIikpIHsKLSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS53ZWJraXRUcmFu
c2Zvcm07Ci0gICAgICAgICAgICBpZiAoY29tcGFyZUVsZW1lbnRzKSB7Ci0gICAgICAgICAgICAg
ICAgY29tcHV0ZWRWYWx1ZTIgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQyKSkud2Via2l0VHJhbnNmb3JtOwotICAgICAgICAgICAgICAg
IHZhciBtMSA9IG1hdHJpeFN0cmluZ1RvQXJyYXkoY29tcHV0ZWRWYWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgdmFyIG0yID0gbWF0cml4U3RyaW5nVG9BcnJheShjb21wdXRlZFZhbHVlMik7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBhc3N1bWUgdGhhdCBi
b3RoIG1hdHJpY2VzIGFyZSBlaXRoZXIgYm90aCAyRCBvciBib3RoIDNECi0gICAgICAgICAgICAg
ICAgdmFyIGNvdW50ID0gKGNvbXB1dGVkVmFsdWUuc3Vic3RyaW5nKDAsIDcpID09ICJtYXRyaXgz
ZCIpID8gMTYgOiA2OwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewotICAgICAgICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZs
b2F0KG0xW2ldKSwgbTJbaV0sIHRvbGVyYW5jZSk7CisgICAgdmFyIGNvbXB1dGVkVmFsdWUsIGNv
bXB1dGVkVmFsdWUyOworICAgIHZhciBwYXNzID0gdHJ1ZTsKKyAgICBpZiAoIXByb3BlcnR5Lmlu
ZGV4T2YoIndlYmtpdFRyYW5zZm9ybSIpKSB7CisgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS53
ZWJraXRUcmFuc2Zvcm07CisgICAgICAgIGlmIChjb21wYXJlRWxlbWVudHMpIHsKKyAgICAgICAg
ICAgIGNvbXB1dGVkVmFsdWUyID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkMikpLndlYmtpdFRyYW5zZm9ybTsKKyAgICAgICAgICAgIHZh
ciBtMSA9IG1hdHJpeFN0cmluZ1RvQXJyYXkoY29tcHV0ZWRWYWx1ZSk7CisgICAgICAgICAgICB2
YXIgbTIgPSBtYXRyaXhTdHJpbmdUb0FycmF5KGNvbXB1dGVkVmFsdWUyKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBhc3N1bWUgdGhhdCBib3RoIG1hdHJpY2VzIGFy
ZSBlaXRoZXIgYm90aCAyRCBvciBib3RoIDNECisgICAgICAgICAgICB2YXIgY291bnQgPSAoY29t
cHV0ZWRWYWx1ZS5zdWJzdHJpbmcoMCwgNykgPT0gIm1hdHJpeDNkIikgPyAxNiA6IDY7CisgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBwYXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZsb2F0KG0xW2ldKSwgbTJbaV0sIHRvbGVyYW5j
ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFwYXNzKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gInN0cmluZyIpCisgICAgICAgICAg
ICAgICAgcGFzcyA9IChjb21wdXRlZFZhbHVlID09IGV4cGVjdGVkVmFsdWUpOworICAgICAgICAg
ICAgZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbSA9IG1hdHJpeFN0cmluZ1RvQXJyYXkoY29tcHV0ZWRWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2gocGFyc2VGbG9hdChtW3BhcnNlSW50KHBy
b3BlcnR5LnN1YnN0cmluZygxNikpXSksIGV4cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtID0gbWF0cml4U3RyaW5nVG9B
cnJheShjb21wdXRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXhw
ZWN0ZWRWYWx1ZS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBwYXNzID0gaXND
bG9zZUVub3VnaChwYXJzZUZsb2F0KG1baV0pLCBleHBlY3RlZFZhbHVlW2ldLCB0b2xlcmFuY2Up
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3MpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gInN0
cmluZyIpCi0gICAgICAgICAgICAgICAgICAgIHBhc3MgPSAoY29tcHV0ZWRWYWx1ZSA9PSBleHBl
Y3RlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1
ZSA9PSAibnVtYmVyIikgewotICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IG1hdHJpeFN0cmlu
Z1RvQXJyYXkoY29tcHV0ZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Ns
b3NlRW5vdWdoKHBhcnNlRmxvYXQobVtwYXJzZUludChwcm9wZXJ0eS5zdWJzdHJpbmcoMTYpKV0p
LCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBtID0gbWF0cml4U3RyaW5nVG9BcnJheShjb21wdXRlZFZh
bHVlKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWUu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5v
dWdoKHBhcnNlRmxvYXQobVtpXSksIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT0gImxpbmVIZWlnaHQiKSB7
Ci0gICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkubGluZUhlaWdodCk7Ci0g
ICAgICAgICAgICBpZiAoY29tcGFyZUVsZW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgY29tcHV0
ZWRWYWx1ZTIgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQyKSkubGluZUhlaWdodCk7Ci0gICAgICAgICAgICAgICAgcGFz
cyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgY29tcHV0ZWRWYWx1ZTIsIHRvbGVyYW5j
ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcGFz
cyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNl
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSku
Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBjb21wdXRlZFZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpOwotICAgICAgICAgICAgaWYgKGNvbXBhcmVFbGVtZW50cykgewotICAgICAgICAgICAgICAg
IHZhciBjb21wdXRlZFN0eWxlMiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGVsZW1lbnRJZDIpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsK
LSAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlMiA9IGNvbXB1dGVkU3R5bGUyLmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7Ci0gICAgICAgICAgICAgICAgcGFz
cyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgY29tcHV0ZWRWYWx1ZTIsIHRvbGVyYW5j
ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcGFz
cyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNl
KTsKICAgICAgICAgfQotCisgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhlaWdodCIp
IHsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmxpbmVIZWlnaHQpOwogICAg
ICAgICBpZiAoY29tcGFyZUVsZW1lbnRzKSB7Ci0gICAgICAgICAgICBpZiAocGFzcykKLSAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MgLSBcIiIgKyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0
eSBmb3IgXCIiICsgZWxlbWVudElkICsgIlwiIGFuZCBcIiIgKyBlbGVtZW50SWQyICsgIlwiIGVs
ZW1lbnRzIGF0ICIgKyB0aW1lICsgInMgYXJlIGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyIiAr
ICI8YnI+IjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkZB
SUwgLSBcIiIgKyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsg
IlwiIGFuZCBcIiIgKyBlbGVtZW50SWQyICsgIlwiIGVsZW1lbnRzIGF0ICIgKyB0aW1lICsgInMg
c2F3OiBcIiIgKyBjb21wdXRlZFZhbHVlICsgIlwiIGFuZCBcIiIgKyBjb21wdXRlZFZhbHVlMiAr
ICJcIiB3aGljaCBhcmUgbm90IGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyIiArICI8YnI+IjsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChwYXNzKQotICAgICAgICAgICAgICAg
IHJlc3VsdCArPSAiUEFTUyAtIFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIg
KyBlbGVtZW50SWQgKyAiXCIgZWxlbWVudCBhdCAiICsgdGltZSArICJzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86ICIgKyBleHBlY3RlZFZhbHVlICsgIjxicj4iOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAtIFwiIiArIHByb3BlcnR5ICsgIlwiIHBy
b3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIgZWxlbWVudCBhdCAiICsgdGltZSArICJz
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IHNhdzogIiArIGNvbXB1dGVkVmFs
dWUgKyAiPGJyPiI7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlMiA9IHBhcnNlSW50KHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZDIpKS5s
aW5lSGVpZ2h0KTsKKyAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFs
dWUsIGNvbXB1dGVkVmFsdWUyLCB0b2xlcmFuY2UpOwogICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVk
VmFsdWUsIHRvbGVyYW5jZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGNvbXB1dGVkU3R5
bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgY29tcHV0ZWRW
YWx1ZSA9IGNvbXB1dGVkU3R5bGUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1Nf
TlVNQkVSKTsKKyAgICAgICAgaWYgKGNvbXBhcmVFbGVtZW50cykgeworICAgICAgICAgICAgdmFy
IGNvbXB1dGVkU3R5bGUyID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbWVudElkMikpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpOworICAg
ICAgICAgICAgY29tcHV0ZWRWYWx1ZTIgPSBjb21wdXRlZFN0eWxlMi5nZXRGbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpOworICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VF
bm91Z2goY29tcHV0ZWRWYWx1ZSwgY29tcHV0ZWRWYWx1ZTIsIHRvbGVyYW5jZSk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0
ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKICAgICB9CiAKLSAgICBmdW5jdGlv
biBlbmRUZXN0KCkKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICBpZiAoY29tcGFyZUVsZW1lbnRzKSB7CisgICAgICAgIGlmIChwYXNzKQorICAgICAg
ICAgICAgcmVzdWx0ICs9ICJQQVNTIC0gXCIiICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9y
IFwiIiArIGVsZW1lbnRJZCArICJcIiBhbmQgXCIiICsgZWxlbWVudElkMiArICJcIiBlbGVtZW50
cyBhdCAiICsgdGltZSArICJzIGFyZSBjbG9zZSBlbm91Z2ggdG8gZWFjaCBvdGhlciIgKyAiPGJy
PiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAtIFwiIiArIHBy
b3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIgYW5kIFwiIiAr
IGVsZW1lbnRJZDIgKyAiXCIgZWxlbWVudHMgYXQgIiArIHRpbWUgKyAicyBzYXc6IFwiIiArIGNv
bXB1dGVkVmFsdWUgKyAiXCIgYW5kIFwiIiArIGNvbXB1dGVkVmFsdWUyICsgIlwiIHdoaWNoIGFy
ZSBub3QgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIiICsgIjxicj4iOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChwYXNzKQorICAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIC0gXCIiICsg
cHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBlbGVtZW50
IGF0ICIgKyB0aW1lICsgInMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogIiArIGV4cGVjdGVkVmFs
dWUgKyAiPGJyPiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAt
IFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIg
ZWxlbWVudCBhdCAiICsgdGltZSArICJzIGV4cGVjdGVkOiAiICsgZXhwZWN0ZWRWYWx1ZSArICIg
YnV0IHNhdzogIiArIGNvbXB1dGVkVmFsdWUgKyAiPGJyPiI7CiAgICAgfQorfQogCi0gICAgZnVu
Y3Rpb24gY2hlY2tFeHBlY3RlZFZhbHVlQ2FsbGJhY2soZXhwZWN0ZWQsIGluZGV4KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQs
IGluZGV4KTsgfTsKLSAgICB9CitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwogCi0gICAgdmFyIHRl
c3RTdGFydGVkID0gZmFsc2U7Ci0gICAgZnVuY3Rpb24gc3RhcnRUZXN0KGV4cGVjdGVkLCBjYWxs
YmFjaykKLSAgICB7Ci0gICAgICAgIGlmICh0ZXN0U3RhcnRlZCkgcmV0dXJuOwotICAgICAgICB0
ZXN0U3RhcnRlZCA9IHRydWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQogCi0gICAgICAg
IGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7CitmdW5jdGlvbiBjaGVja0V4
cGVjdGVkVmFsdWVDYWxsYmFjayhleHBlY3RlZCwgaW5kZXgpCit7CisgICAgcmV0dXJuIGZ1bmN0
aW9uKCkgeyBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGluZGV4KTsgfTsKK30KIAotICAg
ICAgICB2YXIgbWF4VGltZSA9IDA7Cit2YXIgdGVzdFN0YXJ0ZWQgPSBmYWxzZTsKK2Z1bmN0aW9u
IHN0YXJ0VGVzdChleHBlY3RlZCwgY2FsbGJhY2spCit7CisgICAgaWYgKHRlc3RTdGFydGVkKSBy
ZXR1cm47CisgICAgdGVzdFN0YXJ0ZWQgPSB0cnVlOwogCi0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBhbmltYXRpb25O
YW1lID0gZXhwZWN0ZWRbaV1bMF07Ci0gICAgICAgICAgICB2YXIgdGltZSA9IGV4cGVjdGVkW2ld
WzFdOworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJhY2soKTsKIAotICAgICAgICAg
ICAgLy8gV2UgY2FuIG9ubHkgdXNlIHRoZSBhbmltYXRpb24gZmFzdC1mb3J3YXJkIG1lY2hhbmlz
bSBpZiB0aGVyZSdzIGFuIGFuaW1hdGlvbiBuYW1lCi0gICAgICAgICAgICAvLyBhbmQgRFJUIGlt
cGxlbWVudHMgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoKQotICAgICAgICAg
ICAgaWYgKGFuaW1hdGlvbk5hbWUgJiYgaGFzUGF1c2VBbmltYXRpb25BUEkpCi0gICAgICAgICAg
ICAgICAgY2hlY2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBpKTsKLSAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIGlmICh0aW1lID4gbWF4VGltZSkKLSAgICAgICAgICAgICAgICAg
ICAgbWF4VGltZSA9IHRpbWU7CisgICAgdmFyIG1heFRpbWUgPSAwOwogCi0gICAgICAgICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoY2hlY2tFeHBlY3RlZFZhbHVlQ2FsbGJhY2soZXhwZWN0ZWQs
IGkpLCB0aW1lICogMTAwMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBhbmltYXRp
b25OYW1lID0gZXhwZWN0ZWRbaV1bMF07CisgICAgICAgIHZhciB0aW1lID0gZXhwZWN0ZWRbaV1b
MV07CiAKLSAgICAgICAgaWYgKG1heFRpbWUgPiAwKQotICAgICAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoZW5kVGVzdCwgbWF4VGltZSAqIDEwMDAgKyA1MCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgLy8gV2UgY2FuIG9ubHkgdXNlIHRoZSBhbmltYXRp
b24gZmFzdC1mb3J3YXJkIG1lY2hhbmlzbSBpZiB0aGVyZSdzIGFuIGFuaW1hdGlvbiBuYW1lCisg
ICAgICAgIC8vIGFuZCBEUlQgaW1wbGVtZW50cyBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVu
dFdpdGhJZCgpCisgICAgICAgIGlmIChhbmltYXRpb25OYW1lICYmIGhhc1BhdXNlQW5pbWF0aW9u
QVBJKQorICAgICAgICAgICAgY2hlY2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBpKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBpZiAodGltZSA+IG1heFRpbWUpCisgICAgICAgICAgICAg
ICAgbWF4VGltZSA9IHRpbWU7CisKKyAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNr
RXhwZWN0ZWRWYWx1ZUNhbGxiYWNrKGV4cGVjdGVkLCBpKSwgdGltZSAqIDEwMDApOworICAgICAg
ICB9CiAgICAgfQorCisgICAgaWYgKG1heFRpbWUgPiAwKQorICAgICAgICB3aW5kb3cuc2V0VGlt
ZW91dChlbmRUZXN0LCBtYXhUaW1lICogMTAwMCArIDUwKTsKKyAgICBlbHNlCisgICAgICAgIGVu
ZFRlc3QoKTsKK30KKwordmFyIHJlc3VsdCA9ICIiOwordmFyIGhhc1BhdXNlQW5pbWF0aW9uQVBJ
OworCitmdW5jdGlvbiBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkLCBjYWxsYmFjaywgZXZlbnQs
IGRpc2FibGVQYXVzZUFuaW1hdGlvbkFQSSwgZG9QaXhlbFRlc3QpCit7CisgICAgdmFyIHJlc3Vs
dCA9ICIiOworICAgIHZhciBoYXNQYXVzZUFuaW1hdGlvbkFQSSA9ICgnbGF5b3V0VGVzdENvbnRy
b2xsZXInIGluIHdpbmRvdykgJiYgKCdwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJ
ZCcgaW4gbGF5b3V0VGVzdENvbnRyb2xsZXIpOworICAgIGlmIChkaXNhYmxlUGF1c2VBbmltYXRp
b25BUEkpCisgICAgICAgIGhhc1BhdXNlQW5pbWF0aW9uQVBJID0gZmFsc2U7CiAgICAgCiAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICghZG9QaXhlbFRlc3QpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAgICAgCkBAIC0yMDUsMyArMjEw
LDEwIEBAIGZ1bmN0aW9uIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWQsIGNhbGxiYWNrLCBldmVu
dCwgZGlzYWJsZVBhdXNlQW5pbWF0aW9uQVBJKQogICAgICAgICB0YXJnZXQgPSB3aW5kb3c7CiAg
ICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZ1bmN0aW9uKCkgeyBzdGFydFRlc3Qo
ZXhwZWN0ZWQsIGNhbGxiYWNrKTsgfSwgZmFsc2UpOwogfQorCitmdW5jdGlvbiB3YWl0Rm9yQW5p
bWF0aW9uVG9TdGFydChlbGVtZW50LCBjYWxsYmFjaykKK3sKKyAgICBlbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ3dlYmtpdEFuaW1hdGlvblN0YXJ0JywgZnVuY3Rpb24oKSB7CisgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTsgLy8gZGVsYXkgdG8gZ2l2ZSBoYXJkd2FyZSBh
bmltYXRpb25zIGEgY2hhbmNlIHRvIHN0YXJ0CisgICAgfSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9iaWctcm90YXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2FuaW1hdGlvbnMvYmlnLXJvdGF0aW9uLmh0bWwKaW5kZXggZWFiYTI2Ny4uZTNhYmYxOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9iaWctcm90YXRpb24uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL2JpZy1yb3RhdGlvbi5odG1sCkBAIC0yNSw3ICsyNSw3IEBA
CiAgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBl
eHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQogICAgICAgWyJyb3RhdGUiLCAxLCAiYm94IiwgIndl
YmtpdFRyYW5zZm9ybSIsIFstMSwwLDAsLTFdLCAwLjJdLAogICAgICAgWyJyb3RhdGUiLCAyLCAi
Ym94IiwgIndlYmtpdFRyYW5zZm9ybSIsIFsxLDAsMCwxXSwgMC4yXSwKLSAgICAgIFsicm90YXRl
IiwgMywgImJveCIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbLTEsMCwwLC0xXSwgMC4yXSwKKyAgICAg
IFsicm90YXRlIiwgMi45NSwgImJveCIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbLTEsMCwwLC0xXSwg
MC4yXSwKICAgICBdOwogICAgIAogICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tb3JpZ2luLXZz
LWZ1bmN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tb3JpZ2lu
LXZzLWZ1bmN0aW9ucy5odG1sCmluZGV4IGU2ODc0YzIuLmEzYzRlMjIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25z
Lmh0bWwKQEAgLTU3LDEwICs1Nyw4IEBACiAgICAgPC9zdHlsZT4KICAgICAKICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICB9CiAKICAg
ICAgIHJlc3VsdCA9ICIiOwogICAgICAgY29uc3QgZGVmYXVsdFRvbGVyYW5jZSA9IDAuMjsKQEAg
LTEwMywxMCArMTAxLDEzIEBACiAgICAgICAgICAgaWYgKHBhc3MpCiAgICAgICAgICAgICByZXN1
bHQgKz0gIlBBU1MoZWxlbWVudCAnIitpZCsiJyBtYXRjaGVzIGV4cGVjdGVkIHZhbHVlKTxicj4i
OwogICAgICAgfQotCisgICAgICAKICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKICAgICAgIHsKLSAg
ICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgnYjEnKTsgc25hcHNob3QoJ2IyJyk7IiwgMjUw
KTsKKyAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHNuYXBzaG90KCdiMScpOworICAgICAgICAgICAgc25hcHNob3QoJ2IyJyk7CisgICAgICAgICAg
fSwgMjUwKTsKIAogICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1k
cnQtYXBpLWRlbGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWRy
dC1hcGktZGVsYXkuaHRtbAppbmRleCA0YmJjOGRiLi41ODlmNTk5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWRydC1hcGktZGVsYXkuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWRydC1hcGktZGVsYXkuaHRtbApAQCAt
MjAsNyArMjAsOCBAQAogICAgIC5tb3ZlZCB7CiAgICAgICBsZWZ0OiAyMDBweDsKICAgICB9Ci0g
ICAgIDwvc3R5bGU+CisgICA8L3N0eWxlPgorICAgPHNjcmlwdCBzcmM9InRyYW5zaXRpb24tdGVz
dC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3Nj
cmlwdD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
CiAgICAgZnVuY3Rpb24gZW5kVGVzdCgpIHsKICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKQEAgLTQyLDcgKzQzLDcgQEAKICAgICAgIH0KICAgICAgIAogICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmNsYXNzTmFtZSA9ICJtb3ZlZCI7Ci0gICAg
ICB3aW5kb3cuc2V0VGltZW91dChlbmRUZXN0LCAwKTsKKyAgICAgIHdhaXRGb3JBbmltYXRpb25T
dGFydChlbmRUZXN0LCAxKTsKICAgICB9CiAgICA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24taGl0LXRlc3QtdHJhbnNmb3Jt
Lmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWhpdC10ZXN0LXRyYW5z
Zm9ybS5odG1sCmluZGV4IDEyYjc5OTguLjgxOTE4MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3RyYW5zaXRpb25zL3RyYW5zaXRpb24taGl0LXRlc3QtdHJhbnNmb3JtLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1oaXQtdGVzdC10cmFuc2Zvcm0uaHRtbApA
QCAtMjYsNiArMjYsNyBAQAogICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKICAgICB9CiAgICAg
IDwvc3R5bGU+CisgICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAgICAgZnVuY3Rp
b24gY2hlY2tSZXN1bHQocG9zLCBpc0luKQogICAgICAgICB7CkBAIC02OSw3ICs3MCw3IEBACiAg
ICAgICAgICAgICB9CiAgICAgICAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXQiKS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAidHJhbnNsYXRlWCgzMDBweCkiOwot
ICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZG9UZXN0LCAwKTsKKyAgICAgICAgICAgIHdh
aXRGb3JBbmltYXRpb25TdGFydChkb1Rlc3QpOwogICAgICAgICB9CiAgICA8L3NjcmlwdD4KIDwv
aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tc2hv
cnRoYW5kLWRlbGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLXNo
b3J0aGFuZC1kZWxheS5odG1sCmluZGV4IGIxMWEwOGMuLjU4ZDVjYjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tc2hvcnRoYW5kLWRlbGF5Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1zaG9ydGhhbmQtZGVsYXkuaHRt
bApAQCAtMjEsNyArMjEsOCBAQAogICAgIC5tb3ZlZCB7CiAgICAgICBsZWZ0OiAyMDBweDsKICAg
ICB9Ci0gICAgIDwvc3R5bGU+CisgICA8L3N0eWxlPgorICAgPHNjcmlwdCBzcmM9InRyYW5zaXRp
b24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04
Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+CiAgICAgZnVuY3Rpb24gZW5kVGVzdCgpIHsKICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKQEAgLTQzLDcgKzQ0LDcgQEAKICAgICAgIH0KICAgICAgIAogICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmNsYXNzTmFtZSA9ICJtb3ZlZCI7
Ci0gICAgICB3aW5kb3cuc2V0VGltZW91dChlbmRUZXN0LCAwKTsKKyAgICAgIHdhaXRGb3JBbmlt
YXRpb25TdGFydChlbmRUZXN0LCAxKTsKICAgICB9CiAgICA8L3NjcmlwdD4KIDwvaGVhZD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJz
LmpzIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMK
aW5kZXggNWNhYTFiNS4uYWE2NzliYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMKQEAgLTI2LDE1MCArMjYsMTY1IEBAIGZ1bmN0
aW9uIHJvdW5kTnVtYmVyKG51bSwgZGVjaW1hbFBsYWNlcykKICAgcmV0dXJuIE1hdGgucm91bmQo
bnVtICogTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpKSAvIE1hdGgucG93KDEwLCBkZWNpbWFs
UGxhY2VzKTsKIH0KIAotZnVuY3Rpb24gcnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0ZWQsIGNhbGxi
YWNrLCB1c2VQYXVzZUFQSSkKK2Z1bmN0aW9uIGlzQ2xvc2VFbm91Z2goYWN0dWFsLCBkZXNpcmVk
LCB0b2xlcmFuY2UpCiB7Ci0gICAgdmFyIHJlc3VsdCA9ICIiOwotICAgIHZhciBoYXNQYXVzZVRy
YW5zaXRpb25BUEkgPSAoJ2xheW91dFRlc3RDb250cm9sbGVyJyBpbiB3aW5kb3cpICYmICgncGF1
c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkJyBpbiBsYXlvdXRUZXN0Q29udHJvbGxl
cik7Ci0gICAgCi0gICAgZnVuY3Rpb24gaXNDbG9zZUVub3VnaChhY3R1YWwsIGRlc2lyZWQsIHRv
bGVyYW5jZSkKLSAgICB7Ci0gICAgICAgIHZhciBkaWZmID0gTWF0aC5hYnMoYWN0dWFsIC0gZGVz
aXJlZCk7Ci0gICAgICAgIHJldHVybiBkaWZmIDw9IHRvbGVyYW5jZTsKLSAgICB9CisgICAgdmFy
IGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKKyAgICByZXR1cm4gZGlmZiA8PSB0
b2xlcmFuY2U7Cit9CiAKLSAgICBmdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQs
IGluZGV4KQotICAgIHsKLSAgICAgICAgdmFyIHRpbWUgPSBleHBlY3RlZFtpbmRleF1bMF07Ci0g
ICAgICAgIHZhciBlbGVtZW50SWQgPSBleHBlY3RlZFtpbmRleF1bMV07Ci0gICAgICAgIHZhciBw
cm9wZXJ0eSA9IGV4cGVjdGVkW2luZGV4XVsyXTsKLSAgICAgICAgdmFyIGV4cGVjdGVkVmFsdWUg
PSBleHBlY3RlZFtpbmRleF1bM107Ci0gICAgICAgIHZhciB0b2xlcmFuY2UgPSBleHBlY3RlZFtp
bmRleF1bNF07Ci0KLSAgICAgICAgdmFyIGNvbXB1dGVkVmFsdWU7Ci0gICAgICAgIHZhciBwYXNz
ID0gZmFsc2U7Ci0gICAgICAgIHZhciB0cmFuc2Zvcm1SZWdFeHAgPSAvXi13ZWJraXQtdHJhbnNm
b3JtKFwuXGQrKT8kLzsKLSAgICAgICAgaWYgKHRyYW5zZm9ybVJlZ0V4cC50ZXN0KHByb3BlcnR5
KSkgewotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLndlYmtpdFRyYW5zZm9ybTsKLSAg
ICAgICAgICAgIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAic3RyaW5nIikKLSAgICAgICAg
ICAgICAgICBwYXNzID0gKGNvbXB1dGVkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAibnVtYmVyIikgewotICAgICAg
ICAgICAgICAgIHZhciBtID0gY29tcHV0ZWRWYWx1ZS5zcGxpdCgiKCIpOwotICAgICAgICAgICAg
ICAgIHZhciBtID0gbVsxXS5zcGxpdCgiLCIpOwotICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Ns
b3NlRW5vdWdoKHBhcnNlRmxvYXQobVtwYXJzZUludChwcm9wZXJ0eS5zdWJzdHJpbmcoMTgpKV0p
LCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICB2YXIgbSA9IGNvbXB1dGVkVmFsdWUuc3BsaXQoIigiKTsKLSAgICAgICAgICAg
ICAgICB2YXIgbSA9IG1bMV0uc3BsaXQoIiwiKTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgZXhwZWN0ZWRWYWx1ZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBw
YXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZsb2F0KG1baV0pLCBleHBlY3RlZFZhbHVlW2ldLCB0
b2xlcmFuY2UpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3MpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT0gImxpbmVIZWlnaHQiKSB7Ci0gICAgICAgICAgICBj
b21wdXRlZFZhbHVlID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkubGluZUhlaWdodCk7Ci0gICAgICAgICAgICBwYXNz
ID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2Up
OworZnVuY3Rpb24gY2hlY2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBpbmRleCkKK3sKKyAgICB2
YXIgdGltZSA9IGV4cGVjdGVkW2luZGV4XVswXTsKKyAgICB2YXIgZWxlbWVudElkID0gZXhwZWN0
ZWRbaW5kZXhdWzFdOworICAgIHZhciBwcm9wZXJ0eSA9IGV4cGVjdGVkW2luZGV4XVsyXTsKKyAg
ICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkW2luZGV4XVszXTsKKyAgICB2YXIgdG9sZXJh
bmNlID0gZXhwZWN0ZWRbaW5kZXhdWzRdOworCisgICAgdmFyIGNvbXB1dGVkVmFsdWU7CisgICAg
dmFyIHBhc3MgPSBmYWxzZTsKKyAgICB2YXIgdHJhbnNmb3JtUmVnRXhwID0gL14td2Via2l0LXRy
YW5zZm9ybShcLlxkKyk/JC87CisgICAgaWYgKHRyYW5zZm9ybVJlZ0V4cC50ZXN0KHByb3BlcnR5
KSkgeworICAgICAgICBjb21wdXRlZFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkud2Via2l0VHJhbnNmb3JtOworICAgICAg
ICBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gInN0cmluZyIpCisgICAgICAgICAgICBwYXNz
ID0gKGNvbXB1dGVkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKHR5
cGVvZiBleHBlY3RlZFZhbHVlID09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB2YXIgbSA9IGNv
bXB1dGVkVmFsdWUuc3BsaXQoIigiKTsKKyAgICAgICAgICAgIHZhciBtID0gbVsxXS5zcGxpdCgi
LCIpOworICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2gocGFyc2VGbG9hdChtW3BhcnNl
SW50KHByb3BlcnR5LnN1YnN0cmluZygxOCkpXSksIGV4cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpOwotICAgICAgICAgICAgaWYgKGNvbXB1dGVkU3R5
bGUuY3NzVmFsdWVUeXBlID09IENTU1ZhbHVlLkNTU19WQUxVRV9MSVNUKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gRm9yIG5vdywgYXNzdW1lIHRoYXQgdmFsdWUgbGlzdHMgYXJlIHNpbXBsZSBsaXN0
cyBvZiBudW1iZXIgdmFsdWVzIChlLmcuIHRyYW5zZm9ybS1vcmlnaW4pCi0gICAgICAgICAgICAg
ICAgdmFyIHZhbHVlcyA9IFtdOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y29tcHV0ZWRTdHlsZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMu
cHVzaChjb21wdXRlZFN0eWxlW2ldLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NT
X05VTUJFUikpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb21wdXRlZFZh
bHVlID0gdmFsdWVzLmpvaW4oJywnKTsKLSAgICAgICAgICAgICAgICBwYXNzID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgICAgICAgICAgcGFzcyAmPSBpc0Nsb3NlRW5vdWdoKHZhbHVlc1tpXSwgZXhwZWN0
ZWRWYWx1ZVtpXSwgdG9sZXJhbmNlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcHV0ZWRT
dHlsZS5jc3NWYWx1ZVR5cGUgPT0gQ1NTVmFsdWUuQ1NTX1BSSU1JVElWRV9WQUxVRSkgewotICAg
ICAgICAgICAgICAgIHN3aXRjaCAoY29tcHV0ZWRTdHlsZS5wcmltaXRpdmVUeXBlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX1NUUklORzoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZFN0eWxlLmdldFN0cmlu
Z1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gY29tcHV0ZWRWYWx1ZSA9
PSBleHBlY3RlZFZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX1JHQkNPTE9SOgotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHJnYkNvbG9yID0gY29tcHV0ZWRTdHlsZS5nZXRSR0JDb2xv
clZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gW3JnYkNv
bG9yLnJlZC5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JDb2xvci5ncmVlbi5nZXRG
bG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JDb2xvci5ibHVlLmdldEZsb2F0VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUildOyAvLyBhbHBoYSBpcyBub3QgZXhwb3NlZCB0byBK
UwotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXNzICY9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZVtpXSwgZXhwZWN0ZWRW
YWx1ZVtpXSwgdG9sZXJhbmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlLkNTU19SRUNUOgotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IGNvbXB1dGVkU3R5bGUuZ2V0UmVjdFZh
bHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gY29tcHV0ZWRWYWx1ZSA9PSBl
eHBlY3RlZFZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0
ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB2YXIgbSA9IGNvbXB1dGVkVmFsdWUuc3BsaXQoIigiKTsKKyAgICAgICAgICAg
IHZhciBtID0gbVsxXS5zcGxpdCgiLCIpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4
cGVjdGVkVmFsdWUubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBwYXNzID0gaXNDbG9z
ZUVub3VnaChwYXJzZUZsb2F0KG1baV0pLCBleHBlY3RlZFZhbHVlW2ldLCB0b2xlcmFuY2UpOwor
ICAgICAgICAgICAgICAgIGlmICghcGFzcykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09ICJsaW5l
SGVpZ2h0IikgeworICAgICAgICBjb21wdXRlZFZhbHVlID0gcGFyc2VJbnQod2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkubGluZUhlaWdo
dCk7CisgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVk
VmFsdWUsIHRvbGVyYW5jZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGNvbXB1dGVkU3R5
bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgaWYgKGNvbXB1
dGVkU3R5bGUuY3NzVmFsdWVUeXBlID09IENTU1ZhbHVlLkNTU19WQUxVRV9MSVNUKSB7CisgICAg
ICAgICAgICAvLyBGb3Igbm93LCBhc3N1bWUgdGhhdCB2YWx1ZSBsaXN0cyBhcmUgc2ltcGxlIGxp
c3RzIG9mIG51bWJlciB2YWx1ZXMgKGUuZy4gdHJhbnNmb3JtLW9yaWdpbikKKyAgICAgICAgICAg
IHZhciB2YWx1ZXMgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcHV0
ZWRTdHlsZS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGNvbXB1
dGVkU3R5bGVbaV0uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gdmFsdWVzLmpvaW4o
JywnKTsKKyAgICAgICAgICAgIHBhc3MgPSB0cnVlOworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgcGFzcyAmPSBpc0Ns
b3NlRW5vdWdoKHZhbHVlc1tpXSwgZXhwZWN0ZWRWYWx1ZVtpXSwgdG9sZXJhbmNlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjb21wdXRlZFN0eWxlLmNzc1ZhbHVlVHlwZSA9PSBDU1NWYWx1ZS5DU1Nf
UFJJTUlUSVZFX1ZBTFVFKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvbXB1dGVkU3R5bGUucHJp
bWl0aXZlVHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWUuQ1NT
X1NUUklORzoKKyAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IGNvbXB1dGVkU3R5
bGUuZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGNvbXB1dGVk
VmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZS5DU1NfUkdCQ09MT1I6CisgICAgICAg
ICAgICAgICAgICAgIHZhciByZ2JDb2xvciA9IGNvbXB1dGVkU3R5bGUuZ2V0UkdCQ29sb3JWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gW3JnYkNvbG9yLnJlZC5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJnYkNvbG9yLmdyZWVuLmdldEZsb2F0VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmdiQ29sb3IuYmx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNT
U19OVU1CRVIpXTsgLy8gYWxwaGEgaXMgbm90IGV4cG9zZWQgdG8gSlMKKyAgICAgICAgICAgICAg
ICAgICAgcGFzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMzsgKytpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAmPSBpc0Nsb3NlRW5vdWdo
KGNvbXB1dGVkVmFsdWVbaV0sIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWUuQ1NTX1JFQ1Q6CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRl
ZFN0eWxlLmdldFJlY3RWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBwYXNzID0gY29tcHV0
ZWRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1C
RVIpOworICAgICAgICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZh
bHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHBhc3MpCi0gICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MgLSBcIiIg
KyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsgIlwiIGVsZW1l
bnQgYXQgIiArIHRpbWUgKyAicyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAiICsgZXhwZWN0ZWRW
YWx1ZSArICI8YnI+IjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlM
IC0gXCIiICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJc
IiBlbGVtZW50IGF0ICIgKyB0aW1lICsgInMgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFZhbHVlICsg
IiBidXQgc2F3OiAiICsgY29tcHV0ZWRWYWx1ZSArICI8YnI+IjsKICAgICB9CiAKLSAgICBmdW5j
dGlvbiBlbmRUZXN0KCkKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgaWYgKHBhc3MpCisgICAgICAgIHJlc3Vs
dCArPSAiUEFTUyAtIFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVt
ZW50SWQgKyAiXCIgZWxlbWVudCBhdCAiICsgdGltZSArICJzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86ICIgKyBleHBlY3RlZFZhbHVlICsgIjxicj4iOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0
ICs9ICJGQUlMIC0gXCIiICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1l
bnRJZCArICJcIiBlbGVtZW50IGF0ICIgKyB0aW1lICsgInMgZXhwZWN0ZWQ6ICIgKyBleHBlY3Rl
ZFZhbHVlICsgIiBidXQgc2F3OiAiICsgY29tcHV0ZWRWYWx1ZSArICI8YnI+IjsKK30KIAotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIH0KK2Z1bmN0aW9uIGVuZFRlc3QoKQor
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1
bHQ7CiAKLSAgICBmdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFsdWVDYWxsYmFjayhleHBlY3RlZCwg
aW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7IGNoZWNrRXhwZWN0ZWRW
YWx1ZShleHBlY3RlZCwgaW5kZXgpOyB9OwotICAgIH0KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CiAKLSAgICBmdW5jdGlvbiBydW5UZXN0KGV4cGVjdGVkKQotICAgIHsKLSAgICAgICAgdmFy
IG1heFRpbWUgPSAwOworZnVuY3Rpb24gY2hlY2tFeHBlY3RlZFZhbHVlQ2FsbGJhY2soZXhwZWN0
ZWQsIGluZGV4KQoreworICAgIHJldHVybiBmdW5jdGlvbigpIHsgY2hlY2tFeHBlY3RlZFZhbHVl
KGV4cGVjdGVkLCBpbmRleCk7IH07Cit9CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
eHBlY3RlZC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHRpbWUgPSBleHBlY3RlZFtp
XVswXTsKLSAgICAgICAgICAgIHZhciBlbGVtZW50SWQgPSBleHBlY3RlZFtpXVsxXTsKLSAgICAg
ICAgICAgIHZhciBwcm9wZXJ0eSA9IGV4cGVjdGVkW2ldWzJdOwotICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0eS5pbmRleE9mKCItd2Via2l0LXRyYW5zZm9ybSIpKQorZnVuY3Rpb24gcnVuVGVzdChl
eHBlY3RlZCwgdXNlUGF1c2VBUEkpCit7CisgICAgdmFyIG1heFRpbWUgPSAwOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHRpbWUg
PSBleHBlY3RlZFtpXVswXTsKKyAgICAgICAgdmFyIGVsZW1lbnRJZCA9IGV4cGVjdGVkW2ldWzFd
OworICAgICAgICB2YXIgcHJvcGVydHkgPSBleHBlY3RlZFtpXVsyXTsKKyAgICAgICAgaWYgKCFw
cm9wZXJ0eS5pbmRleE9mKCItd2Via2l0LXRyYW5zZm9ybSIpKQogICAgICAgICAgICAgcHJvcGVy
dHkgPSAiLXdlYmtpdC10cmFuc2Zvcm0iOwogCi0gICAgICAgICAgICAvLyBXZSBjYW4gb25seSB1
c2UgdGhlIHRyYW5zaXRpb24gZmFzdC1mb3J3YXJkIG1lY2hhbmlzbSBpZiBEUlQgaW1wbGVtZW50
cyBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoKQotICAgICAgICAgICAgaWYg
KGhhc1BhdXNlVHJhbnNpdGlvbkFQSSAmJiB1c2VQYXVzZUFQSSkgewotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJ
ZChwcm9wZXJ0eSwgdGltZSwgZWxlbWVudElkKTsKLSAgICAgICAgICAgICAgICBjaGVja0V4cGVj
dGVkVmFsdWUoZXhwZWN0ZWQsIGkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWUgPiBtYXhUaW1lKQotICAgICAgICAgICAgICAgICAg
ICBtYXhUaW1lID0gdGltZTsKKyAgICAgICAgLy8gV2UgY2FuIG9ubHkgdXNlIHRoZSB0cmFuc2l0
aW9uIGZhc3QtZm9yd2FyZCBtZWNoYW5pc20gaWYgRFJUIGltcGxlbWVudHMgcGF1c2VUcmFuc2l0
aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKCkKKyAgICAgICAgaWYgKGhhc1BhdXNlVHJhbnNpdGlv
bkFQSSAmJiB1c2VQYXVzZUFQSSkgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKHByb3BlcnR5LCB0aW1lLCBlbGVt
ZW50SWQpOworICAgICAgICAgICAgY2hlY2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aW1lID4gbWF4VGltZSkKKyAgICAgICAg
ICAgICAgICBtYXhUaW1lID0gdGltZTsKIAotICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGNoZWNrRXhwZWN0ZWRWYWx1ZUNhbGxiYWNrKGV4cGVjdGVkLCBpKSwgdGltZSAqIDEwMDAp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2hlY2tFeHBl
Y3RlZFZhbHVlQ2FsbGJhY2soZXhwZWN0ZWQsIGkpLCB0aW1lICogMTAwMCk7CiAgICAgICAgIH0K
LQotICAgICAgICBpZiAobWF4VGltZSA+IDApCi0gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91
dChlbmRUZXN0LCBtYXhUaW1lICogMTAwMCArIDUwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgZW5kVGVzdCgpOwogICAgIH0KLSAgICAKLSAgICBmdW5jdGlvbiBzdGFydFRlc3QoZXhwZWN0
ZWQsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKGNhbGxiYWNrKQorCisgICAgaWYgKG1h
eFRpbWUgPiAwKQorICAgICAgICB3aW5kb3cuc2V0VGltZW91dChlbmRUZXN0LCBtYXhUaW1lICog
MTAwMCArIDUwKTsKKyAgICBlbHNlCisgICAgICAgIGVuZFRlc3QoKTsKK30KKworZnVuY3Rpb24g
d2FpdEZvckFuaW1hdGlvblN0YXJ0KGNhbGxiYWNrLCBkZWxheSkKK3sKKyAgICB2YXIgZGVsYXlU
aW1lb3V0ID0gZGVsYXkgPyAxMDAwICogZGVsYXkgKyAxMCA6IDA7CisgICAgLy8gV2h5IHRoZSB0
d28gc2V0VGltZW91dHM/IFdlbGwsIGZvciBoYXJkd2FyZSBhbmltYXRpb25zIHdlIG5lZWQgdG8g
ZW5zdXJlIHRoYXQgdGhlIGhhcmR3YXJlIGFuaW1hdGlvbgorICAgIC8vIGhhcyBzdGFydGVkIGJl
Zm9yZSB3ZSB0cnkgdG8gcGF1c2UgaXQsIGFuZCB0aW1lcnMgZmlyZSBiZWZvcmUgYW5pbWF0aW9u
cyBnZXQgY29tbWl0dGVkIGluIHRoZSBydW5sb29wLgorICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0sIDApOworICAgIH0sIGRlbGF5VGltZW91dCk7
Cit9CiAKLSAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJ1blRlc3QoZXhw
ZWN0ZWQpOyB9LCAwKTsKLSAgICB9CitmdW5jdGlvbiBzdGFydFRlc3QoZXhwZWN0ZWQsIHVzZVBh
dXNlQVBJLCBjYWxsYmFjaykKK3sKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNr
KCk7CisKKyAgICB3YWl0Rm9yQW5pbWF0aW9uU3RhcnQoZnVuY3Rpb24oKSB7CisgICAgICAgIHJ1
blRlc3QoZXhwZWN0ZWQsIHVzZVBhdXNlQVBJKTsKKyAgICB9KTsKK30KKwordmFyIHJlc3VsdCA9
ICIiOwordmFyIGhhc1BhdXNlVHJhbnNpdGlvbkFQSTsKKworZnVuY3Rpb24gcnVuVHJhbnNpdGlv
blRlc3QoZXhwZWN0ZWQsIGNhbGxiYWNrLCB1c2VQYXVzZUFQSSwgZG9QaXhlbFRlc3QpCit7Cisg
ICAgaGFzUGF1c2VUcmFuc2l0aW9uQVBJID0gKCdsYXlvdXRUZXN0Q29udHJvbGxlcicgaW4gd2lu
ZG93KSAmJiAoJ3BhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCcgaW4gbGF5b3V0
VGVzdENvbnRyb2xsZXIpOwogICAgIAogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICBpZiAoIWRvUGl4ZWxUZXN0KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CiAgICAgfQogICAgIAogICAgIGlmICghZXhwZWN0ZWQpCiAgICAgICAgIHRocm93KCJFeHBlY3Rl
ZCByZXN1bHRzIGFyZSBtaXNzaW5nISIpOwogICAgIAotICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7IHN0YXJ0VGVzdChleHBlY3RlZCwgY2FsbGJhY2spOyB9
LCBmYWxzZSk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigp
IHsgc3RhcnRUZXN0KGV4cGVjdGVkLCB1c2VQYXVzZUFQSSwgY2FsbGJhY2spOyB9LCBmYWxzZSk7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3Bw
IGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBkMDE3MDRk
Li4wZTJhNTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAg
LTQ1LDYgKzQ1LDggQEAKICNpbmNsdWRlICJNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlckJv
eC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNr
aW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJVbml0QmV6aWVyLmgi
CiAKQEAgLTEwNzcsMTAgKzEwNzksMTggQEAgdm9pZCBBbmltYXRpb25CYXNlOjpnb0ludG9FbmRp
bmdPckxvb3BpbmdTdGF0ZSgpCiAgICAgbV9hbmltU3RhdGUgPSBpc0xvb3BpbmcgPyBBbmltYXRp
b25TdGF0ZUxvb3BpbmcgOiBBbmltYXRpb25TdGF0ZUVuZGluZzsKIH0KICAgCi12b2lkIEFuaW1h
dGlvbkJhc2U6OnBhdXNlQXRUaW1lKGRvdWJsZSB0KQordm9pZCBBbmltYXRpb25CYXNlOjpmcmVl
emVBdFRpbWUoZG91YmxlIHQpCiB7Ci0gICAgdXBkYXRlUGxheVN0YXRlKGZhbHNlKTsKKyAgICBB
U1NFUlQobV9zdGFydFRpbWUpOyAgICAgICAgLy8gaWYgbV9zdGFydFRpbWUgaXMgemVybywgd2Ug
aGF2ZW4ndCBzdGFydGVkIHlldCwgc28gd2UnbGwgZ2V0IGEgYmFkIHBhdXNlIHRpbWUuCiAgICAg
bV9wYXVzZVRpbWUgPSBtX3N0YXJ0VGltZSArIHQgLSBtX2FuaW1hdGlvbi0+ZGVsYXkoKTsKKwor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAobV9vYmplY3QgJiYgbV9v
YmplY3QtPmhhc0xheWVyKCkpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChtX29iamVjdCktPmxheWVyKCk7CisgICAgICAgIGlmIChsYXllci0+
aXNDb21wb3NpdGVkKCkpCisgICAgICAgICAgICBsYXllci0+YmFja2luZygpLT5zdXNwZW5kQW5p
bWF0aW9ucyhtX3BhdXNlVGltZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIGRvdWJsZSBBbmltYXRp
b25CYXNlOjpiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggYi9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuaAppbmRleCA4ZjU1YThlLi4zNDgyZjY1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaApAQCAtMTU2LDcgKzE1Niw4IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNUcmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQ7IH0KICAgICAKLSAgICB2b2lkIHBhdXNlQXRUaW1l
KGRvdWJsZSB0KTsKKyAgICAvLyBGcmVlemUgdGhlIGFuaW1hdGlvbjsgdXNlZCBieSBEdW1wUmVu
ZGVyVHJlZS4KKyAgICB2b2lkIGZyZWV6ZUF0VGltZShkb3VibGUgdCk7CiAgICAgCiAgICAgZG91
YmxlIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IDk0ODFiOGQuLjg5NDZk
ODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9u
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAK
QEAgLTQ4MCw3ICs0ODAsNyBAQCBib29sIENvbXBvc2l0ZUFuaW1hdGlvbjo6cGF1c2VBbmltYXRp
b25BdFRpbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBkb3VibGUgdAogCiAgICAgaW50IGNv
dW50ID0ga2V5ZnJhbWVBbmltLT5tX2FuaW1hdGlvbi0+aXRlcmF0aW9uQ291bnQoKTsKICAgICBp
ZiAoKHQgPj0gMC4wKSAmJiAoIWNvdW50IHx8ICh0IDw9IGNvdW50ICoga2V5ZnJhbWVBbmltLT5k
dXJhdGlvbigpKSkpIHsKLSAgICAgICAga2V5ZnJhbWVBbmltLT5wYXVzZUF0VGltZSh0KTsKKyAg
ICAgICAga2V5ZnJhbWVBbmltLT5mcmVlemVBdFRpbWUodCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtNDk3LDcgKzQ5Nyw3IEBAIGJvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjpw
YXVzZVRyYW5zaXRpb25BdFRpbWUoaW50IHByb3BlcnR5LCBkb3VibGUgdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCh0ID49IDAuMCkgJiYgKHQgPD0gaW1wbEFuaW0tPmR1cmF0
aW9uKCkpKSB7Ci0gICAgICAgIGltcGxBbmltLT5wYXVzZUF0VGltZSh0KTsKKyAgICAgICAgaW1w
bEFuaW0tPmZyZWV6ZUF0VGltZSh0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCA5YTllZjY3
Li43ZDQzODMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSQogICAgICAgICBt
X2NsaWVudC0+cGFpbnRDb250ZW50cyh0aGlzLCBjb250ZXh0LCBtX3BhaW50aW5nUGhhc2UsIGNs
aXApOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OnN1c3BlbmRBbmltYXRpb25zKCkKK3ZvaWQg
R3JhcGhpY3NMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlKQogewogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGQ3NjFjZGIuLjRkNzY2OGEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0yNDcsNyAr
MjQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb25zRm9yS2V5
ZnJhbWVzKGNvbnN0IFN0cmluZyYgLyoga2V5ZnJhbWVzTmFtZSAqLykgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgLyoga2V5ZnJhbWVzTmFtZSAqLykg
eyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgdmly
dHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzdW1lQW5pbWF0aW9ucygpOwogICAgIAogICAgIC8vIExheWVyIGNvbnRlbnRzCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDJj
MTIxNjQuLmViZGM2YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzTGF5ZXJDQS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYpOwogICAgIAotICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0
aW9ucyhkb3VibGUgdGltZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcm
IGtleWZyYW1lc05hbWUsIGRvdWJsZSBiZWdpblRpbWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCmluZGV4IDY4NWNmY2YuLmU1YjkwMzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJD
QS5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0Eu
bW0KQEAgLTE1NDYsOSArMTU0Niw5IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zv
cm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzdXNwZW5kQW5pbWF0aW9ucygp
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiB7
Ci0gICAgZG91YmxlIHQgPSBjdXJyZW50VGltZVRvTWVkaWFUaW1lKGN1cnJlbnRUaW1lKCkpOwor
ICAgIGRvdWJsZSB0ID0gY3VycmVudFRpbWVUb01lZGlhVGltZSh0aW1lID8gdGltZSA6IGN1cnJl
bnRUaW1lKCkpOwogICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVlZDowXTsKICAgICBbcHJpbWFy
eUxheWVyKCkgc2V0VGltZU9mZnNldDp0XTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IDQzNDkxNTUuLjI0NjQ3MmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTAyMCw5ICsxMDIwLDkgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnRyYW5zaXRpb25GaW5pc2hlZChpbnQgcHJvcGVydHkpCiAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+cmVtb3ZlQW5pbWF0aW9uc0ZvclByb3BlcnR5KGFuaW1hdGVkUHJvcGVy
dHkpOwogfQogCi12b2lkIFJlbmRlckxheWVyQmFja2luZzo6c3VzcGVuZEFuaW1hdGlvbnMoKQor
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQog
ewotICAgIG1fZ3JhcGhpY3NMYXllci0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICBtX2dyYXBo
aWNzTGF5ZXItPnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCiB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6cmVzdW1lQW5pbWF0aW9ucygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5oCmluZGV4IGNjNGQ3NWQuLmIwMjc2ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgYW5pbWF0
aW9uUGF1c2VkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCB0cmFuc2l0aW9uRmluaXNo
ZWQoaW50IHByb3BlcnR5KTsKIAotICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICB2
b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lID0gMCk7CiAgICAgdm9pZCByZXN1bWVB
bmltYXRpb25zKCk7CiAKICAgICBJbnRSZWN0IGNvbXBvc2l0ZWRCb3VuZHMoKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>