<?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>224609</bug_id>
          
          <creation_ts>2021-04-15 08:12:21 -0700</creation_ts>
          <short_desc>HTML parser should yield more aggressively</short_desc>
          <delta_ts>2021-10-04 08:26:57 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>231138</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>emilio</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1750612</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-15 08:12:21 -0700</bug_when>
    <thetext>This allows more rendering updates during page loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750613</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-15 08:13:11 -0700</bug_when>
    <thetext>rdar://73458064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750616</commentid>
    <comment_count>2</comment_count>
      <attachid>426107</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-15 08:16:42 -0700</bug_when>
    <thetext>Created attachment 426107
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750617</commentid>
    <comment_count>3</comment_count>
      <attachid>426108</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-15 08:20:02 -0700</bug_when>
    <thetext>Created attachment 426108
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750618</commentid>
    <comment_count>4</comment_count>
      <attachid>426108</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-15 08:25:11 -0700</bug_when>
    <thetext>Comment on attachment 426108
patch

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

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:37
&gt; +// FIXME: Yielding should probably be driven by display refresh.

It’s possible that while staying brief, we could say this even more directly and mention *why* that would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750670</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-15 10:48:39 -0700</bug_when>
    <thetext>&gt; It’s possible that while staying brief, we could say this even more directly
&gt; and mention *why* that would be good.

And take away the space for imagination and creativity?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750786</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-04-15 15:08:57 -0700</bug_when>
    <thetext>Nice collection of tests that need to be improved uncovered!

EWS only find up to 30 failures, so there are likely more. We probably don&apos;t want to just mark them as flaky, as it&apos;s quite a bit of test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754530</commentid>
    <comment_count>7</comment_count>
      <attachid>427129</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-27 02:08:51 -0700</bug_when>
    <thetext>Created attachment 427129
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761154</commentid>
    <comment_count>8</comment_count>
      <attachid>428939</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-18 08:01:32 -0700</bug_when>
    <thetext>Created attachment 428939
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761504</commentid>
    <comment_count>9</comment_count>
      <attachid>429040</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-19 04:45:24 -0700</bug_when>
    <thetext>Created attachment 429040
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761872</commentid>
    <comment_count>10</comment_count>
      <attachid>429149</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-20 02:27:18 -0700</bug_when>
    <thetext>Created attachment 429149
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761884</commentid>
    <comment_count>11</comment_count>
      <attachid>429150</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-20 02:53:52 -0700</bug_when>
    <thetext>Created attachment 429150
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761977</commentid>
    <comment_count>12</comment_count>
      <attachid>429150</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-20 09:02:58 -0700</bug_when>
    <thetext>Comment on attachment 429150
patch

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

&gt; Source/WebCore/ChangeLog:26
&gt; +        Consider yielding before script execution after 16ms has elapsed and at least 256 tokens have been parsed.

This is very straightforward to read in the code.

&gt; Source/WebCore/ChangeLog:28
&gt; +        Only yield for synchronous scripts.
&gt; +        Don&apos;t yield on very short inline scripts (this is an imperfect way to try to guess the execution cost).

This is harder to understand, so some comment would be good with the constant that defines a short inline script and the code that’s checks a script is synchronous. I really like the &quot;this is an imperfect way to try to guess the execution cost&quot; remark, the core of a classically helpful &quot;why&quot; comment, and similarly, a comment that says why we don&apos;t need to yield for async scripts would be a plus.

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:123
&gt; +    static const auto elapsedTimeLimit = 16_ms;
&gt; +    static const auto tokenLimit = 256;
&gt; +    static const auto inlineScriptLengthLimit = 1024;

Should use constexpr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762074</commentid>
    <comment_count>13</comment_count>
      <attachid>429201</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-20 12:00:41 -0700</bug_when>
    <thetext>Created attachment 429201
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762093</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-20 12:40:12 -0700</bug_when>
    <thetext>Committed r277818 (237965@main): &lt;https://commits.webkit.org/237965@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429201.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800071</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-04 08:26:57 -0700</bug_when>
    <thetext>This appears to have caused Bug 231138.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426107</attachid>
            <date>2021-04-15 08:16:42 -0700</date>
            <delta_ts>2021-04-15 08:20:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>parser-yield-16ms.patch</filename>
            <type>text/plain</type>
            <size>1297</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiOWM0ZjY0YmNiYjkuLjAxZGE0NzQ5MGJiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIxLTA0LTE1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBIVE1MIHBhcnNlciBzaG91bGQgeWllbGQgbW9yZSBhZ2dyZXNzaXZlbHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDYwOQor
ICAgICAgICByZGFyOi8vNzM0NTgwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwOgorCiAyMDIxLTA0LTE0ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEF2b2lkIGluZGlyZWN0IGxvYWQgaW4g
Q29udGFpbmVyTm9kZTo6aGFzT25lQ2hpbGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAppbmRleCBmMDdmOTMzMDkyOWUuLjUyOWI5
ZTU3MWZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5jcHAKQEAgLTM0LDggKzM0LDggQEAKIAogLy8gZGVmYXVsdFBhcnNlclRpbWVM
aW1pdCBpcyB0aGUgc2Vjb25kcyB0aGUgcGFyc2VyIHdpbGwgcnVuIGluIG9uZSB3cml0ZSgpIGNh
bGwKIC8vIGJlZm9yZSB5aWVsZGluZy4gSW5saW5lIDxzY3JpcHQ+IGV4ZWN1dGlvbiBjYW4gY2F1
c2UgaXQgdG8gZXhjZWVkIHRoZSBsaW1pdC4KLS8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRoaXMg
dmFsdWUgdG8gYmUgMC4yLgotc3RhdGljIGNvbnN0IGRvdWJsZSBkZWZhdWx0UGFyc2VyVGltZUxp
bWl0ID0gMC41MDA7CisvLyBGSVhNRTogWWllbGRpbmcgc2hvdWxkIHByb2JhYmx5IGJlIGRyaXZl
biBieSBkaXNwbGF5IHJlZnJlc2guCitzdGF0aWMgY29uc3QgZG91YmxlIGRlZmF1bHRQYXJzZXJU
aW1lTGltaXQgPSAwLjAxNjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426108</attachid>
            <date>2021-04-15 08:20:02 -0700</date>
            <delta_ts>2021-04-27 02:08:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>parser-yield-16ms-2.patch</filename>
            <type>text/plain</type>
            <size>1413</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiOWM0ZjY0YmNiYjkuLjRiZGQxNjcwMzlkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIxLTA0LTE1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBIVE1MIHBhcnNlciBzaG91bGQgeWllbGQgbW9yZSBhZ2dyZXNzaXZlbHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDYwOQor
ICAgICAgICByZGFyOi8vNzM0NTgwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFlpZWxkaW5nIG1vcmUgb2Z0ZW4gYWxsb3dzIG1vcmUg
cmVuZGVyaW5nIHVwZGF0ZXMgZHVyaW5nIHBhZ2UgbG9hZGluZy4KKworICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwOgorICAgICAgICAKKyAgICAgICAgRHJvcCB0
aGUgdGltZSBsaW1pdCBmcm9tIDUwMG1zIHRvIDE2bXMuCisKIDIwMjEtMDQtMTQgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXZvaWQgaW5kaXJlY3QgbG9hZCBp
biBDb250YWluZXJOb2RlOjpoYXNPbmVDaGlsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCmluZGV4IGYwN2Y5MzMwOTI5ZS4uNTI5
YjllNTcxZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VyU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VyU2NoZWR1bGVyLmNwcApAQCAtMzQsOCArMzQsOCBAQAogCiAvLyBkZWZhdWx0UGFyc2VyVGlt
ZUxpbWl0IGlzIHRoZSBzZWNvbmRzIHRoZSBwYXJzZXIgd2lsbCBydW4gaW4gb25lIHdyaXRlKCkg
Y2FsbAogLy8gYmVmb3JlIHlpZWxkaW5nLiBJbmxpbmUgPHNjcmlwdD4gZXhlY3V0aW9uIGNhbiBj
YXVzZSBpdCB0byBleGNlZWQgdGhlIGxpbWl0LgotLy8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdGhp
cyB2YWx1ZSB0byBiZSAwLjIuCi1zdGF0aWMgY29uc3QgZG91YmxlIGRlZmF1bHRQYXJzZXJUaW1l
TGltaXQgPSAwLjUwMDsKKy8vIEZJWE1FOiBZaWVsZGluZyBzaG91bGQgcHJvYmFibHkgYmUgZHJp
dmVuIGJ5IGRpc3BsYXkgcmVmcmVzaC4KK3N0YXRpYyBjb25zdCBkb3VibGUgZGVmYXVsdFBhcnNl
clRpbWVMaW1pdCA9IDAuMDE2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>
<flag name="review"
          id="446308"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="446319"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427129</attachid>
            <date>2021-04-27 02:08:51 -0700</date>
            <delta_ts>2021-05-18 08:01:32 -0700</delta_ts>
            <desc>wip</desc>
            <filename>parser-yield-script-refactor-16ms-256.patch</filename>
            <type>text/plain</type>
            <size>12722</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDZiZWVlZjJkZDkwOS4uMjIxN2MwZGNjZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKQogICAg
IGVuZElmRGVsYXllZCgpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0
c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCkKK2Jvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3Jp
cHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXJZaWVsZGluZyhTeW5jaHJvbm91c01vZGUgbW9kZSwgUHVt
cFNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgQVNTRVJUKHNjcmlwdGluZ0NvbnRlbnRJc0FsbG93
ZWQocGFyc2VyQ29udGVudFBvbGljeSgpKSk7CiAKQEAgLTIzMywxNiArMjMzLDM2IEBAIHZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKQogICAg
ICAgICAgICAgYXV0byBuZXdFbGVtZW50ID0gZWxlbWVudEludGVyZmFjZS5jb25zdHJ1Y3RFbGVt
ZW50V2l0aEZhbGxiYWNrKCpkb2N1bWVudCgpLCBjb25zdHJ1Y3Rpb25EYXRhLT5uYW1lKTsKICAg
ICAgICAgICAgIG1fdHJlZUJ1aWxkZXItPmRpZENyZWF0ZUN1c3RvbU9yRmFsbGJhY2tFbGVtZW50
KFdURk1vdmUobmV3RWxlbWVudCksICpjb25zdHJ1Y3Rpb25EYXRhKTsKICAgICAgICAgfQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBib29sIGhh
ZFByZWxvYWRTY2FubmVyID0gaGFzUHJlbG9hZFNjYW5uZXIoKTsKKwogICAgIFRleHRQb3NpdGlv
biBzY3JpcHRTdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24o
KTsKICAgICBpZiAoYXV0byBzY3JpcHRFbGVtZW50ID0gbV90cmVlQnVpbGRlci0+dGFrZVNjcmlw
dFRvUHJvY2VzcyhzY3JpcHRTdGFydFBvc2l0aW9uKSkgewogICAgICAgICBBU1NFUlQoIW1fdHJl
ZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ug
d2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdt
ZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAgICAgICAgICBtX3NjcmlwdFJ1
bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2VOb25OdWxsKCksIHNjcmlwdFN0YXJ0
UG9zaXRpb24pOworICAgICAgICAgICAgbV9zY3JpcHRSdW5uZXItPnRyeVJ1blNjcmlwdCgqc2Ny
aXB0RWxlbWVudCwgc2NyaXB0U3RhcnRQb3NpdGlvbik7CisgICAgfQorCisgICAgaWYgKG1fc2Ny
aXB0UnVubmVyICYmIG1fc2NyaXB0UnVubmVyLT5oYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpKSB7
CisgICAgICAgIGlmIChtX3NjcmlwdFJ1bm5lci0+aXNFeGVjdXRpbmdTY3JpcHQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gVW53aW5kIHRvIHRoZSBvdXRlcm1vc3QgSFRNTFNjcmlw
dFJ1bm5lcjo6ZXhlY3V0ZSBiZWZvcmUgY29udGludWluZyBwYXJzaW5nLgorICAgICAgICAvLyBJ
ZiBwcmVsb2FkIHNjYW5uZXIgZ290IGNyZWF0ZWQsIGl0IGlzIG1pc3NpbmcgdGhlIHNvdXJjZSBh
ZnRlciB0aGUgY3VycmVudCBpbnNlcnRpb24gcG9pbnQuIEFwcGVuZCBpdCBhbmQgc2Nhbi4KKyAg
ICAgICAgaWYgKCFoYWRQcmVsb2FkU2Nhbm5lciAmJiBoYXNQcmVsb2FkU2Nhbm5lcigpKQorICAg
ICAgICAgICAgYXBwZW5kQ3VycmVudElucHV0U3RyZWFtVG9QcmVsb2FkU2Nhbm5lckFuZFNjYW4o
KTsKKworICAgICAgICBpZiAoIW1fc2NyaXB0UnVubmVyLT5pc1BhcnNlckJsb2NraW5nU2NyaXB0
UmVhZHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAobW9kZSA9
PSBBbGxvd1lpZWxkICYmIG1fdHJlZUJ1aWxkZXItPmlzUGFyc2luZ0JvZHkoKSAmJiBtX3BhcnNl
clNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoc2Vzc2lvbikpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0
ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIERvY3VtZW50KiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnRleHRGb3JQYXJzaW5nU2Vzc2lv
bigpCkBAIC0yNTgsOSArMjc4LDggQEAgYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tl
bml6ZXJMb29wKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBib29sIHBhcnNpbmdGcmEKIHsKICAgICBk
byB7CiAgICAgICAgIGlmIChVTkxJS0VMWShpc1dhaXRpbmdGb3JTY3JpcHRzKCkpKSB7Ci0gICAg
ICAgICAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5zaG91
bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChzZXNzaW9uKSkKKyAgICAgICAgICAgIGlmIChy
dW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXJZaWVsZGluZyhtb2RlLCBzZXNzaW9uKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVz
ZWRUcmVlQnVpbGRlcigpOwogICAgICAgICAgICAgLy8gSWYgd2UncmUgcGF1c2VkIHdhaXRpbmcg
Zm9yIGEgc2NyaXB0LCB3ZSB0cnkgdG8gZXhlY3V0ZSBzY3JpcHRzIGJlZm9yZSBjb250aW51aW5n
LgogICAgICAgICAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzMsNyArMjkyLDcgQEAgYm9vbCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXJMb29wKFN5bmNocm9ub3VzTW9kZSBtb2Rl
LCBib29sIHBhcnNpbmdGcmEKICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzaW5nRnJhZ21lbnQg
JiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkubG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIGlmIChVTkxJS0VMWShtb2RlID09IEFsbG93WWllbGQgJiYgbV9w
YXJzZXJTY2hlZHVsZXItPnNob3VsZFlpZWxkQmVmb3JlVG9rZW4oc2Vzc2lvbikpKQorICAgICAg
ICBpZiAoVU5MSUtFTFkobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fdHJlZUJ1aWxkZXItPmlzUGFy
c2luZ0JvZHkoKSAmJiBtX3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVUb2tlbihz
ZXNzaW9uKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAoIXBhcnNp
bmdGcmFnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmgKaW5kZXggMDU3OWNkNTJjMTdkLi5mNGU3NzIzZTczMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xMDksNyArMTA5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKFN5bmNocm9u
b3VzTW9kZSk7CiAgICAgdm9pZCBjb25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tlbihIVE1MVG9rZW5p
emVyOjpUb2tlblB0ciYpOwogCi0gICAgdm9pZCBydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxk
ZXIoKTsKKyAgICBib29sIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcllpZWxkaW5nKFN5
bmNocm9ub3VzTW9kZSwgUHVtcFNlc3Npb24mKTsKICAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRl
clNjcmlwdEV4ZWN1dGlvbigpOwogCiAgICAgdm9pZCBhdHRlbXB0VG9FbmQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaAppbmRleCAxMTg3NmFhMWEw
MjguLjg1OTEwNzk3OTg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxF
bGVtZW50U3RhY2suaApAQCAtMTQ4LDYgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc09u
bHlPbmVFbGVtZW50KCkgY29uc3Q7CiAgICAgYm9vbCBzZWNvbmRFbGVtZW50SXNIVE1MQm9keUVs
ZW1lbnQoKSBjb25zdDsKICAgICBib29sIGhhc1RlbXBsYXRlSW5IVE1MU2NvcGUoKSBjb25zdDsK
KyAgICBib29sIGhhc0JvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHlFbGVtZW50OyB9CiAgICAg
RWxlbWVudCYgaHRtbEVsZW1lbnQoKSBjb25zdDsKICAgICBFbGVtZW50JiBoZWFkRWxlbWVudCgp
IGNvbnN0OwogICAgIEVsZW1lbnQmIGJvZHlFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCmluZGV4IGYwN2Y5
MzMwOTI5ZS4uOTdmZmEzMDdlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcApAQCAtNjUsMTEgKzY1LDYgQEAgQWN0aXZlUGFy
c2VyU2Vzc2lvbjo6fkFjdGl2ZVBhcnNlclNlc3Npb24oKQogUHVtcFNlc3Npb246OlB1bXBTZXNz
aW9uKHVuc2lnbmVkJiBuZXN0aW5nTGV2ZWwsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IE5l
c3RpbmdMZXZlbEluY3JlbWVudGVyKG5lc3RpbmdMZXZlbCkKICAgICAsIEFjdGl2ZVBhcnNlclNl
c3Npb24oZG9jdW1lbnQpCi0gICAgLy8gU2V0dGluZyBwcm9jZXNzZWRUb2tlbnMgdG8gSU5UX01B
WCBjYXVzZXMgdXMgdG8gY2hlY2sgZm9yIHlpZWxkcwotICAgIC8vIGFmdGVyIGFueSB0b2tlbiBk
dXJpbmcgYW55IHBhcnNlIHdoZXJlIHlpZWxkaW5nIGlzIGFsbG93ZWQuCi0gICAgLy8gQXQgdGhh
dCB0aW1lIHdlJ2xsIGluaXRpYWxpemUgc3RhcnRUaW1lLgotICAgICwgcHJvY2Vzc2VkVG9rZW5z
KElOVF9NQVgpCi0gICAgLCBkaWRTZWVTY3JpcHQoZmFsc2UpCiB7CiB9CiAKQEAgLTEwOSwxMyAr
MTA0LDIyIEBAIGJvb2wgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVj
dXRpbmdTY3JpcHQoUHVtcFNlc3Npb24mIHNlc3Npb24pCiAgICAgLy8gSWYgd2UndmUgbmV2ZXIg
cGFpbnRlZCBiZWZvcmUgYW5kIGEgbGF5b3V0IGlzIHBlbmRpbmcsIHlpZWxkIHByaW9yIHRvIHJ1
bm5pbmcKICAgICAvLyBzY3JpcHRzIHRvIGdpdmUgdGhlIHBhZ2UgYSBjaGFuY2UgdG8gcGFpbnQg
ZWFybGllci4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gbV9wYXJzZXIuZG9jdW1l
bnQoKTsKLSAgICBib29sIG5lZWRzRmlyc3RQYWludCA9IGRvY3VtZW50LT52aWV3KCkgJiYgIWRv
Y3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWludGVkKCk7CisvLyAgICBib29sIG5lZWRzRmlyc3RQ
YWludCA9IGRvY3VtZW50LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWlu
dGVkKCk7CiAgICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSB0cnVlOwogCiAgICAgaWYgKFVOTElL
RUxZKG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgcmV0dXJuIG5lZWRzRmlyc3RQYWludCAmJiBkb2N1bWVudC0+aXNMYXlv
dXRUaW1lckFjdGl2ZSgpOworICAgIFNlY29uZHMgZWxhcHNlZFRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIHNlc3Npb24uc3RhcnRUaW1lOworCisvLyAgICBXVEZMb2dBbHdheXMoInNob3Vs
ZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0IG5lZWRzRmlyc3RQYWludCAlZCBwcm9jZXNzZWRU
b2tlbnMgJWQgZWxhcHNlZFRpbWUgJWYiLCBuZWVkc0ZpcnN0UGFpbnQsIHNlc3Npb24ucHJvY2Vz
c2VkVG9rZW5zLCBlbGFwc2VkVGltZS5taWxsaXNlY29uZHMoKSk7CisKKyAgICBpZiAoZWxhcHNl
ZFRpbWUgPiAxNl9tcyAmJiBzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+IDI1NikgeworLy8gICAg
ICAgIFdURkxvZ0Fsd2F5cygiWUlFTEQgc2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQg
bmVlZHNGaXJzdFBhaW50ICVkIHByb2Nlc3NlZFRva2VucyAlZCBlbGFwc2VkVGltZSAlZiBvd25l
ckVsZW1lbnQgJWQiLCBuZWVkc0ZpcnN0UGFpbnQsIHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zLCBl
bGFwc2VkVGltZS5taWxsaXNlY29uZHMoKSwgISFkb2N1bWVudC0+b3duZXJFbGVtZW50KCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZv
aWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2NoZWR1bGVGb3JSZXN1bWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCmluZGV4IDJjYTJmMTYx
OWM1MC4uMWRjOWZiZDZkM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlclNjaGVkdWxlci5oCkBAIC01Miw5ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgUHVt
cFNlc3Npb24odW5zaWduZWQmIG5lc3RpbmdMZXZlbCwgRG9jdW1lbnQqKTsKICAgICB+UHVtcFNl
c3Npb24oKTsKIAotICAgIHVuc2lnbmVkIHByb2Nlc3NlZFRva2VuczsKLSAgICBNb25vdG9uaWNU
aW1lIHN0YXJ0VGltZTsKLSAgICBib29sIGRpZFNlZVNjcmlwdDsKKyAgICB1bnNpZ25lZCBwcm9j
ZXNzZWRUb2tlbnMgeyAwIH07CisgICAgdW5zaWduZWQgcHJvY2Vzc2VkVG9rZW5zT25MYXN0Q2hl
Y2sgeyAwIH07CisgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgeyBNb25vdG9uaWNUaW1lOjpu
b3coKSB9OworICAgIGJvb2wgZGlkU2VlU2NyaXB0IHsgZmFsc2UgfTsKIH07CiAKIGNsYXNzIEhU
TUxQYXJzZXJTY2hlZHVsZXIgewpAQCAtNzIsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChVTkxJS0VMWShtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJvY2Vz
c2VkVG9rZW5zID4gbnVtYmVyT2ZUb2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8IHNlc3Np
b24uZGlkU2VlU2NyaXB0KSkKKyAgICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJvY2Vzc2Vk
VG9rZW5zID4gc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnNPbkxhc3RDaGVjayArIG51bWJlck9mVG9r
ZW5zQmVmb3JlQ2hlY2tpbmdGb3JZaWVsZCB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkpCiAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tGb3JZaWVsZChzZXNzaW9uKTsKIAogICAgICAgICArK3Nlc3Np
b24ucHJvY2Vzc2VkVG9rZW5zOwpAQCAtMTA4LDE2ICsxMDksOSBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBjaGVja0ZvcllpZWxkKFB1bXBTZXNzaW9uJiBzZXNzaW9uKQogICAgIHsKLSAgICAgICAg
c2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnMgPSAxOworICAgICAgICBzZXNzaW9uLnByb2Nlc3NlZFRv
a2Vuc09uTGFzdENoZWNrID0gc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7CiAgICAgICAgIHNlc3Np
b24uZGlkU2VlU2NyaXB0ID0gZmFsc2U7CiAKLSAgICAgICAgLy8gTW9ub3RvbmljVGltZTo6bm93
KCkgY2FuIGJlIGV4cGVuc2l2ZS4gQnkgZGVsYXlpbmcsIHdlIGF2b2lkZWQgY2FsbGluZwotICAg
ICAgICAvLyBNb25vdG9uaWNUaW1lOjpub3coKSB3aGVuIGNvbnN0cnVjdGluZyBub24teWllbGRp
bmcgUHVtcFNlc3Npb25zLgotICAgICAgICBpZiAoIXNlc3Npb24uc3RhcnRUaW1lKSB7Ci0gICAg
ICAgICAgICBzZXNzaW9uLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KICAgICAgICAgU2Vjb25kcyBlbGFwc2Vk
VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc2Vzc2lvbi5zdGFydFRpbWU7CiAgICAgICAg
IHJldHVybiBlbGFwc2VkVGltZSA+IG1fcGFyc2VyVGltZUxpbWl0OwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKaW5kZXggMTY1ODYz
OWI0ZWNjLi5lYjYxMTU0NmIwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0xMjgsMjcgKzEyOCw2IEBAIHZvaWQgSFRNTFNjcmlw
dFJ1bm5lcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0
KQogICAgIG1faG9zdC5zdG9wV2F0Y2hpbmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQpOwogfQogCi0v
LyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBtYXRjaCAxMC4yLjUuMTEgIkFuIGVuZCB0YWcgd2hvc2Ug
dGFnIG5hbWUgaXMgJ3NjcmlwdCciCi0vLyBTY3JpcHQgaGFuZGxpbmcgbGl2ZXMgb3V0c2lkZSB0
aGUgdHJlZSBidWlsZGVyIHRvIGtlZXAgdGhlIGVhY2ggY2xhc3Mgc2ltcGxlLgotdm9pZCBIVE1M
U2NyaXB0UnVubmVyOjpleGVjdXRlKFJlZjxTY3JpcHRFbGVtZW50PiYmIGVsZW1lbnQsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbikKLXsKLSAgICAvLyBGSVhNRTogSWYg
c2NyaXB0aW5nIGlzIGRpc2FibGVkLCBhbHdheXMganVzdCByZXR1cm4uCi0KLSAgICBib29sIGhh
ZFByZWxvYWRTY2FubmVyID0gbV9ob3N0Lmhhc1ByZWxvYWRTY2FubmVyKCk7Ci0KLSAgICAvLyBU
cnkgdG8gZXhlY3V0ZSB0aGUgc2NyaXB0IGdpdmVuIHRvIHVzLgotICAgIHJ1blNjcmlwdChlbGVt
ZW50LmdldCgpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKLQotICAgIGlmIChoYXNQYXJzZXJCbG9j
a2luZ1NjcmlwdCgpKSB7Ci0gICAgICAgIGlmIChpc0V4ZWN1dGluZ1NjcmlwdCgpKQotICAgICAg
ICAgICAgcmV0dXJuOyAvLyBVbndpbmQgdG8gdGhlIG91dGVybW9zdCBIVE1MU2NyaXB0UnVubmVy
OjpleGVjdXRlIGJlZm9yZSBjb250aW51aW5nIHBhcnNpbmcuCi0gICAgICAgIC8vIElmIHByZWxv
YWQgc2Nhbm5lciBnb3QgY3JlYXRlZCwgaXQgaXMgbWlzc2luZyB0aGUgc291cmNlIGFmdGVyIHRo
ZSBjdXJyZW50IGluc2VydGlvbiBwb2ludC4gQXBwZW5kIGl0IGFuZCBzY2FuLgotICAgICAgICBp
ZiAoIWhhZFByZWxvYWRTY2FubmVyICYmIG1faG9zdC5oYXNQcmVsb2FkU2Nhbm5lcigpKQotICAg
ICAgICAgICAgbV9ob3N0LmFwcGVuZEN1cnJlbnRJbnB1dFN0cmVhbVRvUHJlbG9hZFNjYW5uZXJB
bmRTY2FuKCk7Ci0gICAgICAgIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7Ci0gICAg
fQotfQotCiBib29sIEhUTUxTY3JpcHRSdW5uZXI6Omhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gISFtX3BhcnNlckJsb2NraW5nU2NyaXB0OwpAQCAtMjMyLDcg
KzIxMSw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cmVxdWVzdERlZmVycmVkU2NyaXB0KFNj
cmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQpCiAKIC8vIFRoaXMgbWV0aG9kIGlzIG1lYW50IHRv
IG1hdGNoIHRoZSBIVE1MNSBkZWZpbml0aW9uIG9mICJydW5uaW5nIGEgc2NyaXB0IgogLy8gaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
c2NyaXB0aW5nLTEuaHRtbCNydW5uaW5nLWEtc2NyaXB0Ci12b2lkIEhUTUxTY3JpcHRSdW5uZXI6
OnJ1blNjcmlwdChTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50LCBjb25zdCBUZXh0UG9zaXRp
b24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCit2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnRyeVJ1blNj
cmlwdChTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50LCBjb25zdCBUZXh0UG9zaXRpb24mIHNj
cmlwdFN0YXJ0UG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwogICAgIEFTU0VS
VCghaGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU2NyaXB0UnVubmVyLmgKaW5kZXggZTY1ZGM0NzgyZWE2Li5kNTI3NWUwZmMzNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmgKQEAg
LTQ2LDI4ICs0NiwyNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldGFjaCgpOwogCi0gICAgLy8g
UHJvY2Vzc2VzIHRoZSBwYXNzZWQgaW4gc2NyaXB0IGFuZCBhbnkgcGVuZGluZyBzY3JpcHRzIGlm
IHBvc3NpYmxlLgotICAgIHZvaWQgZXhlY3V0ZShSZWY8U2NyaXB0RWxlbWVudD4mJiwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKTsKLQogICAgIHZvaWQgZXhlY3V0ZVNj
cmlwdHNXYWl0aW5nRm9yTG9hZChQZW5kaW5nU2NyaXB0Jik7CiAgICAgYm9vbCBoYXNTY3JpcHRz
V2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzOyB9CiAgICAgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHls
ZXNoZWV0cygpOwogICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yUGFyc2luZygpOwog
CiAgICAgYm9vbCBoYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpIGNvbnN0OworICAgIGJvb2wgaXNQ
YXJzZXJCbG9ja2luZ1NjcmlwdFJlYWR5KCkgeyByZXR1cm4gaXNQZW5kaW5nU2NyaXB0UmVhZHko
Km1fcGFyc2VyQmxvY2tpbmdTY3JpcHQpOyB9CiAgICAgYm9vbCBpc0V4ZWN1dGluZ1NjcmlwdCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9zY3JpcHROZXN0aW5nTGV2ZWw7IH0KIAorICAgIHZvaWQgdHJ5
UnVuU2NyaXB0KFNjcmlwdEVsZW1lbnQmLCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0
UG9zaXRpb24pOworICAgIHZvaWQgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKKwog
cHJpdmF0ZToKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKIAogICAgIHZvaWQgZXhlY3V0ZVBl
bmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmKTsKLSAgICB2b2lkIGV4
ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CiAKICAgICB2b2lkIHJlcXVlc3RQYXJzaW5n
QmxvY2tpbmdTY3JpcHQoU2NyaXB0RWxlbWVudCYpOwogICAgIHZvaWQgcmVxdWVzdERlZmVycmVk
U2NyaXB0KFNjcmlwdEVsZW1lbnQmKTsKIAotICAgIHZvaWQgcnVuU2NyaXB0KFNjcmlwdEVsZW1l
bnQmLCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pOwotCiAgICAgdm9p
ZCB3YXRjaEZvckxvYWQoUGVuZGluZ1NjcmlwdCYpOwogICAgIHZvaWQgc3RvcFdhdGNoaW5nRm9y
TG9hZChQZW5kaW5nU2NyaXB0Jik7CiAgICAgYm9vbCBpc1BlbmRpbmdTY3JpcHRSZWFkeShjb25z
dCBQZW5kaW5nU2NyaXB0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5oCmluZGV4IDIwMzVlMmRiMDIwMS4uYTljNGI0NWQ2NTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtNjMsNiArNjMsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzUGFyc2luZ1RlbXBsYXRlQ29udGVudHMoKSBjb25zdDsKICAg
ICBib29sIGhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpIGNvbnN0OworICAgIGJvb2wgaXNQ
YXJzaW5nQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZS5vcGVuRWxlbWVudHMoKS5oYXNCb2R5
KCk7IH0KIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIHRvIHRha2UgdGhlIHBhcnNlci1ibG9ja2lu
ZyBzY3JpcHQgYmVmb3JlIGNhbGxpbmcgdGhlIHBhcnNlciBhZ2Fpbi4KICAgICBSZWZQdHI8U2Ny
aXB0RWxlbWVudD4gdGFrZVNjcmlwdFRvUHJvY2VzcyhUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0
UG9zaXRpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428939</attachid>
            <date>2021-05-18 08:01:32 -0700</date>
            <delta_ts>2021-05-19 04:45:24 -0700</delta_ts>
            <desc>wip</desc>
            <filename>parser-yield-script-runner.patch</filename>
            <type>text/plain</type>
            <size>27510</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCA3ZDRlOTE4NTkzMjcuLmFmZDQ1
MzU5YTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTY4LDggKzE2
OCwxMCBAQCBPcHRpb25hbDxTY3JpcHRFbGVtZW50OjpTY3JpcHRUeXBlPiBTY3JpcHRFbGVtZW50
OjpkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cAogfQogCiAvLyBodHRwOi8vZGV2LnczLm9y
Zy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjcHJlcGFyZS1hLXNjcmlwdAotYm9vbCBTY3JpcHRF
bGVtZW50OjpwcmVwYXJlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3Np
dGlvbiwgTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5cGVzKQorYm9vbCBTY3JpcHRF
bGVtZW50OjpwcmVwYXJlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3Np
dGlvbiwgTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5cGVzLCBDYWxsZWRCeVBhcnNl
ciBjYWxsZWRCeVBhcnNlcikKIHsKKy8vICAgIFdURkxvZ0Fsd2F5cygiU2NyaXB0RWxlbWVudDo6
cHJlcGFyZVNjcmlwdCBoYXNTb3VyY2VBdHRyaWJ1dGUgJWQgaGFzQXN5bmNBdHRyaWJ1dGUgJWQg
aGFzRGVmZXJBdHRyaWJ1dGUoKSAlZCBtX3BhcnNlckluc2VydGVkICVkIG1fYWxyZWFkeVN0YXJ0
ZWQgJWQiLCBoYXNTb3VyY2VBdHRyaWJ1dGUoKSwgaGFzQXN5bmNBdHRyaWJ1dGUoKSwgaGFzRGVm
ZXJBdHRyaWJ1dGUoKSwgbV9wYXJzZXJJbnNlcnRlZCwgbV9hbHJlYWR5U3RhcnRlZCk7CisKICAg
ICBpZiAobV9hbHJlYWR5U3RhcnRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNDcs
MzAgKzI0OSw0NCBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQoY29uc3QgVGV4
dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCBMZWdhYwogICAgIGJvb2wgaXNDbGFzc2lj
RXh0ZXJuYWxTY3JpcHQgPSBzY3JpcHRUeXBlID09IFNjcmlwdFR5cGU6OkNsYXNzaWMgJiYgaGFz
U291cmNlQXR0cmlidXRlKCk7CiAgICAgYm9vbCBpc1BhcnNlckluc2VydGVkRGVmZXJyZWRTY3Jp
cHQgPSAoKGlzQ2xhc3NpY0V4dGVybmFsU2NyaXB0ICYmIGhhc0RlZmVyQXR0cmlidXRlKCkpIHx8
IHNjcmlwdFR5cGUgPT0gU2NyaXB0VHlwZTo6TW9kdWxlKQogICAgICAgICAmJiBtX3BhcnNlcklu
c2VydGVkICYmICFoYXNBc3luY0F0dHJpYnV0ZSgpOworICAgIAogICAgIGlmIChpc1BhcnNlcklu
c2VydGVkRGVmZXJyZWRTY3JpcHQpIHsKICAgICAgICAgbV93aWxsRXhlY3V0ZVdoZW5Eb2N1bWVu
dEZpbmlzaGVkUGFyc2luZyA9IHRydWU7CiAgICAgICAgIG1fd2lsbEJlUGFyc2VyRXhlY3V0ZWQg
PSB0cnVlOwotICAgIH0gZWxzZSBpZiAoaXNDbGFzc2ljRXh0ZXJuYWxTY3JpcHQgJiYgbV9wYXJz
ZXJJbnNlcnRlZCAmJiAhaGFzQXN5bmNBdHRyaWJ1dGUoKSkgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBpZiAoaXNDbGFzc2ljRXh0ZXJuYWxTY3JpcHQgJiYgbV9wYXJzZXJJ
bnNlcnRlZCAmJiAhaGFzQXN5bmNBdHRyaWJ1dGUoKSkgewogICAgICAgICBBU1NFUlQoc2NyaXB0
VHlwZSA9PSBTY3JpcHRUeXBlOjpDbGFzc2ljKTsKICAgICAgICAgbV93aWxsQmVQYXJzZXJFeGVj
dXRlZCA9IHRydWU7Ci0gICAgfSBlbHNlIGlmICgoaXNDbGFzc2ljRXh0ZXJuYWxTY3JpcHQgfHwg
c2NyaXB0VHlwZSA9PSBTY3JpcHRUeXBlOjpNb2R1bGUpICYmICFoYXNBc3luY0F0dHJpYnV0ZSgp
ICYmICFtX2ZvcmNlQXN5bmMpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
aWYgKChpc0NsYXNzaWNFeHRlcm5hbFNjcmlwdCB8fCBzY3JpcHRUeXBlID09IFNjcmlwdFR5cGU6
Ok1vZHVsZSkgJiYgIWhhc0FzeW5jQXR0cmlidXRlKCkgJiYgIW1fZm9yY2VBc3luYykgewogICAg
ICAgICBtX3dpbGxFeGVjdXRlSW5PcmRlciA9IHRydWU7CiAgICAgICAgIEFTU0VSVChtX2xvYWRh
YmxlU2NyaXB0KTsKICAgICAgICAgZG9jdW1lbnQuc2NyaXB0UnVubmVyKCkucXVldWVTY3JpcHRG
b3JFeGVjdXRpb24oKnRoaXMsICptX2xvYWRhYmxlU2NyaXB0LCBTY3JpcHRSdW5uZXI6OklOX09S
REVSX0VYRUNVVElPTik7Ci0gICAgfSBlbHNlIGlmIChoYXNTb3VyY2VBdHRyaWJ1dGUoKSB8fCBz
Y3JpcHRUeXBlID09IFNjcmlwdFR5cGU6Ok1vZHVsZSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoaGFzU291cmNlQXR0cmlidXRlKCkgfHwgc2NyaXB0VHlwZSA9PSBT
Y3JpcHRUeXBlOjpNb2R1bGUpIHsKICAgICAgICAgQVNTRVJUKG1fbG9hZGFibGVTY3JpcHQpOwog
ICAgICAgICBBU1NFUlQoaGFzQXN5bmNBdHRyaWJ1dGUoKSB8fCBtX2ZvcmNlQXN5bmMpOwogICAg
ICAgICBkb2N1bWVudC5zY3JpcHRSdW5uZXIoKS5xdWV1ZVNjcmlwdEZvckV4ZWN1dGlvbigqdGhp
cywgKm1fbG9hZGFibGVTY3JpcHQsIFNjcmlwdFJ1bm5lcjo6QVNZTkNfRVhFQ1VUSU9OKTsKLSAg
ICB9IGVsc2UgaWYgKCFoYXNTb3VyY2VBdHRyaWJ1dGUoKSAmJiBtX3BhcnNlckluc2VydGVkICYm
ICFkb2N1bWVudC5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBpZiAoY2FsbGVkQnlQYXJzZXIgPT0gQ2FsbGVkQnlQYXJzZXI6Olll
cyB8fCAobV9wYXJzZXJJbnNlcnRlZCAmJiAhZG9jdW1lbnQuaGF2ZVN0eWxlc2hlZXRzTG9hZGVk
KCkpKSB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRUeXBlID09IFNjcmlwdFR5cGU6OkNsYXNzaWMp
OwogICAgICAgICBtX3dpbGxCZVBhcnNlckV4ZWN1dGVkID0gdHJ1ZTsKICAgICAgICAgbV9yZWFk
eVRvQmVQYXJzZXJFeGVjdXRlZCA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJU
KHNjcmlwdFR5cGUgPT0gU2NyaXB0VHlwZTo6Q2xhc3NpYyk7Ci0gICAgICAgIFRleHRQb3NpdGlv
biBwb3NpdGlvbiA9IGRvY3VtZW50LmlzSW5Eb2N1bWVudFdyaXRlKCkgPyBUZXh0UG9zaXRpb24o
KSA6IHNjcmlwdFN0YXJ0UG9zaXRpb247Ci0gICAgICAgIGV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNj
cmlwdFNvdXJjZUNvZGUoc291cmNlVGV4dCwgVVJMKGRvY3VtZW50LnVybCgpKSwgcG9zaXRpb24s
IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBJbmxpbmVDbGFzc2ljU2Ny
aXB0OjpjcmVhdGUoKnRoaXMpKSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IEFTU0VSVChzY3JpcHRUeXBlID09IFNjcmlwdFR5cGU6OkNsYXNzaWMpOworICAgIFRleHRQb3Np
dGlvbiBwb3NpdGlvbiA9IGRvY3VtZW50LmlzSW5Eb2N1bWVudFdyaXRlKCkgPyBUZXh0UG9zaXRp
b24oKSA6IHNjcmlwdFN0YXJ0UG9zaXRpb247CisgICAgZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2Ny
aXB0U291cmNlQ29kZShzb3VyY2VUZXh0LCBVUkwoZG9jdW1lbnQudXJsKCkpLCBwb3NpdGlvbiwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIElubGluZUNsYXNzaWNTY3Jp
cHQ6OmNyZWF0ZSgqdGhpcykpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuaAppbmRleCBhNjliNDU3NTNhNmEuLjk0MzMyNzAzZjhiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAKICAg
ICBlbnVtIExlZ2FjeVR5cGVTdXBwb3J0IHsgRGlzYWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmli
dXRlLCBBbGxvd0xlZ2FjeVR5cGVJblR5cGVBdHRyaWJ1dGUgfTsKLSAgICBib29sIHByZXBhcmVT
Y3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0
aW9uKCksIExlZ2FjeVR5cGVTdXBwb3J0ID0gRGlzYWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmli
dXRlKTsKKyAgICBlbnVtIGNsYXNzIENhbGxlZEJ5UGFyc2VyIHsgTm8sIFllcyB9OworICAgIGJv
b2wgcHJlcGFyZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24g
PSBUZXh0UG9zaXRpb24oKSwgTGVnYWN5VHlwZVN1cHBvcnQgPSBEaXNhbGxvd0xlZ2FjeVR5cGVJ
blR5cGVBdHRyaWJ1dGUsIENhbGxlZEJ5UGFyc2VyID0gQ2FsbGVkQnlQYXJzZXI6Ok5vKTsKIAog
ICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJFbmNv
ZGluZzsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzY3JpcHRDb250ZW50KCkgY29uc3Q7
CkBAIC01NSw2ICs1Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4ZWN1dGVQZW5kaW5nU2NyaXB0
KFBlbmRpbmdTY3JpcHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBc3luY0F0dHJpYnV0ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRGVmZXJBdHRyaWJ1dGUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzTm9Nb2R1bGVBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CiAKICAgICAv
LyBYTUwgcGFyc2VyIGNhbGxzIHRoZXNlCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2
ZW50KCkgPSAwOwpAQCAtMTE0LDkgKzExOCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJp
bmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBldmVu
dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNEZWZlckF0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlQXR0cmlidXRl
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNOb01vZHVsZUF0dHJpYnV0ZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29u
c3QgPSAwOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNmJlZWVmMmRkOTA5Li4x
YWMxMDNhMzczNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZygpCiAgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBOT1RFOiBUaGlzIHB1bXAgc2hvdWxkIG9u
bHkgZXZlciBlbWl0IGJ1ZmZlcmVkIGNoYXJhY3RlciB0b2tlbnMsCi0gICAgLy8gc28gRm9yY2VT
eW5jaHJvbm91cyB2cy4gQWxsb3dZaWVsZCBzaG91bGQgYmUgbWVhbmluZ2xlc3MuCi0gICAgcHVt
cFRva2VuaXplcklmUG9zc2libGUoRm9yY2VTeW5jaHJvbm91cyk7CisgICAgLy8gc28geWllbGQg
bW9kZSBzaG91bGQgYmUgbWVhbmluZ2xlc3MuCisgICAgcHVtcFRva2VuaXplcklmUG9zc2libGUo
UGFyc2VyWWllbGRNb2RlOjpEaXNhbGxvdyk7CiAKICAgICBpZiAoaXNTdG9wcGVkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE4MiwxNCArMTgyLDE0IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2Vy
Ojpwcm9jZXNzaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGlzU2NoZWR1bGVkRm9yUmVzdW1l
KCkgfHwgaW5QdW1wU2Vzc2lvbigpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVt
cFRva2VuaXplcklmUG9zc2libGUoU3luY2hyb25vdXNNb2RlIG1vZGUpCit2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcklmUG9zc2libGUoUGFyc2VyWWllbGRNb2RlIG1vZGUp
CiB7CiAgICAgaWYgKGlzU3RvcHBlZCgpIHx8IGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gT25jZSBhIHJlc3VtZSBpcyBzY2hlZHVsZWQsIEhUTUxQYXJz
ZXJTY2hlZHVsZXIgY29udHJvbHMgd2hlbiB3ZSBuZXh0IHB1bXAuCiAgICAgaWYgKGlzU2NoZWR1
bGVkRm9yUmVzdW1lKCkpIHsKLSAgICAgICAgQVNTRVJUKG1vZGUgPT0gQWxsb3dZaWVsZCk7Cisg
ICAgICAgIEFTU0VSVChtb2RlID09IFBhcnNlcllpZWxkTW9kZTo6QWxsb3cpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMTAsMTQgKzIxMCwxOSBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKQogCiAgICAgLy8gV2Ugc2hvdWxkIG5ldmVy
IGJlIGhlcmUgdW5sZXNzIHdlIGNhbiBwdW1wIGltbWVkaWF0ZWx5LgogICAgIC8vIENhbGwgcHVt
cFRva2VuaXplcigpIGRpcmVjdGx5IHNvIHRoYXQgQVNTRVJUUyB3aWxsIGZpcmUgaWYgd2UncmUg
d3JvbmcuCi0gICAgcHVtcFRva2VuaXplcihBbGxvd1lpZWxkKTsKKyAgICBwdW1wVG9rZW5pemVy
KFBhcnNlcllpZWxkTW9kZTo6QWxsb3cpOwogICAgIGVuZElmRGVsYXllZCgpOwogfQogCi12b2lk
IEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCkKK3Zv
aWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoUGFy
c2VyWWllbGRNb2RlIHlpZWxkTW9kZSwgUHVtcFNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgQVNT
RVJUKHNjcmlwdGluZ0NvbnRlbnRJc0FsbG93ZWQocGFyc2VyQ29udGVudFBvbGljeSgpKSk7CiAK
KyAgICBpZiAobV9zY3JpcHRSdW5uZXIgJiYgbV9zY3JpcHRSdW5uZXItPmhhc1lpZWxkZWRTY3Jp
cHQoKSkgeworICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVlpZWxkZWRTY3JpcHQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9t
RWxlbWVudENvbnN0cnVjdGlvbkRhdGE+IGNvbnN0cnVjdGlvbkRhdGEgPSBtX3RyZWVCdWlsZGVy
LT50YWtlQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEoKSkgewogICAgICAgICBBU1NFUlQo
IW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKIApAQCAtMjQw
LDggKzI0NSwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNl
ZFRyZWVCdWlsZGVyKCkKICAgICBpZiAoYXV0byBzY3JpcHRFbGVtZW50ID0gbV90cmVlQnVpbGRl
ci0+dGFrZVNjcmlwdFRvUHJvY2VzcyhzY3JpcHRTdGFydFBvc2l0aW9uKSkgewogICAgICAgICBB
U1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKICAg
ICAgICAgLy8gV2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBE
b2N1bWVudEZyYWdtZW50LgotICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAgICAgICAg
ICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2VOb25OdWxsKCks
IHNjcmlwdFN0YXJ0UG9zaXRpb24pOworICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpIHsKKyAg
ICAgICAgICAgIGF1dG8qIHNlc3Npb25Gb3JZaWVsZCA9IHlpZWxkTW9kZSA9PSBQYXJzZXJZaWVs
ZE1vZGU6OkFsbG93ID8gJnNlc3Npb24gOiBudWxscHRyOworICAgICAgICAgICAgbV9zY3JpcHRS
dW5uZXItPmV4ZWN1dGUoc2NyaXB0RWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBzY3JpcHRTdGFy
dFBvc2l0aW9uLCBzZXNzaW9uRm9yWWllbGQpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0y
NTQsMTYgKzI2MSwxNSBAQCBEb2N1bWVudCogSFRNTERvY3VtZW50UGFyc2VyOjpjb250ZXh0Rm9y
UGFyc2luZ1Nlc3Npb24oKQogICAgIHJldHVybiBkb2N1bWVudCgpOwogfQogCi1ib29sIEhUTUxE
b2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplckxvb3AoU3luY2hyb25vdXNNb2RlIG1vZGUsIGJv
b2wgcGFyc2luZ0ZyYWdtZW50LCBQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKK2Jvb2wgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChQYXJzZXJZaWVsZE1vZGUgeWllbGRNb2RlLCBi
b29sIHBhcnNpbmdGcmFnbWVudCwgUHVtcFNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgZG8gewog
ICAgICAgICBpZiAoVU5MSUtFTFkoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSkgewotICAgICAgICAg
ICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAmJiBtX3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWll
bGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoc2Vzc2lvbikpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICBydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKTsKKyAg
ICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcih5aWVsZE1vZGUsIHNlc3Np
b24pOworCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBwYXVzZWQgd2FpdGluZyBmb3IgYSBzY3Jp
cHQsIHdlIHRyeSB0byBleGVjdXRlIHNjcmlwdHMgYmVmb3JlIGNvbnRpbnVpbmcuCiAgICAgICAg
ICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8IGlzU3RvcHBlZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zY3JpcHRSdW5u
ZXIgJiYgbV9zY3JpcHRSdW5uZXItPmhhc1lpZWxkZWRTY3JpcHQoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIEZJWE1FOiBJdCdzIHdyb25nIGZvciB0aGUgSFRNTERvY3VtZW50UGFyc2VyIHRv
IHJlYWNoIGJhY2sgdG8gdGhlIEZyYW1lLCBidXQgdGhpcyBhcHByb2FjaCBpcwpAQCAtMjczLDcg
KzI3OSw3IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5j
aHJvbm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJhCiAgICAgICAgIGlmIChVTkxJS0VMWSgh
cGFyc2luZ0ZyYWdtZW50ICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLmxvY2F0aW9uQ2hhbmdlUGVuZGluZygpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkobW9kZSA9PSBB
bGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5zaG91bGRZaWVsZEJlZm9yZVRva2VuKHNl
c3Npb24pKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKHlpZWxkTW9kZSA9PSBQYXJzZXJZaWVsZE1v
ZGU6OkFsbG93ICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5zaG91bGRZaWVsZEJlZm9yZVRva2VuKHNl
c3Npb24pKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGlmICghcGFyc2lu
Z0ZyYWdtZW50KQpAQCAtMjk4LDcgKzMwNCw3IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpw
dW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJhCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2Vu
aXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1w
VG9rZW5pemVyKFBhcnNlcllpZWxkTW9kZSBtb2RlKQogewogICAgIEFTU0VSVCghaXNTdG9wcGVk
KCkpOwogICAgIEFTU0VSVCghaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSk7CkBAIC0zODgsNyArMzk0
LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChTZWdtZW50ZWRTdHJpbmcmJiBz
b3VyY2UpCiAKICAgICBzb3VyY2Uuc2V0RXhjbHVkZUxpbmVOdW1iZXJzKCk7CiAgICAgbV9pbnB1
dC5pbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludChXVEZNb3ZlKHNvdXJjZSkpOwotICAgIHB1
bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEZvcmNlU3luY2hyb25vdXMpOworICAgIHB1bXBUb2tlbml6
ZXJJZlBvc3NpYmxlKFBhcnNlcllpZWxkTW9kZTo6RGlzYWxsb3cpOwogCiAgICAgaWYgKGlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSAmJiAhaXNEZXRhY2hlZCgpKSB7CiAgICAgICAgIC8vIENoZWNrIHRo
ZSBkb2N1bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVy
IGFzCkBAIC00MzQsNyArNDQwLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChS
ZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEFsbG93WWllbGQpOworICAgIHB1bXBUb2tl
bml6ZXJJZlBvc3NpYmxlKFBhcnNlcllpZWxkTW9kZTo6QWxsb3cpOwogCiAgICAgZW5kSWZEZWxh
eWVkKCk7CiB9CkBAIC01NDQsNyArNTUwLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJl
c3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpCiAgICAgUmVmPEhUTUxEb2N1bWVudFBh
cnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBtX2luc2VydGlvblByZWxvYWRTY2Fu
bmVyID0gbnVsbHB0cjsKLSAgICBwdW1wVG9rZW5pemVySWZQb3NzaWJsZShBbGxvd1lpZWxkKTsK
KyAgICBwdW1wVG9rZW5pemVySWZQb3NzaWJsZShQYXJzZXJZaWVsZE1vZGU6OkFsbG93KTsKICAg
ICBlbmRJZkRlbGF5ZWQoKTsKIH0KIApAQCAtNTY5LDYgKzU3NSwxMSBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQ3VycmVudElucHV0U3RyZWFtVG9QcmVsb2FkU2Nhbm5lckFuZFNj
YW4oKQogICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQo
KSk7CiB9CiAKK2Jvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpzaG91bGRZaWVsZChjb25zdCBQZW5k
aW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0LCBQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBy
ZXR1cm4gbV9wYXJzZXJTY2hlZHVsZXItPnNob3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0
KCZwZW5kaW5nU2NyaXB0LmVsZW1lbnQoKSwgc2Vzc2lvbik7Cit9CisKIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQog
ewogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFj
aGVkIGZyb20gdGhlIERvY3VtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAwNTc5Y2Q1MmMxN2QuLmY1NjM4YzJhMzFmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTQ3LDYgKzQ3LDggQEAgY2xhc3MgSFRNTFRyZWVCdWlsZGVyOwogY2xhc3MgSFRNTFJlc291cmNl
UHJlbG9hZGVyOwogY2xhc3MgUHVtcFNlc3Npb247CiAKK2VudW0gUGFyc2VyWWllbGRNb2RlIHsg
QWxsb3csIERpc2FsbG93IH07CisKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElG
SUVSKEhUTUxEb2N1bWVudFBhcnNlcik7CiBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXIgOiBwdWJs
aWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLCBwcml2YXRlIEhUTUxTY3JpcHRSdW5uZXJIb3N0
LCBwcml2YXRlIFBlbmRpbmdTY3JpcHRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEhUTUxEb2N1bWVudFBhcnNlcik7CkBAIC05NywxOSAr
OTksMTkgQEAgcHJpdmF0ZToKICAgICBIVE1MSW5wdXRTdHJlYW0mIGlucHV0U3RyZWFtKCkgZmlu
YWw7CiAgICAgYm9vbCBoYXNQcmVsb2FkU2Nhbm5lcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
YXBwZW5kQ3VycmVudElucHV0U3RyZWFtVG9QcmVsb2FkU2Nhbm5lckFuZFNjYW4oKSBmaW5hbDsK
KyAgICBib29sIHNob3VsZFlpZWxkKGNvbnN0IFBlbmRpbmdTY3JpcHQmLCBQdW1wU2Vzc2lvbiYp
IGZpbmFsOwogCiAgICAgLy8gUGVuZGluZ1NjcmlwdENsaWVudAogICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoUGVuZGluZ1NjcmlwdCYpIGZpbmFsOwogCiAgICAgRG9jdW1lbnQqIGNvbnRleHRGb3JQ
YXJzaW5nU2Vzc2lvbigpOwogCi0gICAgZW51bSBTeW5jaHJvbm91c01vZGUgeyBBbGxvd1lpZWxk
LCBGb3JjZVN5bmNocm9ub3VzIH07Ci0gICAgdm9pZCBwdW1wVG9rZW5pemVyKFN5bmNocm9ub3Vz
TW9kZSk7Ci0gICAgYm9vbCBwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUsIGJvb2wg
cGFyc2luZ0ZyYWdtZW50LCBQdW1wU2Vzc2lvbiYpOwotICAgIHZvaWQgcHVtcFRva2VuaXplcklm
UG9zc2libGUoU3luY2hyb25vdXNNb2RlKTsKKyAgICB2b2lkIHB1bXBUb2tlbml6ZXIoUGFyc2Vy
WWllbGRNb2RlKTsKKyAgICBib29sIHB1bXBUb2tlbml6ZXJMb29wKFBhcnNlcllpZWxkTW9kZSwg
Ym9vbCBwYXJzaW5nRnJhZ21lbnQsIFB1bXBTZXNzaW9uJik7CisgICAgdm9pZCBwdW1wVG9rZW5p
emVySWZQb3NzaWJsZShQYXJzZXJZaWVsZE1vZGUpOwogICAgIHZvaWQgY29uc3RydWN0VHJlZUZy
b21IVE1MVG9rZW4oSFRNTFRva2VuaXplcjo6VG9rZW5QdHImKTsKIAotICAgIHZvaWQgcnVuU2Ny
aXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7CisgICAgdm9pZCBydW5TY3JpcHRzRm9yUGF1c2Vk
VHJlZUJ1aWxkZXIoUGFyc2VyWWllbGRNb2RlLCBQdW1wU2Vzc2lvbiYpOwogICAgIHZvaWQgcmVz
dW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCk7CiAKICAgICB2b2lkIGF0dGVtcHRUb0Vu
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNj
aGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1
bGVyLmNwcAppbmRleCBmMDdmOTMzMDkyOWUuLjBhZGI1MTkyZWE2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQ
YXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgog
CiAvLyBkZWZhdWx0UGFyc2VyVGltZUxpbWl0IGlzIHRoZSBzZWNvbmRzIHRoZSBwYXJzZXIgd2ls
bCBydW4gaW4gb25lIHdyaXRlKCkgY2FsbAogLy8gYmVmb3JlIHlpZWxkaW5nLiBJbmxpbmUgPHNj
cmlwdD4gZXhlY3V0aW9uIGNhbiBjYXVzZSBpdCB0byBleGNlZWQgdGhlIGxpbWl0LgpAQCAtNjUs
MTUgKzY2LDE0IEBAIEFjdGl2ZVBhcnNlclNlc3Npb246On5BY3RpdmVQYXJzZXJTZXNzaW9uKCkK
IFB1bXBTZXNzaW9uOjpQdW1wU2Vzc2lvbih1bnNpZ25lZCYgbmVzdGluZ0xldmVsLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihuZXN0aW5nTGV2ZWwp
CiAgICAgLCBBY3RpdmVQYXJzZXJTZXNzaW9uKGRvY3VtZW50KQotICAgIC8vIFNldHRpbmcgcHJv
Y2Vzc2VkVG9rZW5zIHRvIElOVF9NQVggY2F1c2VzIHVzIHRvIGNoZWNrIGZvciB5aWVsZHMKLSAg
ICAvLyBhZnRlciBhbnkgdG9rZW4gZHVyaW5nIGFueSBwYXJzZSB3aGVyZSB5aWVsZGluZyBpcyBh
bGxvd2VkLgotICAgIC8vIEF0IHRoYXQgdGltZSB3ZSdsbCBpbml0aWFsaXplIHN0YXJ0VGltZS4K
LSAgICAsIHByb2Nlc3NlZFRva2VucyhJTlRfTUFYKQotICAgICwgZGlkU2VlU2NyaXB0KGZhbHNl
KQogeworLy8gICAgV1RGTG9nQWx3YXlzKCJQdW1wU2Vzc2lvbiIpOwogfQogCi1QdW1wU2Vzc2lv
bjo6flB1bXBTZXNzaW9uKCkgPSBkZWZhdWx0OworUHVtcFNlc3Npb246On5QdW1wU2Vzc2lvbigp
Cit7CisvLyAgICBXVEZMb2dBbHdheXMoIn5QdW1wU2Vzc2lvbiIpOworfQogCiBIVE1MUGFyc2Vy
U2NoZWR1bGVyOjpIVE1MUGFyc2VyU2NoZWR1bGVyKEhUTUxEb2N1bWVudFBhcnNlciYgcGFyc2Vy
KQogICAgIDogbV9wYXJzZXIocGFyc2VyKQpAQCAtMTA0LDE4ICsxMDQsNDQgQEAgdm9pZCBIVE1M
UGFyc2VyU2NoZWR1bGVyOjpjb250aW51ZU5leHRDaHVua1RpbWVyRmlyZWQoKQogICAgIG1fcGFy
c2VyLnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiB9CiAKLWJvb2wgSFRNTFBhcnNlclNjaGVk
dWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoUHVtcFNlc3Npb24mIHNlc3Np
b24pCitib29sIEhUTUxQYXJzZXJTY2hlZHVsZXI6OnNob3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5n
U2NyaXB0KGNvbnN0IFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQsIFB1bXBTZXNzaW9uJiBz
ZXNzaW9uKQogeworICAgIFNlY29uZHMgZWxhcHNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KSAtIHNlc3Npb24uc3RhcnRUaW1lOworCisgICAgaWYgKHNjcmlwdEVsZW1lbnQpIHsKKy8vICAg
ICAgICBpZiAoc2NyaXB0RWxlbWVudC0+aGFzQXN5bmNBdHRyaWJ1dGUoKSkgeworLy8gICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIm5vdCB5aWVsZGluZyBkdWUgdG8gYXN5bmMgJWYiLCBlbGFwc2Vk
VGltZS5taWxsaXNlY29uZHMoKSk7CisvLyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy8vICAg
ICAgICB9CisgICAgICAgIGlmICghc2NyaXB0RWxlbWVudC0+aGFzU291cmNlQXR0cmlidXRlKCkg
JiYgc2NyaXB0RWxlbWVudC0+c2NyaXB0Q29udGVudCgpLmxlbmd0aCgpIDwgMTAyNCkgeworLy8g
ICAgICAgICAgICBXVEZMb2dBbHdheXMoIm5vdCB5aWVsZGluZyBkdWUgdG8gaW5saW5lIGxlbmd0
aCAldSAlZiIsIHNjcmlwdEVsZW1lbnQtPnNjcmlwdENvbnRlbnQoKS5sZW5ndGgoKSwgZWxhcHNl
ZFRpbWUubWlsbGlzZWNvbmRzKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgcGFpbnRlZCBiZWZvcmUgYW5kIGEg
bGF5b3V0IGlzIHBlbmRpbmcsIHlpZWxkIHByaW9yIHRvIHJ1bm5pbmcKICAgICAvLyBzY3JpcHRz
IHRvIGdpdmUgdGhlIHBhZ2UgYSBjaGFuY2UgdG8gcGFpbnQgZWFybGllci4KICAgICBSZWZQdHI8
RG9jdW1lbnQ+IGRvY3VtZW50ID0gbV9wYXJzZXIuZG9jdW1lbnQoKTsKLSAgICBib29sIG5lZWRz
Rmlyc3RQYWludCA9IGRvY3VtZW50LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2
ZXJQYWludGVkKCk7CisKKyAgICBpZiAoIWRvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisvLyAgICBib29sIG5lZWRzRmlyc3RQYWludCA9
IGRvY3VtZW50LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWludGVkKCk7
CiAgICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSB0cnVlOwogCiAgICAgaWYgKFVOTElLRUxZKG1f
ZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgcmV0dXJuIG5lZWRzRmlyc3RQYWludCAmJiBkb2N1bWVudC0+aXNMYXlvdXRUaW1l
ckFjdGl2ZSgpOworLy8gICAgU2Vjb25kcyBlbGFwc2VkVGltZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpIC0gc2Vzc2lvbi5zdGFydFRpbWU7CisKKy8vICAgIFdURkxvZ0Fsd2F5cygic2hvdWxkWWll
bGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQgbmVlZHNGaXJzdFBhaW50ICVkIHByb2Nlc3NlZFRva2Vu
cyAlZCBlbGFwc2VkVGltZSAlZiIsIG5lZWRzRmlyc3RQYWludCwgc2Vzc2lvbi5wcm9jZXNzZWRU
b2tlbnMsIGVsYXBzZWRUaW1lLm1pbGxpc2Vjb25kcygpKTsKKworICAgIGlmIChlbGFwc2VkVGlt
ZSA+IDE2X21zICYmIHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zID4gMjU2ICYmIGRvY3VtZW50LT5i
b2R5KCkpIHsKKy8vICAgICAgICBXVEZMb2dBbHdheXMoIllJRUxEIHNob3VsZFlpZWxkQmVmb3Jl
RXhlY3V0aW5nU2NyaXB0IG5lZWRzRmlyc3RQYWludCAlZCBwcm9jZXNzZWRUb2tlbnMgJWQgZWxh
cHNlZFRpbWUgJWYiLCBuZWVkc0ZpcnN0UGFpbnQsIHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zLCBl
bGFwc2VkVGltZS5taWxsaXNlY29uZHMoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzY2hl
ZHVsZUZvclJlc3VtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VyU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VyU2NoZWR1bGVyLmgKaW5kZXggMmNhMmYxNjE5YzUwLi5lZWI1MWNmOWYyZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEhUTUxEb2N1bWVudFBhcnNlcjsKK2NsYXNzIFNjcmlwdEVsZW1lbnQ7CiAKIGNsYXNzIEFjdGl2
ZVBhcnNlclNlc3Npb24gewogcHVibGljOgpAQCAtNTIsOSArNTMsMTAgQEAgcHVibGljOgogICAg
IFB1bXBTZXNzaW9uKHVuc2lnbmVkJiBuZXN0aW5nTGV2ZWwsIERvY3VtZW50Kik7CiAgICAgflB1
bXBTZXNzaW9uKCk7CiAKLSAgICB1bnNpZ25lZCBwcm9jZXNzZWRUb2tlbnM7Ci0gICAgTW9ub3Rv
bmljVGltZSBzdGFydFRpbWU7Ci0gICAgYm9vbCBkaWRTZWVTY3JpcHQ7CisgICAgdW5zaWduZWQg
cHJvY2Vzc2VkVG9rZW5zIHsgMCB9OworICAgIHVuc2lnbmVkIHByb2Nlc3NlZFRva2Vuc09uTGFz
dENoZWNrIHsgMCB9OworICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lIHsgTW9ub3RvbmljVGlt
ZTo6bm93KCkgfTsKKyAgICBib29sIGRpZFNlZVNjcmlwdCB7IGZhbHNlIH07CiB9OwogCiBjbGFz
cyBIVE1MUGFyc2VyU2NoZWR1bGVyIHsKQEAgLTcyLDEzICs3NCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChVTkxJS0VMWShtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24u
cHJvY2Vzc2VkVG9rZW5zID4gbnVtYmVyT2ZUb2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8
IHNlc3Npb24uZGlkU2VlU2NyaXB0KSkKKyAgICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJv
Y2Vzc2VkVG9rZW5zID4gc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnNPbkxhc3RDaGVjayArIG51bWJl
ck9mVG9rZW5zQmVmb3JlQ2hlY2tpbmdGb3JZaWVsZCB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkp
CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tGb3JZaWVsZChzZXNzaW9uKTsKIAogICAgICAgICAr
K3Nlc3Npb24ucHJvY2Vzc2VkVG9rZW5zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIGJvb2wgc2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoUHVtcFNlc3Npb24mKTsK
KyAgICBib29sIHNob3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KGNvbnN0IFNjcmlwdEVs
ZW1lbnQqLCBQdW1wU2Vzc2lvbiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZUZvclJlc3VtZSgpOwog
ICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVu
ZGVkV2l0aEFjdGl2ZVRpbWVyIHx8IG1fY29udGludWVOZXh0Q2h1bmtUaW1lci5pc0FjdGl2ZSgp
IHx8IG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuczsgfQpAQCAtMTA4LDE2ICsx
MTAsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjaGVja0ZvcllpZWxkKFB1bXBTZXNzaW9uJiBz
ZXNzaW9uKQogICAgIHsKLSAgICAgICAgc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnMgPSAxOworICAg
ICAgICBzZXNzaW9uLnByb2Nlc3NlZFRva2Vuc09uTGFzdENoZWNrID0gc2Vzc2lvbi5wcm9jZXNz
ZWRUb2tlbnM7CiAgICAgICAgIHNlc3Npb24uZGlkU2VlU2NyaXB0ID0gZmFsc2U7CiAKLSAgICAg
ICAgLy8gTW9ub3RvbmljVGltZTo6bm93KCkgY2FuIGJlIGV4cGVuc2l2ZS4gQnkgZGVsYXlpbmcs
IHdlIGF2b2lkZWQgY2FsbGluZwotICAgICAgICAvLyBNb25vdG9uaWNUaW1lOjpub3coKSB3aGVu
IGNvbnN0cnVjdGluZyBub24teWllbGRpbmcgUHVtcFNlc3Npb25zLgotICAgICAgICBpZiAoIXNl
c3Npb24uc3RhcnRUaW1lKSB7Ci0gICAgICAgICAgICBzZXNzaW9uLnN0YXJ0VGltZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0K
ICAgICAgICAgU2Vjb25kcyBlbGFwc2VkVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc2Vz
c2lvbi5zdGFydFRpbWU7CiAgICAgICAgIHJldHVybiBlbGFwc2VkVGltZSA+IG1fcGFyc2VyVGlt
ZUxpbWl0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlw
dFJ1bm5lci5jcHAKaW5kZXggMTY1ODYzOWI0ZWNjLi40MGE4ODFkMzNjNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC04OCwxOCAr
ODgsNiBAQCBpbmxpbmUgUmVmPEV2ZW50PiBjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKQogICAgIHJl
dHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9CiAKLWJvb2wgSFRNTFNjcmlwdFJ1
bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQot
ewotICAgIGlmICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1faGFz
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyA9ICFtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVl
dHNMb2FkZWQoKTsKLSAgICBpZiAobV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHNjcmlwdC5uZWVkc0xvYWRpbmcoKSAmJiAh
c2NyaXB0LmlzTG9hZGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQogdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERp
c3BhdGNoRXZlbnQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKIHsKICAgICAvLyBTdG9w
IHdhdGNoaW5nIGxvYWRzIGJlZm9yZSBleGVjdXRlU2NyaXB0IHRvIHByZXZlbnQgcmVjdXJzaW9u
IGlmIHRoZSBzY3JpcHQgcmVsb2FkcyBpdHNlbGYuCkBAIC0xMzAsNyArMTE4LDcgQEAgdm9pZCBI
VE1MU2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBlbmRp
bmdTY3JpcHQpCiAKIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG1hdGNoIDEwLjIuNS4xMSAiQW4g
ZW5kIHRhZyB3aG9zZSB0YWcgbmFtZSBpcyAnc2NyaXB0JyIKIC8vIFNjcmlwdCBoYW5kbGluZyBs
aXZlcyBvdXRzaWRlIHRoZSB0cmVlIGJ1aWxkZXIgdG8ga2VlcCB0aGUgZWFjaCBjbGFzcyBzaW1w
bGUuCi12b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGUoUmVmPFNjcmlwdEVsZW1lbnQ+JiYg
ZWxlbWVudCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQordm9pZCBI
VE1MU2NyaXB0UnVubmVyOjpleGVjdXRlKFJlZjxTY3JpcHRFbGVtZW50PiYmIGVsZW1lbnQsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgUHVtcFNlc3Npb24qIHNlc3Np
b25Gb3JZaWVsZCkKIHsKICAgICAvLyBGSVhNRTogSWYgc2NyaXB0aW5nIGlzIGRpc2FibGVkLCBh
bHdheXMganVzdCByZXR1cm4uCiAKQEAgLTE0NSw3ICsxMzMsNyBAQCB2b2lkIEhUTUxTY3JpcHRS
dW5uZXI6OmV4ZWN1dGUoUmVmPFNjcmlwdEVsZW1lbnQ+JiYgZWxlbWVudCwgY29uc3QgVGV4dFBv
c2l0aW9uJgogICAgICAgICAvLyBJZiBwcmVsb2FkIHNjYW5uZXIgZ290IGNyZWF0ZWQsIGl0IGlz
IG1pc3NpbmcgdGhlIHNvdXJjZSBhZnRlciB0aGUgY3VycmVudCBpbnNlcnRpb24gcG9pbnQuIEFw
cGVuZCBpdCBhbmQgc2Nhbi4KICAgICAgICAgaWYgKCFoYWRQcmVsb2FkU2Nhbm5lciAmJiBtX2hv
c3QuaGFzUHJlbG9hZFNjYW5uZXIoKSkKICAgICAgICAgICAgIG1faG9zdC5hcHBlbmRDdXJyZW50
SW5wdXRTdHJlYW1Ub1ByZWxvYWRTY2FubmVyQW5kU2NhbigpOwotICAgICAgICBleGVjdXRlUGFy
c2luZ0Jsb2NraW5nU2NyaXB0cygpOworICAgICAgICBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2Ny
aXB0cyhzZXNzaW9uRm9yWWllbGQpOwogICAgIH0KIH0KIApAQCAtMTU0LDE1ICsxNDIsMzMgQEAg
Ym9vbCBIVE1MU2NyaXB0UnVubmVyOjpoYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpIGNvbnN0CiAg
ICAgcmV0dXJuICEhbV9wYXJzZXJCbG9ja2luZ1NjcmlwdDsKIH0KIAotdm9pZCBIVE1MU2NyaXB0
UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpCitib29sIEhUTUxTY3JpcHRS
dW5uZXI6Omhhc1JlYWR5UGFyc2VyQmxvY2tpbmdTY3JpcHQoKSBjb25zdAogewotICAgIHdoaWxl
IChoYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpICYmIGlzUGVuZGluZ1NjcmlwdFJlYWR5KCptX3Bh
cnNlckJsb2NraW5nU2NyaXB0KSkgeworICAgIGlmICghbV9wYXJzZXJCbG9ja2luZ1NjcmlwdCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9kb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9wYXJzZXJCbG9ja2luZ1NjcmlwdC0+
bmVlZHNMb2FkaW5nKCkgJiYgIW1fcGFyc2VyQmxvY2tpbmdTY3JpcHQtPmlzTG9hZGVkKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cyhQdW1wU2Vzc2lvbiogc2Vz
c2lvbkZvcllpZWxkKQoreworICAgIHdoaWxlIChoYXNSZWFkeVBhcnNlckJsb2NraW5nU2NyaXB0
KCkpIHsKICAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwogICAgICAgICBBU1NFUlQoIWlzRXhl
Y3V0aW5nU2NyaXB0KCkpOwogICAgICAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hl
ZXRzTG9hZGVkKCkpOworICAgICAgICBtX2hhc1lpZWxkZWRTY3JpcHQgPSBzZXNzaW9uRm9yWWll
bGQgJiYgbV9ob3N0LnNob3VsZFlpZWxkKCptX3BhcnNlckJsb2NraW5nU2NyaXB0LCAqc2Vzc2lv
bkZvcllpZWxkKTsKKyAgICAgICAgaWYgKG1faGFzWWllbGRlZFNjcmlwdCkKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQgaW5zZXJ0aW9uUG9pbnRSZWNv
cmQobV9ob3N0LmlucHV0U3RyZWFtKCkpOwogICAgICAgICBleGVjdXRlUGVuZGluZ1NjcmlwdEFu
ZERpc3BhdGNoRXZlbnQobV9wYXJzZXJCbG9ja2luZ1NjcmlwdC5yZWxlYXNlTm9uTnVsbCgpLmdl
dCgpKTsKICAgICB9CisKKyAgICBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMgPSBt
X3BhcnNlckJsb2NraW5nU2NyaXB0ICYmIG1fZG9jdW1lbnQgJiYgIW1fZG9jdW1lbnQtPmhhdmVT
dHlsZXNoZWV0c0xvYWRlZCgpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvckxvYWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKQEAgLTIw
Myw2ICsyMDksMTUgQEAgYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JQYXJzaW5nKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBIVE1MU2NyaXB0UnVu
bmVyOjpleGVjdXRlWWllbGRlZFNjcmlwdCgpCit7CisgICAgQVNTRVJUKG1faGFzWWllbGRlZFNj
cmlwdCk7CisgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKKyAgICBBU1NFUlQoaGFz
UGFyc2VyQmxvY2tpbmdTY3JpcHQoKSk7CisgICAgQVNTRVJUKG1fcGFyc2VyQmxvY2tpbmdTY3Jp
cHQtPmlzTG9hZGVkKCkpOworICAgIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7Cit9
CisKIHN0YXRpYyBSZWY8UGVuZGluZ1NjcmlwdD4gcmVxdWVzdFBlbmRpbmdTY3JpcHQoU2NyaXB0
RWxlbWVudCYgc2NyaXB0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RWxlbWVudC53aWxs
QmVQYXJzZXJFeGVjdXRlZCgpKTsKQEAgLTI0NywyMCArMjYyLDI2IEBAIHZvaWQgSFRNTFNjcmlw
dFJ1bm5lcjo6cnVuU2NyaXB0KFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQsIGNvbnN0IFRl
eHRQb3NpdGlvCiAgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQgaW5zZXJ0aW9uUG9pbnRSZWNvcmQo
bV9ob3N0LmlucHV0U3RyZWFtKCkpOwogICAgIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3Rp
bmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0TmVzdGluZ0xldmVsKTsKIAotICAgIHNjcmlwdEVs
ZW1lbnQucHJlcGFyZVNjcmlwdChzY3JpcHRTdGFydFBvc2l0aW9uKTsKKyAgICBzY3JpcHRFbGVt
ZW50LnByZXBhcmVTY3JpcHQoc2NyaXB0U3RhcnRQb3NpdGlvbiwgU2NyaXB0RWxlbWVudDo6RGlz
YWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmlidXRlLCBTY3JpcHRFbGVtZW50OjpDYWxsZWRCeVBh
cnNlcjo6WWVzKTsKIAogICAgIGlmICghc2NyaXB0RWxlbWVudC53aWxsQmVQYXJzZXJFeGVjdXRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc2NyaXB0RWxlbWVudC53aWxsRXhlY3V0
ZVdoZW5Eb2N1bWVudEZpbmlzaGVkUGFyc2luZygpKQorLy8gICAgV1RGTG9nQWx3YXlzKCJ3aWxs
QmVQYXJzZXJFeGVjdXRlZCIpOworCisgICAgaWYgKHNjcmlwdEVsZW1lbnQud2lsbEV4ZWN1dGVX
aGVuRG9jdW1lbnRGaW5pc2hlZFBhcnNpbmcoKSkgeworLy8gICAgICAgIFdURkxvZ0Fsd2F5cygi
cmVxdWVzdERlZmVycmVkU2NyaXB0Iik7CiAgICAgICAgIHJlcXVlc3REZWZlcnJlZFNjcmlwdChz
Y3JpcHRFbGVtZW50KTsKLSAgICBlbHNlIGlmIChzY3JpcHRFbGVtZW50LnJlYWR5VG9CZVBhcnNl
ckV4ZWN1dGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKHNjcmlwdEVsZW1lbnQucmVhZHlUb0JlUGFy
c2VyRXhlY3V0ZWQoKSkgeworLy8gICAgICAgIFdURkxvZ0Fsd2F5cygicmVhZHlUb0JlUGFyc2Vy
RXhlY3V0ZWQgbV9zY3JpcHROZXN0aW5nTGV2ZWwgJWQiLCBtX3NjcmlwdE5lc3RpbmdMZXZlbCk7
CiAgICAgICAgIGlmIChtX3NjcmlwdE5lc3RpbmdMZXZlbCA9PSAxKQogICAgICAgICAgICAgbV9w
YXJzZXJCbG9ja2luZ1NjcmlwdCA9IFBlbmRpbmdTY3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50
LCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2NyaXB0
RWxlbWVudC5leGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1l
bnQuZWxlbWVudCgpLnRleHRDb250ZW50KCksIGRvY3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9u
KG1fZG9jdW1lbnQuZ2V0KCkpLCBzY3JpcHRTdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKHNjcmlw
dEVsZW1lbnQpKSk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKKy8vICAgICAgICBXVEZMb2dB
bHdheXMoInJlcXVlc3RQYXJzaW5nQmxvY2tpbmdTY3JpcHQiKTsKICAgICAgICAgcmVxdWVzdFBh
cnNpbmdCbG9ja2luZ1NjcmlwdChzY3JpcHRFbGVtZW50KTsKKyAgICB9CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuaAppbmRleCBlNjVkYzQ3
ODJlYTYuLjg5ZTZiMDk3ZTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFNjcmlwdFJ1bm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuaApAQCAtMzgsNiArMzgsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhU
TUxTY3JpcHRSdW5uZXJIb3N0OwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIAorZW51bSBQYXJz
ZXJZaWVsZE1vZGU7CisKIGNsYXNzIEhUTUxTY3JpcHRSdW5uZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDcsMjEgKzQ5LDI0IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRldGFjaCgpOwogCiAgICAgLy8gUHJvY2Vzc2VzIHRoZSBwYXNzZWQgaW4gc2NyaXB0IGFu
ZCBhbnkgcGVuZGluZyBzY3JpcHRzIGlmIHBvc3NpYmxlLgotICAgIHZvaWQgZXhlY3V0ZShSZWY8
U2NyaXB0RWxlbWVudD4mJiwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9u
KTsKKyAgICB2b2lkIGV4ZWN1dGUoUmVmPFNjcmlwdEVsZW1lbnQ+JiYsIGNvbnN0IFRleHRQb3Np
dGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgUHVtcFNlc3Npb24qIHNlc3Npb25Gb3JZaWVsZCk7
CiAKICAgICB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoUGVuZGluZ1NjcmlwdCYp
OwogICAgIGJvb2wgaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0czsgfQogICAgIHZvaWQgZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKICAgICBib29sIGV4ZWN1dGVTY3JpcHRz
V2FpdGluZ0ZvclBhcnNpbmcoKTsKKyAgICB2b2lkIGV4ZWN1dGVZaWVsZGVkU2NyaXB0KCk7CiAK
ICAgICBib29sIGhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkgY29uc3Q7CisgICAgYm9vbCBoYXNZ
aWVsZGVkU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNZaWVsZGVkU2NyaXB0OyB9CiAgICAg
Ym9vbCBpc0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zY3JpcHROZXN0aW5n
TGV2ZWw7IH0KIAogcHJpdmF0ZToKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKIAorICAgIGJv
b2wgaGFzUmVhZHlQYXJzZXJCbG9ja2luZ1NjcmlwdCgpIGNvbnN0OwogICAgIHZvaWQgZXhlY3V0
ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmKTsKLSAgICB2b2lk
IGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CisgICAgdm9pZCBleGVjdXRlUGFyc2lu
Z0Jsb2NraW5nU2NyaXB0cyhQdW1wU2Vzc2lvbiogc2Vzc2lvbkZvcllpZWxkID0gbnVsbHB0cik7
CiAKICAgICB2b2lkIHJlcXVlc3RQYXJzaW5nQmxvY2tpbmdTY3JpcHQoU2NyaXB0RWxlbWVudCYp
OwogICAgIHZvaWQgcmVxdWVzdERlZmVycmVkU2NyaXB0KFNjcmlwdEVsZW1lbnQmKTsKQEAgLTcw
LDcgKzc1LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2F0Y2hGb3JMb2FkKFBlbmRpbmdTY3Jp
cHQmKTsKICAgICB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoUGVuZGluZ1NjcmlwdCYpOwotICAg
IGJvb2wgaXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1NjcmlwdCYpOwogCiAgICAg
V2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBIVE1MU2NyaXB0UnVubmVySG9zdCYg
bV9ob3N0OwpAQCAtODIsNyArODYsOCBAQCBwcml2YXRlOgogICAgIC8vIGV4ZWN1dGlvbiBpcyBj
dXJyZW50bHkgc3RvcHBlZCBkdWUgdG8gc3R5bGVzaGVldCBsb2Fkcywgb3RoZXJ3aXNlIHdlJ2QK
ICAgICAvLyBjYXVzZSBuZXN0ZWQgc2NyaXB0IGV4ZWN1dGlvbiB3aGVuIHBhcnNpbmcgPHN0eWxl
PiB0YWdzIHNpbmNlIDwvc3R5bGU+CiAgICAgLy8gdGFncyBjYW4gY2F1c2UgRG9jdW1lbnQgdG8g
Y2FsbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cy4KLSAgICBib29sIG1faGFz
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0czsKKyAgICBib29sIG1faGFzU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1lpZWxkZWRTY3JpcHQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXJIb3N0LmgKaW5kZXggZmQyYzQ5YmQz
Mjg2Li41YTRkOTdhZTZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXJIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFNjcmlwdFJ1bm5lckhvc3QuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEhUTUxJbnB1dFN0cmVhbTsKIGNsYXNzIFBlbmRpbmdTY3JpcHQ7CitjbGFz
cyBQdW1wU2Vzc2lvbjsKIAogY2xhc3MgSFRNTFNjcmlwdFJ1bm5lckhvc3QgewogcHVibGljOgpA
QCAtNDIsNyArNDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIVE1MSW5wdXRTdHJlYW0mIGlu
cHV0U3RyZWFtKCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGhhc1ByZWxvYWRTY2FubmVyKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDdXJyZW50SW5wdXRTdHJlYW1Ub1By
ZWxvYWRTY2FubmVyQW5kU2NhbigpID0gMDsgICAgCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZEN1
cnJlbnRJbnB1dFN0cmVhbVRvUHJlbG9hZFNjYW5uZXJBbmRTY2FuKCkgPSAwOworCisgICAgdmly
dHVhbCBib29sIHNob3VsZFlpZWxkKGNvbnN0IFBlbmRpbmdTY3JpcHQmLCBQdW1wU2Vzc2lvbiYp
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="450006"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429040</attachid>
            <date>2021-05-19 04:45:24 -0700</date>
            <delta_ts>2021-05-20 02:27:18 -0700</delta_ts>
            <desc>wip</desc>
            <filename>yield-refactor.patch</filename>
            <type>text/plain</type>
            <size>26998</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCA3ZDRlOTE4NTkzMjcuLjFmODQ2
NGQ5NzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTcwLDYgKzE3
MCw4IEBAIE9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlwdEVsZW1lbnQ6
OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwCiAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1s
NS9zcGVjL092ZXJ2aWV3Lmh0bWwjcHJlcGFyZS1hLXNjcmlwdAogYm9vbCBTY3JpcHRFbGVtZW50
OjpwcmVwYXJlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwg
TGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5cGVzKQogeworLy8gICAgV1RGTG9nQWx3
YXlzKCJTY3JpcHRFbGVtZW50OjpwcmVwYXJlU2NyaXB0IGhhc1NvdXJjZUF0dHJpYnV0ZSAlZCBo
YXNBc3luY0F0dHJpYnV0ZSAlZCBoYXNEZWZlckF0dHJpYnV0ZSgpICVkIG1fcGFyc2VySW5zZXJ0
ZWQgJWQgbV9hbHJlYWR5U3RhcnRlZCAlZCIsIGhhc1NvdXJjZUF0dHJpYnV0ZSgpLCBoYXNBc3lu
Y0F0dHJpYnV0ZSgpLCBoYXNEZWZlckF0dHJpYnV0ZSgpLCBtX3BhcnNlckluc2VydGVkLCBtX2Fs
cmVhZHlTdGFydGVkKTsKKwogICAgIGlmIChtX2FscmVhZHlTdGFydGVkKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTI0NywzMCArMjQ5LDQ0IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cHJl
cGFyZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24sIExlZ2Fj
CiAgICAgYm9vbCBpc0NsYXNzaWNFeHRlcm5hbFNjcmlwdCA9IHNjcmlwdFR5cGUgPT0gU2NyaXB0
VHlwZTo6Q2xhc3NpYyAmJiBoYXNTb3VyY2VBdHRyaWJ1dGUoKTsKICAgICBib29sIGlzUGFyc2Vy
SW5zZXJ0ZWREZWZlcnJlZFNjcmlwdCA9ICgoaXNDbGFzc2ljRXh0ZXJuYWxTY3JpcHQgJiYgaGFz
RGVmZXJBdHRyaWJ1dGUoKSkgfHwgc2NyaXB0VHlwZSA9PSBTY3JpcHRUeXBlOjpNb2R1bGUpCiAg
ICAgICAgICYmIG1fcGFyc2VySW5zZXJ0ZWQgJiYgIWhhc0FzeW5jQXR0cmlidXRlKCk7CisKICAg
ICBpZiAoaXNQYXJzZXJJbnNlcnRlZERlZmVycmVkU2NyaXB0KSB7CiAgICAgICAgIG1fd2lsbEV4
ZWN1dGVXaGVuRG9jdW1lbnRGaW5pc2hlZFBhcnNpbmcgPSB0cnVlOwogICAgICAgICBtX3dpbGxC
ZVBhcnNlckV4ZWN1dGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGlzQ2xhc3NpY0V4dGVybmFs
U2NyaXB0ICYmIG1fcGFyc2VySW5zZXJ0ZWQgJiYgIWhhc0FzeW5jQXR0cmlidXRlKCkpIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGlzQ2xhc3NpY0V4dGVybmFsU2Ny
aXB0ICYmIG1fcGFyc2VySW5zZXJ0ZWQgJiYgIWhhc0FzeW5jQXR0cmlidXRlKCkpIHsKICAgICAg
ICAgQVNTRVJUKHNjcmlwdFR5cGUgPT0gU2NyaXB0VHlwZTo6Q2xhc3NpYyk7CiAgICAgICAgIG1f
d2lsbEJlUGFyc2VyRXhlY3V0ZWQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoKGlzQ2xhc3NpY0V4
dGVybmFsU2NyaXB0IHx8IHNjcmlwdFR5cGUgPT0gU2NyaXB0VHlwZTo6TW9kdWxlKSAmJiAhaGFz
QXN5bmNBdHRyaWJ1dGUoKSAmJiAhbV9mb3JjZUFzeW5jKSB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGlmICgoaXNDbGFzc2ljRXh0ZXJuYWxTY3JpcHQgfHwgc2NyaXB0VHlw
ZSA9PSBTY3JpcHRUeXBlOjpNb2R1bGUpICYmICFoYXNBc3luY0F0dHJpYnV0ZSgpICYmICFtX2Zv
cmNlQXN5bmMpIHsKICAgICAgICAgbV93aWxsRXhlY3V0ZUluT3JkZXIgPSB0cnVlOwogICAgICAg
ICBBU1NFUlQobV9sb2FkYWJsZVNjcmlwdCk7CiAgICAgICAgIGRvY3VtZW50LnNjcmlwdFJ1bm5l
cigpLnF1ZXVlU2NyaXB0Rm9yRXhlY3V0aW9uKCp0aGlzLCAqbV9sb2FkYWJsZVNjcmlwdCwgU2Ny
aXB0UnVubmVyOjpJTl9PUkRFUl9FWEVDVVRJT04pOwotICAgIH0gZWxzZSBpZiAoaGFzU291cmNl
QXR0cmlidXRlKCkgfHwgc2NyaXB0VHlwZSA9PSBTY3JpcHRUeXBlOjpNb2R1bGUpIHsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGhhc1NvdXJjZUF0dHJpYnV0ZSgpIHx8
IHNjcmlwdFR5cGUgPT0gU2NyaXB0VHlwZTo6TW9kdWxlKSB7CiAgICAgICAgIEFTU0VSVChtX2xv
YWRhYmxlU2NyaXB0KTsKICAgICAgICAgQVNTRVJUKGhhc0FzeW5jQXR0cmlidXRlKCkgfHwgbV9m
b3JjZUFzeW5jKTsKICAgICAgICAgZG9jdW1lbnQuc2NyaXB0UnVubmVyKCkucXVldWVTY3JpcHRG
b3JFeGVjdXRpb24oKnRoaXMsICptX2xvYWRhYmxlU2NyaXB0LCBTY3JpcHRSdW5uZXI6OkFTWU5D
X0VYRUNVVElPTik7Ci0gICAgfSBlbHNlIGlmICghaGFzU291cmNlQXR0cmlidXRlKCkgJiYgbV9w
YXJzZXJJbnNlcnRlZCAmJiAhZG9jdW1lbnQuaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKG1fcGFyc2VySW5zZXJ0ZWQpIHsK
ICAgICAgICAgQVNTRVJUKHNjcmlwdFR5cGUgPT0gU2NyaXB0VHlwZTo6Q2xhc3NpYyk7CiAgICAg
ICAgIG1fd2lsbEJlUGFyc2VyRXhlY3V0ZWQgPSB0cnVlOwogICAgICAgICBtX3JlYWR5VG9CZVBh
cnNlckV4ZWN1dGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoc2NyaXB0
VHlwZSA9PSBTY3JpcHRUeXBlOjpDbGFzc2ljKTsKLSAgICAgICAgVGV4dFBvc2l0aW9uIHBvc2l0
aW9uID0gZG9jdW1lbnQuaXNJbkRvY3VtZW50V3JpdGUoKSA/IFRleHRQb3NpdGlvbigpIDogc2Ny
aXB0U3RhcnRQb3NpdGlvbjsKLSAgICAgICAgZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291
cmNlQ29kZShzb3VyY2VUZXh0LCBVUkwoZG9jdW1lbnQudXJsKCkpLCBwb3NpdGlvbiwgSlNDOjpT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIElubGluZUNsYXNzaWNTY3JpcHQ6OmNy
ZWF0ZSgqdGhpcykpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgQVNTRVJU
KHNjcmlwdFR5cGUgPT0gU2NyaXB0VHlwZTo6Q2xhc3NpYyk7CisgICAgVGV4dFBvc2l0aW9uIHBv
c2l0aW9uID0gZG9jdW1lbnQuaXNJbkRvY3VtZW50V3JpdGUoKSA/IFRleHRQb3NpdGlvbigpIDog
c2NyaXB0U3RhcnRQb3NpdGlvbjsKKyAgICBleGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3Vy
Y2VDb2RlKHNvdXJjZVRleHQsIFVSTChkb2N1bWVudC51cmwoKSksIHBvc2l0aW9uLCBKU0M6OlNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3Jl
YXRlKCp0aGlzKSkpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ1Nyw3ICs0NzMsOCBA
QCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KFBlbmRpbmdTY3JpcHQm
IHBlbmRpbmdTY3JpcHQpCiAgICAgICAgIEFTU0VSVCghcGVuZGluZ1NjcmlwdC5lcnJvcigpKTsK
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzY3JpcHRUeXBlKCkgPT0gU2NyaXB0VHlwZTo6
Q2xhc3NpYywgIk1vZHVsZSBzY3JpcHQgYWx3YXlzIGhhdmUgYSBsb2FkYWJsZVNjcmlwdCBwb2lu
dGVyLiIpOwogICAgICAgICBleGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNj
cmlwdENvbnRlbnQoKSwgVVJMKG1fZWxlbWVudC5kb2N1bWVudCgpLnVybCgpKSwgcGVuZGluZ1Nj
cmlwdC5zdGFydGluZ1Bvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQ
cm9ncmFtLCBJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoKnRoaXMpKSk7Ci0gICAgICAgIGRp
c3BhdGNoTG9hZEV2ZW50UmVzcGVjdGluZ1VzZXJHZXN0dXJlSW5kaWNhdG9yKCk7CisgICAgICAg
IGlmIChoYXNTb3VyY2VBdHRyaWJ1dGUoKSkKKyAgICAgICAgICAgIGRpc3BhdGNoTG9hZEV2ZW50
UmVzcGVjdGluZ1VzZXJHZXN0dXJlSW5kaWNhdG9yKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuaAppbmRleCBhNjliNDU3NTNhNmEuLjRkNGJmYjU0Yjk5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGV4ZWN1dGVQZW5kaW5nU2NyaXB0KFBlbmRpbmdTY3JpcHQmKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBoYXNBc3luY0F0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
RGVmZXJBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZUF0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTm9Nb2R1bGVBdHRyaWJ1
dGUoKSBjb25zdCA9IDA7CiAKICAgICAvLyBYTUwgcGFyc2VyIGNhbGxzIHRoZXNlCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwpAQCAtMTE0LDkgKzExNyw2IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBoYXNEZWZlckF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzU291cmNlQXR0cmlidXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBo
YXNOb01vZHVsZUF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZmVycmVyUG9s
aWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgPSAwOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKaW5kZXggNmJlZWVmMmRkOTA5Li4xYWMxMDNhMzczNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTMyLDggKzEzMiw4
IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZygpCiAgICAg
UmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBO
T1RFOiBUaGlzIHB1bXAgc2hvdWxkIG9ubHkgZXZlciBlbWl0IGJ1ZmZlcmVkIGNoYXJhY3RlciB0
b2tlbnMsCi0gICAgLy8gc28gRm9yY2VTeW5jaHJvbm91cyB2cy4gQWxsb3dZaWVsZCBzaG91bGQg
YmUgbWVhbmluZ2xlc3MuCi0gICAgcHVtcFRva2VuaXplcklmUG9zc2libGUoRm9yY2VTeW5jaHJv
bm91cyk7CisgICAgLy8gc28geWllbGQgbW9kZSBzaG91bGQgYmUgbWVhbmluZ2xlc3MuCisgICAg
cHVtcFRva2VuaXplcklmUG9zc2libGUoUGFyc2VyWWllbGRNb2RlOjpEaXNhbGxvdyk7CiAKICAg
ICBpZiAoaXNTdG9wcGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MiwxNCArMTgyLDE0IEBA
IGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkgfHwgaW5QdW1wU2Vzc2lvbigpOwogfQogCi12b2lk
IEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcklmUG9zc2libGUoU3luY2hyb25vdXNN
b2RlIG1vZGUpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcklmUG9zc2li
bGUoUGFyc2VyWWllbGRNb2RlIG1vZGUpCiB7CiAgICAgaWYgKGlzU3RvcHBlZCgpIHx8IGlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gT25jZSBhIHJlc3Vt
ZSBpcyBzY2hlZHVsZWQsIEhUTUxQYXJzZXJTY2hlZHVsZXIgY29udHJvbHMgd2hlbiB3ZSBuZXh0
IHB1bXAuCiAgICAgaWYgKGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkpIHsKLSAgICAgICAgQVNTRVJU
KG1vZGUgPT0gQWxsb3dZaWVsZCk7CisgICAgICAgIEFTU0VSVChtb2RlID09IFBhcnNlcllpZWxk
TW9kZTo6QWxsb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMTAsMTQgKzIxMCwx
OSBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKQog
CiAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGhlcmUgdW5sZXNzIHdlIGNhbiBwdW1wIGltbWVk
aWF0ZWx5LgogICAgIC8vIENhbGwgcHVtcFRva2VuaXplcigpIGRpcmVjdGx5IHNvIHRoYXQgQVNT
RVJUUyB3aWxsIGZpcmUgaWYgd2UncmUgd3JvbmcuCi0gICAgcHVtcFRva2VuaXplcihBbGxvd1lp
ZWxkKTsKKyAgICBwdW1wVG9rZW5pemVyKFBhcnNlcllpZWxkTW9kZTo6QWxsb3cpOwogICAgIGVu
ZElmRGVsYXllZCgpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0Zv
clBhdXNlZFRyZWVCdWlsZGVyKCkKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRz
Rm9yUGF1c2VkVHJlZUJ1aWxkZXIoUGFyc2VyWWllbGRNb2RlIHlpZWxkTW9kZSwgUHVtcFNlc3Np
b24mIHNlc3Npb24pCiB7CiAgICAgQVNTRVJUKHNjcmlwdGluZ0NvbnRlbnRJc0FsbG93ZWQocGFy
c2VyQ29udGVudFBvbGljeSgpKSk7CiAKKyAgICBpZiAobV9zY3JpcHRSdW5uZXIgJiYgbV9zY3Jp
cHRSdW5uZXItPmhhc1lpZWxkZWRTY3JpcHQoKSkgeworICAgICAgICBtX3NjcmlwdFJ1bm5lci0+
ZXhlY3V0ZVlpZWxkZWRTY3JpcHQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlm
IChzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+IGNvbnN0cnVj
dGlvbkRhdGEgPSBtX3RyZWVCdWlsZGVyLT50YWtlQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRh
dGEoKSkgewogICAgICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5n
U2NyaXB0V29yaygpKTsKIApAQCAtMjQwLDggKzI0NSwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCkKICAgICBpZiAoYXV0byBzY3Jp
cHRFbGVtZW50ID0gbV90cmVlQnVpbGRlci0+dGFrZVNjcmlwdFRvUHJvY2VzcyhzY3JpcHRTdGFy
dFBvc2l0aW9uKSkgewogICAgICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJs
b2NraW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlw
dFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdtZW50LgotICAgICAgICBpZiAobV9z
Y3JpcHRSdW5uZXIpCi0gICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRF
bGVtZW50LnJlbGVhc2VOb25OdWxsKCksIHNjcmlwdFN0YXJ0UG9zaXRpb24pOworICAgICAgICBp
ZiAobV9zY3JpcHRSdW5uZXIpIHsKKyAgICAgICAgICAgIGF1dG8qIHNlc3Npb25Gb3JZaWVsZCA9
IHlpZWxkTW9kZSA9PSBQYXJzZXJZaWVsZE1vZGU6OkFsbG93ID8gJnNlc3Npb24gOiBudWxscHRy
OworICAgICAgICAgICAgbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGUoc2NyaXB0RWxlbWVudC5yZWxl
YXNlTm9uTnVsbCgpLCBzY3JpcHRTdGFydFBvc2l0aW9uLCBzZXNzaW9uRm9yWWllbGQpOworICAg
ICAgICB9CiAgICAgfQogfQogCkBAIC0yNTQsMTYgKzI2MSwxNSBAQCBEb2N1bWVudCogSFRNTERv
Y3VtZW50UGFyc2VyOjpjb250ZXh0Rm9yUGFyc2luZ1Nlc3Npb24oKQogICAgIHJldHVybiBkb2N1
bWVudCgpOwogfQogCi1ib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplckxvb3Ao
U3luY2hyb25vdXNNb2RlIG1vZGUsIGJvb2wgcGFyc2luZ0ZyYWdtZW50LCBQdW1wU2Vzc2lvbiYg
c2Vzc2lvbikKK2Jvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChQYXJz
ZXJZaWVsZE1vZGUgeWllbGRNb2RlLCBib29sIHBhcnNpbmdGcmFnbWVudCwgUHVtcFNlc3Npb24m
IHNlc3Npb24pCiB7CiAgICAgZG8gewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNXYWl0aW5nRm9y
U2NyaXB0cygpKSkgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAmJiBtX3Bh
cnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoc2Vzc2lvbikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBydW5TY3JpcHRzRm9y
UGF1c2VkVHJlZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVl
QnVpbGRlcih5aWVsZE1vZGUsIHNlc3Npb24pOworCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBw
YXVzZWQgd2FpdGluZyBmb3IgYSBzY3JpcHQsIHdlIHRyeSB0byBleGVjdXRlIHNjcmlwdHMgYmVm
b3JlIGNvbnRpbnVpbmcuCiAgICAgICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8
IGlzU3RvcHBlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV9zY3JpcHRSdW5uZXIgJiYgbV9zY3JpcHRSdW5uZXItPmhhc1lpZWxkZWRT
Y3JpcHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHdyb25nIGZvciB0
aGUgSFRNTERvY3VtZW50UGFyc2VyIHRvIHJlYWNoIGJhY2sgdG8gdGhlIEZyYW1lLCBidXQgdGhp
cyBhcHByb2FjaCBpcwpAQCAtMjczLDcgKzI3OSw3IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2Vy
OjpwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJh
CiAgICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2luZ0ZyYWdtZW50ICYmIGRvY3VtZW50KCktPmZy
YW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLmxvY2F0
aW9uQ2hhbmdlUGVuZGluZygpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICBpZiAoVU5MSUtFTFkobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5z
aG91bGRZaWVsZEJlZm9yZVRva2VuKHNlc3Npb24pKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKHlp
ZWxkTW9kZSA9PSBQYXJzZXJZaWVsZE1vZGU6OkFsbG93ICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5z
aG91bGRZaWVsZEJlZm9yZVRva2VuKHNlc3Npb24pKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgICAgIGlmICghcGFyc2luZ0ZyYWdtZW50KQpAQCAtMjk4LDcgKzMwNCw3IEBAIGJv
b2wgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUg
bW9kZSwgYm9vbCBwYXJzaW5nRnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKK3ZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFBhcnNlcllpZWxkTW9kZSBtb2RlKQog
ewogICAgIEFTU0VSVCghaXNTdG9wcGVkKCkpOwogICAgIEFTU0VSVCghaXNTY2hlZHVsZWRGb3JS
ZXN1bWUoKSk7CkBAIC0zODgsNyArMzk0LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omlu
c2VydChTZWdtZW50ZWRTdHJpbmcmJiBzb3VyY2UpCiAKICAgICBzb3VyY2Uuc2V0RXhjbHVkZUxp
bmVOdW1iZXJzKCk7CiAgICAgbV9pbnB1dC5pbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludChX
VEZNb3ZlKHNvdXJjZSkpOwotICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEZvcmNlU3luY2hy
b25vdXMpOworICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKFBhcnNlcllpZWxkTW9kZTo6RGlz
YWxsb3cpOwogCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSAmJiAhaXNEZXRhY2hlZCgp
KSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEg
c2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCkBAIC00MzQsNyArNDQwLDcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJjZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEFs
bG93WWllbGQpOworICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKFBhcnNlcllpZWxkTW9kZTo6
QWxsb3cpOwogCiAgICAgZW5kSWZEZWxheWVkKCk7CiB9CkBAIC01NDQsNyArNTUwLDcgQEAgdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigp
CiAgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbnVsbHB0cjsKLSAgICBwdW1wVG9rZW5pemVy
SWZQb3NzaWJsZShBbGxvd1lpZWxkKTsKKyAgICBwdW1wVG9rZW5pemVySWZQb3NzaWJsZShQYXJz
ZXJZaWVsZE1vZGU6OkFsbG93KTsKICAgICBlbmRJZkRlbGF5ZWQoKTsKIH0KIApAQCAtNTY5LDYg
KzU3NSwxMSBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kQ3VycmVudElucHV0U3Ry
ZWFtVG9QcmVsb2FkU2Nhbm5lckFuZFNjYW4oKQogICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4o
Km1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CiB9CiAKK2Jvb2wgSFRNTERvY3VtZW50UGFyc2Vy
OjpzaG91bGRZaWVsZChjb25zdCBQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0LCBQdW1wU2Vz
c2lvbiYgc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gbV9wYXJzZXJTY2hlZHVsZXItPnNob3VsZFlp
ZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KCZwZW5kaW5nU2NyaXB0LmVsZW1lbnQoKSwgc2Vzc2lv
bik7Cit9CisKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChQZW5kaW5n
U2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogewogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNl
IHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAwNTc5Y2Q1
MmMxN2QuLmY1NjM4YzJhMzFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgSFRNTFRyZWVCdWls
ZGVyOwogY2xhc3MgSFRNTFJlc291cmNlUHJlbG9hZGVyOwogY2xhc3MgUHVtcFNlc3Npb247CiAK
K2VudW0gUGFyc2VyWWllbGRNb2RlIHsgQWxsb3csIERpc2FsbG93IH07CisKIERFQ0xBUkVfQUxM
T0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhUTUxEb2N1bWVudFBhcnNlcik7CiBjbGFzcyBI
VE1MRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLCBwcml2
YXRlIEhUTUxTY3JpcHRSdW5uZXJIb3N0LCBwcml2YXRlIFBlbmRpbmdTY3JpcHRDbGllbnQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEhUTUxEb2N1
bWVudFBhcnNlcik7CkBAIC05NywxOSArOTksMTkgQEAgcHJpdmF0ZToKICAgICBIVE1MSW5wdXRT
dHJlYW0mIGlucHV0U3RyZWFtKCkgZmluYWw7CiAgICAgYm9vbCBoYXNQcmVsb2FkU2Nhbm5lcigp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgYXBwZW5kQ3VycmVudElucHV0U3RyZWFtVG9QcmVsb2Fk
U2Nhbm5lckFuZFNjYW4oKSBmaW5hbDsKKyAgICBib29sIHNob3VsZFlpZWxkKGNvbnN0IFBlbmRp
bmdTY3JpcHQmLCBQdW1wU2Vzc2lvbiYpIGZpbmFsOwogCiAgICAgLy8gUGVuZGluZ1NjcmlwdENs
aWVudAogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYpIGZpbmFsOwogCiAg
ICAgRG9jdW1lbnQqIGNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpOwogCi0gICAgZW51bSBTeW5j
aHJvbm91c01vZGUgeyBBbGxvd1lpZWxkLCBGb3JjZVN5bmNocm9ub3VzIH07Ci0gICAgdm9pZCBw
dW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSk7Ci0gICAgYm9vbCBwdW1wVG9rZW5pemVyTG9v
cChTeW5jaHJvbm91c01vZGUsIGJvb2wgcGFyc2luZ0ZyYWdtZW50LCBQdW1wU2Vzc2lvbiYpOwot
ICAgIHZvaWQgcHVtcFRva2VuaXplcklmUG9zc2libGUoU3luY2hyb25vdXNNb2RlKTsKKyAgICB2
b2lkIHB1bXBUb2tlbml6ZXIoUGFyc2VyWWllbGRNb2RlKTsKKyAgICBib29sIHB1bXBUb2tlbml6
ZXJMb29wKFBhcnNlcllpZWxkTW9kZSwgYm9vbCBwYXJzaW5nRnJhZ21lbnQsIFB1bXBTZXNzaW9u
Jik7CisgICAgdm9pZCBwdW1wVG9rZW5pemVySWZQb3NzaWJsZShQYXJzZXJZaWVsZE1vZGUpOwog
ICAgIHZvaWQgY29uc3RydWN0VHJlZUZyb21IVE1MVG9rZW4oSFRNTFRva2VuaXplcjo6VG9rZW5Q
dHImKTsKIAotICAgIHZvaWQgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7CisgICAg
dm9pZCBydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoUGFyc2VyWWllbGRNb2RlLCBQdW1w
U2Vzc2lvbiYpOwogICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCk7
CiAKICAgICB2b2lkIGF0dGVtcHRUb0VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAppbmRleCBmMDdmOTMzMDkyOWUuLjA1ZWI0
MTk2NGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiU2NyaXB0RWxlbWVudC5oIgogCiAvLyBkZWZhdWx0UGFyc2VyVGltZUxpbWl0IGlzIHRo
ZSBzZWNvbmRzIHRoZSBwYXJzZXIgd2lsbCBydW4gaW4gb25lIHdyaXRlKCkgY2FsbAogLy8gYmVm
b3JlIHlpZWxkaW5nLiBJbmxpbmUgPHNjcmlwdD4gZXhlY3V0aW9uIGNhbiBjYXVzZSBpdCB0byBl
eGNlZWQgdGhlIGxpbWl0LgpAQCAtNjUsMTUgKzY2LDE0IEBAIEFjdGl2ZVBhcnNlclNlc3Npb246
On5BY3RpdmVQYXJzZXJTZXNzaW9uKCkKIFB1bXBTZXNzaW9uOjpQdW1wU2Vzc2lvbih1bnNpZ25l
ZCYgbmVzdGluZ0xldmVsLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBOZXN0aW5nTGV2ZWxJ
bmNyZW1lbnRlcihuZXN0aW5nTGV2ZWwpCiAgICAgLCBBY3RpdmVQYXJzZXJTZXNzaW9uKGRvY3Vt
ZW50KQotICAgIC8vIFNldHRpbmcgcHJvY2Vzc2VkVG9rZW5zIHRvIElOVF9NQVggY2F1c2VzIHVz
IHRvIGNoZWNrIGZvciB5aWVsZHMKLSAgICAvLyBhZnRlciBhbnkgdG9rZW4gZHVyaW5nIGFueSBw
YXJzZSB3aGVyZSB5aWVsZGluZyBpcyBhbGxvd2VkLgotICAgIC8vIEF0IHRoYXQgdGltZSB3ZSds
bCBpbml0aWFsaXplIHN0YXJ0VGltZS4KLSAgICAsIHByb2Nlc3NlZFRva2VucyhJTlRfTUFYKQot
ICAgICwgZGlkU2VlU2NyaXB0KGZhbHNlKQogeworLy8gICAgV1RGTG9nQWx3YXlzKCJQdW1wU2Vz
c2lvbiIpOwogfQogCi1QdW1wU2Vzc2lvbjo6flB1bXBTZXNzaW9uKCkgPSBkZWZhdWx0OworUHVt
cFNlc3Npb246On5QdW1wU2Vzc2lvbigpCit7CisvLyAgICBXVEZMb2dBbHdheXMoIn5QdW1wU2Vz
c2lvbiIpOworfQogCiBIVE1MUGFyc2VyU2NoZWR1bGVyOjpIVE1MUGFyc2VyU2NoZWR1bGVyKEhU
TUxEb2N1bWVudFBhcnNlciYgcGFyc2VyKQogICAgIDogbV9wYXJzZXIocGFyc2VyKQpAQCAtMTA0
LDE4ICsxMDQsMzcgQEAgdm9pZCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpjb250aW51ZU5leHRDaHVu
a1RpbWVyRmlyZWQoKQogICAgIG1fcGFyc2VyLnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiB9
CiAKLWJvb2wgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdT
Y3JpcHQoUHVtcFNlc3Npb24mIHNlc3Npb24pCitib29sIEhUTUxQYXJzZXJTY2hlZHVsZXI6OnNo
b3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KGNvbnN0IFNjcmlwdEVsZW1lbnQqIHNjcmlw
dEVsZW1lbnQsIFB1bXBTZXNzaW9uJiBzZXNzaW9uKQogeworICAgIFNlY29uZHMgZWxhcHNlZFRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHNlc3Npb24uc3RhcnRUaW1lOworCisgICAgaWYg
KHNjcmlwdEVsZW1lbnQpIHsKKyAgICAgICAgaWYgKCFzY3JpcHRFbGVtZW50LT5oYXNTb3VyY2VB
dHRyaWJ1dGUoKSAmJiBzY3JpcHRFbGVtZW50LT5zY3JpcHRDb250ZW50KCkubGVuZ3RoKCkgPCAx
MDI0KSB7CisvLyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygibm90IHlpZWxkaW5nIGR1ZSB0byBp
bmxpbmUgbGVuZ3RoICV1ICVmIiwgc2NyaXB0RWxlbWVudC0+c2NyaXB0Q29udGVudCgpLmxlbmd0
aCgpLCBlbGFwc2VkVGltZS5taWxsaXNlY29uZHMoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBJZiB3ZSd2ZSBuZXZlciBwYWludGVkIGJl
Zm9yZSBhbmQgYSBsYXlvdXQgaXMgcGVuZGluZywgeWllbGQgcHJpb3IgdG8gcnVubmluZwogICAg
IC8vIHNjcmlwdHMgdG8gZ2l2ZSB0aGUgcGFnZSBhIGNoYW5jZSB0byBwYWludCBlYXJsaWVyLgog
ICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX3BhcnNlci5kb2N1bWVudCgpOwotICAg
IGJvb2wgbmVlZHNGaXJzdFBhaW50ID0gZG9jdW1lbnQtPnZpZXcoKSAmJiAhZG9jdW1lbnQtPnZp
ZXcoKS0+aGFzRXZlclBhaW50ZWQoKTsKKworLy8gICAgYm9vbCBuZWVkc0ZpcnN0UGFpbnQgPSBk
b2N1bWVudC0+dmlldygpICYmICFkb2N1bWVudC0+dmlldygpLT5oYXNFdmVyUGFpbnRlZCgpOwog
ICAgIHNlc3Npb24uZGlkU2VlU2NyaXB0ID0gdHJ1ZTsKIAogICAgIGlmIChVTkxJS0VMWShtX2Rv
Y3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIHJldHVybiBuZWVkc0ZpcnN0UGFpbnQgJiYgZG9jdW1lbnQtPmlzTGF5b3V0VGltZXJB
Y3RpdmUoKTsKKy8vICAgIFNlY29uZHMgZWxhcHNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KSAtIHNlc3Npb24uc3RhcnRUaW1lOworCisvLyAgICBXVEZMb2dBbHdheXMoInNob3VsZFlpZWxk
QmVmb3JlRXhlY3V0aW5nU2NyaXB0IG5lZWRzRmlyc3RQYWludCAlZCBwcm9jZXNzZWRUb2tlbnMg
JWQgZWxhcHNlZFRpbWUgJWYiLCBuZWVkc0ZpcnN0UGFpbnQsIHNlc3Npb24ucHJvY2Vzc2VkVG9r
ZW5zLCBlbGFwc2VkVGltZS5taWxsaXNlY29uZHMoKSk7CisKKyAgICBpZiAoZWxhcHNlZFRpbWUg
PiAxNl9tcyAmJiBzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+IDI1NiAmJiBkb2N1bWVudC0+Ym9k
eSgpKSB7CisvLyAgICAgICAgV1RGTG9nQWx3YXlzKCJZSUVMRCBzaG91bGRZaWVsZEJlZm9yZUV4
ZWN1dGluZ1NjcmlwdCBwcm9jZXNzZWRUb2tlbnMgJWQgZWxhcHNlZFRpbWUgJWYiLCBzZXNzaW9u
LnByb2Nlc3NlZFRva2VucywgZWxhcHNlZFRpbWUubWlsbGlzZWNvbmRzKCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgSFRNTFBh
cnNlclNjaGVkdWxlcjo6c2NoZWR1bGVGb3JSZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCmluZGV4IDJjYTJmMTYxOWM1MC4uZWVi
NTFjZjlmMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VyU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXI7CitjbGFzcyBTY3JpcHRFbGVt
ZW50OwogCiBjbGFzcyBBY3RpdmVQYXJzZXJTZXNzaW9uIHsKIHB1YmxpYzoKQEAgLTUyLDkgKzUz
LDEwIEBAIHB1YmxpYzoKICAgICBQdW1wU2Vzc2lvbih1bnNpZ25lZCYgbmVzdGluZ0xldmVsLCBE
b2N1bWVudCopOwogICAgIH5QdW1wU2Vzc2lvbigpOwogCi0gICAgdW5zaWduZWQgcHJvY2Vzc2Vk
VG9rZW5zOwotICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgIGJvb2wgZGlkU2VlU2Ny
aXB0OworICAgIHVuc2lnbmVkIHByb2Nlc3NlZFRva2VucyB7IDAgfTsKKyAgICB1bnNpZ25lZCBw
cm9jZXNzZWRUb2tlbnNPbkxhc3RDaGVjayB7IDAgfTsKKyAgICBNb25vdG9uaWNUaW1lIHN0YXJ0
VGltZSB7IE1vbm90b25pY1RpbWU6Om5vdygpIH07CisgICAgYm9vbCBkaWRTZWVTY3JpcHQgeyBm
YWxzZSB9OwogfTsKIAogY2xhc3MgSFRNTFBhcnNlclNjaGVkdWxlciB7CkBAIC03MiwxMyArNzQs
MTMgQEAgcHVibGljOgogICAgICAgICBpZiAoVU5MSUtFTFkobV9kb2N1bWVudEhhc0FjdGl2ZVBh
cnNlcllpZWxkVG9rZW5zKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlm
IChVTkxJS0VMWShzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+IG51bWJlck9mVG9rZW5zQmVmb3Jl
Q2hlY2tpbmdGb3JZaWVsZCB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkpCisgICAgICAgIGlmIChV
TkxJS0VMWShzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+IHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5z
T25MYXN0Q2hlY2sgKyBudW1iZXJPZlRva2Vuc0JlZm9yZUNoZWNraW5nRm9yWWllbGQgfHwgc2Vz
c2lvbi5kaWRTZWVTY3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrRm9yWWllbGQoc2Vz
c2lvbik7CiAKICAgICAgICAgKytzZXNzaW9uLnByb2Nlc3NlZFRva2VuczsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLSAgICBib29sIHNob3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2Ny
aXB0KFB1bXBTZXNzaW9uJik7CisgICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1Nj
cmlwdChjb25zdCBTY3JpcHRFbGVtZW50KiwgUHVtcFNlc3Npb24mKTsKIAogICAgIHZvaWQgc2No
ZWR1bGVGb3JSZXN1bWUoKTsKICAgICBib29sIGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1N1c3BlbmRlZFdpdGhBY3RpdmVUaW1lciB8fCBtX2NvbnRpbnVlTmV4dENo
dW5rVGltZXIuaXNBY3RpdmUoKSB8fCBtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tl
bnM7IH0KQEAgLTEwOCwxNiArMTEwLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2hlY2tGb3JZ
aWVsZChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB7Ci0gICAgICAgIHNlc3Npb24ucHJvY2Vz
c2VkVG9rZW5zID0gMTsKKyAgICAgICAgc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnNPbkxhc3RDaGVj
ayA9IHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zOwogICAgICAgICBzZXNzaW9uLmRpZFNlZVNjcmlw
dCA9IGZhbHNlOwogCi0gICAgICAgIC8vIE1vbm90b25pY1RpbWU6Om5vdygpIGNhbiBiZSBleHBl
bnNpdmUuIEJ5IGRlbGF5aW5nLCB3ZSBhdm9pZGVkIGNhbGxpbmcKLSAgICAgICAgLy8gTW9ub3Rv
bmljVGltZTo6bm93KCkgd2hlbiBjb25zdHJ1Y3Rpbmcgbm9uLXlpZWxkaW5nIFB1bXBTZXNzaW9u
cy4KLSAgICAgICAgaWYgKCFzZXNzaW9uLnN0YXJ0VGltZSkgewotICAgICAgICAgICAgc2Vzc2lv
bi5zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotCiAgICAgICAgIFNlY29uZHMgZWxhcHNlZFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIHNlc3Npb24uc3RhcnRUaW1lOwogICAgICAgICByZXR1cm4gZWxhcHNl
ZFRpbWUgPiBtX3BhcnNlclRpbWVMaW1pdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDE2NTg2MzliNGVjYy4uNmM0N2Fj
NzMzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0
UnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVu
bmVyLmNwcApAQCAtODgsMTggKzg4LDYgQEAgaW5saW5lIFJlZjxFdmVudD4gY3JlYXRlU2NyaXB0
TG9hZEV2ZW50KCkKICAgICByZXR1cm4gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogfQog
Ci1ib29sIEhUTUxTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJlYWR5KGNvbnN0IFBlbmRp
bmdTY3JpcHQmIHNjcmlwdCkKLXsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMgPSAhbV9kb2N1
bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCk7Ci0gICAgaWYgKG1faGFzU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzY3JpcHQu
bmVlZHNMb2FkaW5nKCkgJiYgIXNjcmlwdC5pc0xvYWRlZCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdTY3Jp
cHQpCiB7CiAgICAgLy8gU3RvcCB3YXRjaGluZyBsb2FkcyBiZWZvcmUgZXhlY3V0ZVNjcmlwdCB0
byBwcmV2ZW50IHJlY3Vyc2lvbiBpZiB0aGUgc2NyaXB0IHJlbG9hZHMgaXRzZWxmLgpAQCAtMTMw
LDcgKzExOCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChQ
ZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBt
YXRjaCAxMC4yLjUuMTEgIkFuIGVuZCB0YWcgd2hvc2UgdGFnIG5hbWUgaXMgJ3NjcmlwdCciCiAv
LyBTY3JpcHQgaGFuZGxpbmcgbGl2ZXMgb3V0c2lkZSB0aGUgdHJlZSBidWlsZGVyIHRvIGtlZXAg
dGhlIGVhY2ggY2xhc3Mgc2ltcGxlLgotdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlKFJl
ZjxTY3JpcHRFbGVtZW50PiYmIGVsZW1lbnQsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3Rh
cnRQb3NpdGlvbikKK3ZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZShSZWY8U2NyaXB0RWxl
bWVudD4mJiBlbGVtZW50LCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24s
IFB1bXBTZXNzaW9uKiBzZXNzaW9uRm9yWWllbGQpCiB7CiAgICAgLy8gRklYTUU6IElmIHNjcmlw
dGluZyBpcyBkaXNhYmxlZCwgYWx3YXlzIGp1c3QgcmV0dXJuLgogCkBAIC0xNDUsNyArMTMzLDcg
QEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlKFJlZjxTY3JpcHRFbGVtZW50PiYmIGVs
ZW1lbnQsIGNvbnN0IFRleHRQb3NpdGlvbiYKICAgICAgICAgLy8gSWYgcHJlbG9hZCBzY2FubmVy
IGdvdCBjcmVhdGVkLCBpdCBpcyBtaXNzaW5nIHRoZSBzb3VyY2UgYWZ0ZXIgdGhlIGN1cnJlbnQg
aW5zZXJ0aW9uIHBvaW50LiBBcHBlbmQgaXQgYW5kIHNjYW4uCiAgICAgICAgIGlmICghaGFkUHJl
bG9hZFNjYW5uZXIgJiYgbV9ob3N0Lmhhc1ByZWxvYWRTY2FubmVyKCkpCiAgICAgICAgICAgICBt
X2hvc3QuYXBwZW5kQ3VycmVudElucHV0U3RyZWFtVG9QcmVsb2FkU2Nhbm5lckFuZFNjYW4oKTsK
LSAgICAgICAgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKKyAgICAgICAgZXhlY3V0
ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoc2Vzc2lvbkZvcllpZWxkKTsKICAgICB9CiB9CiAKQEAg
LTE1NCwxNSArMTQyLDMzIEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aGFzUGFyc2VyQmxvY2tp
bmdTY3JpcHQoKSBjb25zdAogICAgIHJldHVybiAhIW1fcGFyc2VyQmxvY2tpbmdTY3JpcHQ7CiB9
CiAKLXZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMo
KQorYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpoYXNSZWFkeVBhcnNlckJsb2NraW5nU2NyaXB0KCkg
Y29uc3QKIHsKLSAgICB3aGlsZSAoaGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKSAmJiBpc1BlbmRp
bmdTY3JpcHRSZWFkeSgqbV9wYXJzZXJCbG9ja2luZ1NjcmlwdCkpIHsKKyAgICBpZiAoIW1fcGFy
c2VyQmxvY2tpbmdTY3JpcHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fZG9j
dW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fZG9jdW1lbnQtPmhhdmVT
dHlsZXNoZWV0c0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcGFy
c2VyQmxvY2tpbmdTY3JpcHQtPm5lZWRzTG9hZGluZygpICYmICFtX3BhcnNlckJsb2NraW5nU2Ny
aXB0LT5pc0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1Njcmlw
dHMoUHVtcFNlc3Npb24qIHNlc3Npb25Gb3JZaWVsZCkKK3sKKyAgICB3aGlsZSAoaGFzUmVhZHlQ
YXJzZXJCbG9ja2luZ1NjcmlwdCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2RvY3VtZW50KTsKICAg
ICAgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKICAgICAgICAgQVNTRVJUKG1fZG9j
dW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKKyAgICAgICAgbV9oYXNZaWVsZGVkU2Ny
aXB0ID0gc2Vzc2lvbkZvcllpZWxkICYmIG1faG9zdC5zaG91bGRZaWVsZCgqbV9wYXJzZXJCbG9j
a2luZ1NjcmlwdCwgKnNlc3Npb25Gb3JZaWVsZCk7CisgICAgICAgIGlmIChtX2hhc1lpZWxkZWRT
Y3JpcHQpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEluc2VydGlvblBvaW50UmVjb3Jk
IGluc2VydGlvblBvaW50UmVjb3JkKG1faG9zdC5pbnB1dFN0cmVhbSgpKTsKICAgICAgICAgZXhl
Y3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KG1fcGFyc2VyQmxvY2tpbmdTY3JpcHQu
cmVsZWFzZU5vbk51bGwoKS5nZXQoKSk7CiAgICAgfQorCisgICAgbV9oYXNTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzID0gbV9wYXJzZXJCbG9ja2luZ1NjcmlwdCAmJiBtX2RvY3VtZW50ICYm
ICFtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKTsKIH0KIAogdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBl
bmRpbmdTY3JpcHQpCkBAIC0yMDMsNiArMjA5LDE1IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yUGFyc2luZygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVlpZWxkZWRTY3JpcHQoKQoreworICAgIEFT
U0VSVChtX2hhc1lpZWxkZWRTY3JpcHQpOworICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQo
KSk7CisgICAgQVNTRVJUKGhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOworICAgIEFTU0VSVCht
X3BhcnNlckJsb2NraW5nU2NyaXB0LT5pc0xvYWRlZCgpKTsKKyAgICBleGVjdXRlUGFyc2luZ0Js
b2NraW5nU2NyaXB0cygpOworfQorCiBzdGF0aWMgUmVmPFBlbmRpbmdTY3JpcHQ+IHJlcXVlc3RQ
ZW5kaW5nU2NyaXB0KFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQpCiB7CiAgICAgQVNTRVJU
KHNjcmlwdEVsZW1lbnQud2lsbEJlUGFyc2VyRXhlY3V0ZWQoKSk7CkBAIC0yNDcsMjAgKzI2Miwy
NiBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdChTY3JpcHRFbGVtZW50JiBzY3Jp
cHRFbGVtZW50LCBjb25zdCBUZXh0UG9zaXRpbwogICAgIEluc2VydGlvblBvaW50UmVjb3JkIGlu
c2VydGlvblBvaW50UmVjb3JkKG1faG9zdC5pbnB1dFN0cmVhbSgpKTsKICAgICBOZXN0aW5nTGV2
ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZl
bCk7CiAKLSAgICBzY3JpcHRFbGVtZW50LnByZXBhcmVTY3JpcHQoc2NyaXB0U3RhcnRQb3NpdGlv
bik7CisgICAgc2NyaXB0RWxlbWVudC5wcmVwYXJlU2NyaXB0KHNjcmlwdFN0YXJ0UG9zaXRpb24s
IFNjcmlwdEVsZW1lbnQ6OkRpc2FsbG93TGVnYWN5VHlwZUluVHlwZUF0dHJpYnV0ZSk7CiAKICAg
ICBpZiAoIXNjcmlwdEVsZW1lbnQud2lsbEJlUGFyc2VyRXhlY3V0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKHNjcmlwdEVsZW1lbnQud2lsbEV4ZWN1dGVXaGVuRG9jdW1lbnRGaW5p
c2hlZFBhcnNpbmcoKSkKKy8vICAgIFdURkxvZ0Fsd2F5cygid2lsbEJlUGFyc2VyRXhlY3V0ZWQi
KTsKKworICAgIGlmIChzY3JpcHRFbGVtZW50LndpbGxFeGVjdXRlV2hlbkRvY3VtZW50RmluaXNo
ZWRQYXJzaW5nKCkpIHsKKy8vICAgICAgICBXVEZMb2dBbHdheXMoInJlcXVlc3REZWZlcnJlZFNj
cmlwdCIpOwogICAgICAgICByZXF1ZXN0RGVmZXJyZWRTY3JpcHQoc2NyaXB0RWxlbWVudCk7Ci0g
ICAgZWxzZSBpZiAoc2NyaXB0RWxlbWVudC5yZWFkeVRvQmVQYXJzZXJFeGVjdXRlZCgpKSB7Cisg
ICAgfSBlbHNlIGlmIChzY3JpcHRFbGVtZW50LnJlYWR5VG9CZVBhcnNlckV4ZWN1dGVkKCkpIHsK
Ky8vICAgICAgICBXVEZMb2dBbHdheXMoInJlYWR5VG9CZVBhcnNlckV4ZWN1dGVkIG1fc2NyaXB0
TmVzdGluZ0xldmVsICVkIiwgbV9zY3JpcHROZXN0aW5nTGV2ZWwpOwogICAgICAgICBpZiAobV9z
Y3JpcHROZXN0aW5nTGV2ZWwgPT0gMSkKICAgICAgICAgICAgIG1fcGFyc2VyQmxvY2tpbmdTY3Jp
cHQgPSBQZW5kaW5nU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVudCwgc2NyaXB0U3RhcnRQb3Np
dGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNs
YXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LmVsZW1lbnQoKS50ZXh0
Q29udGVudCgpLCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50LmdldCgp
KSwgc2NyaXB0U3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW0sIElubGluZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50KSkpOwotICAg
IH0gZWxzZQorICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5leGVjdXRlQ2xhc3NpY1NjcmlwdChT
Y3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQuc2NyaXB0Q29udGVudCgpLCBkb2N1bWVudFVS
TEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50LmdldCgpKSwgc2NyaXB0U3RhcnRQb3NpdGlv
biwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIElubGluZUNsYXNzaWNT
Y3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50KSkpOworICAgIH0gZWxzZSB7CisvLyAgICAgICAg
V1RGTG9nQWx3YXlzKCJyZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0Iik7CiAgICAgICAgIHJl
cXVlc3RQYXJzaW5nQmxvY2tpbmdTY3JpcHQoc2NyaXB0RWxlbWVudCk7CisgICAgfQogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmgKaW5kZXgg
ZTY1ZGM0NzgyZWE2Li4zOTlmYTcwNjY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU2NyaXB0UnVubmVyLmgKQEAgLTQ3LDIxICs0NywyNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZXRhY2goKTsKIAogICAgIC8vIFByb2Nlc3NlcyB0aGUgcGFzc2VkIGluIHNjcmlwdCBh
bmQgYW55IHBlbmRpbmcgc2NyaXB0cyBpZiBwb3NzaWJsZS4KLSAgICB2b2lkIGV4ZWN1dGUoUmVm
PFNjcmlwdEVsZW1lbnQ+JiYsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlv
bik7CisgICAgdm9pZCBleGVjdXRlKFJlZjxTY3JpcHRFbGVtZW50PiYmLCBjb25zdCBUZXh0UG9z
aXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24sIFB1bXBTZXNzaW9uKiBzZXNzaW9uRm9yWWllbGQp
OwogCiAgICAgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQm
KTsKICAgICBib29sIGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHM7IH0KICAgICB2b2lkIGV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAgICAgYm9vbCBleGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JQYXJzaW5nKCk7CisgICAgdm9pZCBleGVjdXRlWWllbGRlZFNjcmlwdCgpOwog
CiAgICAgYm9vbCBoYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpIGNvbnN0OworICAgIGJvb2wgaGFz
WWllbGRlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzWWllbGRlZFNjcmlwdDsgfQogICAg
IGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdCB7IHJldHVybiAhIW1fc2NyaXB0TmVzdGlu
Z0xldmVsOyB9CiAKIHByaXZhdGU6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CiAKKyAgICBi
b29sIGhhc1JlYWR5UGFyc2VyQmxvY2tpbmdTY3JpcHQoKSBjb25zdDsKICAgICB2b2lkIGV4ZWN1
dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0Jik7Ci0gICAgdm9p
ZCBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOworICAgIHZvaWQgZXhlY3V0ZVBhcnNp
bmdCbG9ja2luZ1NjcmlwdHMoUHVtcFNlc3Npb24qIHNlc3Npb25Gb3JZaWVsZCA9IG51bGxwdHIp
OwogCiAgICAgdm9pZCByZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0KFNjcmlwdEVsZW1lbnQm
KTsKICAgICB2b2lkIHJlcXVlc3REZWZlcnJlZFNjcmlwdChTY3JpcHRFbGVtZW50Jik7CkBAIC03
MCw3ICs3Myw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdhdGNoRm9yTG9hZChQZW5kaW5nU2Ny
aXB0Jik7CiAgICAgdm9pZCBzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmKTsKLSAg
ICBib29sIGlzUGVuZGluZ1NjcmlwdFJlYWR5KGNvbnN0IFBlbmRpbmdTY3JpcHQmKTsKIAogICAg
IFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgSFRNTFNjcmlwdFJ1bm5lckhvc3Qm
IG1faG9zdDsKQEAgLTgyLDcgKzg0LDggQEAgcHJpdmF0ZToKICAgICAvLyBleGVjdXRpb24gaXMg
Y3VycmVudGx5IHN0b3BwZWQgZHVlIHRvIHN0eWxlc2hlZXQgbG9hZHMsIG90aGVyd2lzZSB3ZSdk
CiAgICAgLy8gY2F1c2UgbmVzdGVkIHNjcmlwdCBleGVjdXRpb24gd2hlbiBwYXJzaW5nIDxzdHls
ZT4gdGFncyBzaW5jZSA8L3N0eWxlPgogICAgIC8vIHRhZ3MgY2FuIGNhdXNlIERvY3VtZW50IHRv
IGNhbGwgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMuCi0gICAgYm9vbCBtX2hh
c1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHM7CisgICAgYm9vbCBtX2hhc1NjcmlwdHNXYWl0
aW5nRm9yU3R5bGVzaGVldHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNZaWVsZGVkU2NyaXB0
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXJIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVySG9zdC5oCmluZGV4IGZkMmM0OWJk
MzI4Ni4uNWE0ZDk3YWU2YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MU2NyaXB0UnVubmVySG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXJIb3N0LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MSW5wdXRTdHJlYW07CiBjbGFzcyBQZW5kaW5nU2NyaXB0OworY2xh
c3MgUHVtcFNlc3Npb247CiAKIGNsYXNzIEhUTUxTY3JpcHRSdW5uZXJIb3N0IHsKIHB1YmxpYzoK
QEAgLTQyLDcgKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFRNTElucHV0U3RyZWFtJiBp
bnB1dFN0cmVhbSgpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNQcmVsb2FkU2Nhbm5lcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ3VycmVudElucHV0U3RyZWFtVG9Q
cmVsb2FkU2Nhbm5lckFuZFNjYW4oKSA9IDA7ICAgIAorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRD
dXJyZW50SW5wdXRTdHJlYW1Ub1ByZWxvYWRTY2FubmVyQW5kU2NhbigpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRZaWVsZChjb25zdCBQZW5kaW5nU2NyaXB0JiwgUHVtcFNlc3Npb24m
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="commit-queue"
          id="450119"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429149</attachid>
            <date>2021-05-20 02:27:18 -0700</date>
            <delta_ts>2021-05-20 02:53:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>script-time-limit-3.patch</filename>
            <type>text/plain</type>
            <size>10728</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjQ4ZDNmNjgyMjAuLmEyMTk0MzhjOTk5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQxIEBACisyMDIxLTA1LTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBIVE1MIHBhcnNlciBzaG91bGQgeWllbGQgbW9yZSBhZ2dyZXNzaXZlbHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDYwOQor
ICAgICAgICByZGFyOi8vNzM0NTgwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEdXJpbmcgcGFnZSBsb2FkaW5nIHdlIG1heSBzcGVuZCBzdWJzdGFu
dGlhbCBhbW91bnQgb2YgdGltZSBpbiBpbmRpdmlkdWFsIGludm9jYXRpb25zIG9mCisgICAgICAg
IHRoZSBIVE1MIHBhcnNlci4gVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHNpbmNlIGl0IGJsb2NrcyBy
ZW5kZXJpbmcgdXBkYXRlcyBhbmQgc28gdmlzdWFsCisgICAgICAgIHBhZ2UgbG9hZCBwcm9ncmVz
c2lvbi4KKworICAgICAgICBNb3N0IG9mIHRoaXMgdGltZSBpcyBub3QgYWN0dWFsbHkgc3BlbmQg
cGFyc2luZywgaXQgcmF0aGVyIGdvZXMgaW50byBzeW5jaHJvbm91cyBzY3JpcHQKKyAgICAgICAg
ZXhlY3V0aW9uIGFuZCBET00gd29yayB0cmlnZ2VyZWQgYnkgc2NyaXB0cy4gVGhpcyBwYXRjaCBh
ZGRzIGEgbW9yZSBlZmZlY3RpdmUgbWVjaGFuaXNtCisgICAgICAgIHdoZXJlIHdlIG1heSBkZWNp
ZGUgdG8geWllbGQgdGhlIHBhcnNlciBiZWZvcmUgZXhlY3V0aW5nIGEgc2NyaXB0LgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpw
dW1wVG9rZW5pemVyTG9vcCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVk
dWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJUaW1lTGltaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UHVtcFNlc3Npb246OlB1bXBTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQYXJzZXJTY2hlZHVsZXI6OkhUTUxQYXJzZXJTY2hlZHVsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQp
OgorCisgICAgICAgIENvbnNpZGVyIHlpZWxkaW5nIGJlZm9yZSBzY3JpcHQgZXhlY3V0aW9uIGFm
dGVyIDE2bXMgaGFzIGVsYXBzZWQgYW5kIGF0IGxlYXN0IDI1NiB0b2tlbnMgaGF2ZSBiZWVuIHBh
cnNlZC4KKyAgICAgICAgT25seSB5aWVsZCBmb3Igc3luY2hyb25vdXMgc2NyaXB0cy4KKyAgICAg
ICAgRG9uJ3QgeWllbGQgb24gdmVyeSBzaG9ydCBpbmxpbmUgc2NyaXB0cyAodGhpcyBpcyBhbiBp
bXBlcmZlY3Qgd2F5IHRvIHRyeSB0byBndWVzcyB0aGUgZXhlY3V0aW9uIGNvc3QpLgorCisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpjaGVja0ZvcllpZWxkKToKKworICAgICAg
ICBEb24ndCByZXNldCB0aGUgdG9rZW4gY291bnQsIGluc3RlYWQgdHJhY2sgdGhlIGxhc3QgeWll
bGQgY2hlY2sgcG9pbnQuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0VG9Qcm9jZXNzIGNv
bnN0KToKKwogMjAyMS0wNS0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCBzZXJpYWxpemluZyBJbWFnZURhdGEgb2JqZWN0IGNvbG9yU3BhY2UgcHJv
cGVydHkgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAppbmRleCBhNjliNDU3NTNhNmEuLjRkNGJmYjU0Yjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5oCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4ZWN1dGVQZW5k
aW5nU2NyaXB0KFBlbmRpbmdTY3JpcHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBc3luY0F0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRGVmZXJBdHRyaWJ1dGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZUF0dHJpYnV0ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTm9Nb2R1bGVBdHRyaWJ1dGUoKSBjb25zdCA9IDA7
CiAKICAgICAvLyBYTUwgcGFyc2VyIGNhbGxzIHRoZXNlCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoTG9hZEV2ZW50KCkgPSAwOwpAQCAtMTE0LDkgKzExNyw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBo
YXNEZWZlckF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNl
QXR0cmlidXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNOb01vZHVsZUF0dHJp
YnV0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9s
aWN5KCkgY29uc3QgPSAwOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNmJlZWVm
MmRkOTA5Li42MzQ5NmNiMTI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjU4LDggKzI1OCw5IEBAIGJvb2wgSFRNTERv
Y3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUgbW9kZSwgYm9v
bCBwYXJzaW5nRnJhCiB7CiAgICAgZG8gewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNXYWl0aW5n
Rm9yU2NyaXB0cygpKSkgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAmJiBt
X3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoc2Vzc2lv
bikpCisgICAgICAgICAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1
bGVyLT5zaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChtX3RyZWVCdWlsZGVyLT5zY3Jp
cHRUb1Byb2Nlc3MoKSwgc2Vzc2lvbikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAKICAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigp
OwogICAgICAgICAgICAgLy8gSWYgd2UncmUgcGF1c2VkIHdhaXRpbmcgZm9yIGEgc2NyaXB0LCB3
ZSB0cnkgdG8gZXhlY3V0ZSBzY3JpcHRzIGJlZm9yZSBjb250aW51aW5nLgogICAgICAgICAgICAg
aWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKaW5kZXggZjA3Zjkz
MzA5MjllLi4xZDE3MTQ0ODhhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCkBAIC0zMSwxOSArMzEsMjIgQEAKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogCiAvLyBkZWZhdWx0UGFyc2Vy
VGltZUxpbWl0IGlzIHRoZSBzZWNvbmRzIHRoZSBwYXJzZXIgd2lsbCBydW4gaW4gb25lIHdyaXRl
KCkgY2FsbAogLy8gYmVmb3JlIHlpZWxkaW5nLiBJbmxpbmUgPHNjcmlwdD4gZXhlY3V0aW9uIGNh
biBjYXVzZSBpdCB0byBleGNlZWQgdGhlIGxpbWl0LgotLy8gRklYTUU6IFdlIHdvdWxkIGxpa2Ug
dGhpcyB2YWx1ZSB0byBiZSAwLjIuCi1zdGF0aWMgY29uc3QgZG91YmxlIGRlZmF1bHRQYXJzZXJU
aW1lTGltaXQgPSAwLjUwMDsKK3N0YXRpYyBjb25zdCBhdXRvIGRlZmF1bHRQYXJzZXJUaW1lTGlt
aXQgPSA1MDBfbXM7CitzdGF0aWMgY29uc3QgYXV0byB0aW1lTGltaXRCZWZvcmVFeGVjdXRpbmdT
Y3JpcHQgPSAxNl9tczsKK3N0YXRpYyBjb25zdCBhdXRvIHRva2VuTGltaXRCZWZvcmVFeGVjdXRp
bmdTY3JpcHQgPSAyNTY7CitzdGF0aWMgY29uc3QgYXV0byBzbWFsbFNjcmlwdExlbmd0aExpbWl0
ID0gMTAyNDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgZG91YmxlIHBhcnNlclRp
bWVMaW1pdChQYWdlKiBwYWdlKQorc3RhdGljIFNlY29uZHMgcGFyc2VyVGltZUxpbWl0KFBhZ2Uq
IHBhZ2UpCiB7CiAgICAgLy8gV2UncmUgdXNpbmcgdGhlIHBvb3JseSBuYW1lZCBjdXN0b21IVE1M
VG9rZW5pemVyVGltZURlbGF5IHNldHRpbmcuCiAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+aGFzQ3Vz
dG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpKQotICAgICAgICByZXR1cm4gcGFnZS0+Y3VzdG9t
SFRNTFRva2VuaXplclRpbWVEZWxheSgpOworICAgICAgICByZXR1cm4gU2Vjb25kcyhwYWdlLT5j
dXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkpOwogICAgIHJldHVybiBkZWZhdWx0UGFyc2Vy
VGltZUxpbWl0OwogfQogCkBAIC02NSwxMSArNjgsNiBAQCBBY3RpdmVQYXJzZXJTZXNzaW9uOjp+
QWN0aXZlUGFyc2VyU2Vzc2lvbigpCiBQdW1wU2Vzc2lvbjo6UHVtcFNlc3Npb24odW5zaWduZWQm
IG5lc3RpbmdMZXZlbCwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTmVzdGluZ0xldmVsSW5j
cmVtZW50ZXIobmVzdGluZ0xldmVsKQogICAgICwgQWN0aXZlUGFyc2VyU2Vzc2lvbihkb2N1bWVu
dCkKLSAgICAvLyBTZXR0aW5nIHByb2Nlc3NlZFRva2VucyB0byBJTlRfTUFYIGNhdXNlcyB1cyB0
byBjaGVjayBmb3IgeWllbGRzCi0gICAgLy8gYWZ0ZXIgYW55IHRva2VuIGR1cmluZyBhbnkgcGFy
c2Ugd2hlcmUgeWllbGRpbmcgaXMgYWxsb3dlZC4KLSAgICAvLyBBdCB0aGF0IHRpbWUgd2UnbGwg
aW5pdGlhbGl6ZSBzdGFydFRpbWUuCi0gICAgLCBwcm9jZXNzZWRUb2tlbnMoSU5UX01BWCkKLSAg
ICAsIGRpZFNlZVNjcmlwdChmYWxzZSkKIHsKIH0KIApAQCAtNzcsNyArNzUsNyBAQCBQdW1wU2Vz
c2lvbjo6flB1bXBTZXNzaW9uKCkgPSBkZWZhdWx0OwogCiBIVE1MUGFyc2VyU2NoZWR1bGVyOjpI
VE1MUGFyc2VyU2NoZWR1bGVyKEhUTUxEb2N1bWVudFBhcnNlciYgcGFyc2VyKQogICAgIDogbV9w
YXJzZXIocGFyc2VyKQotICAgICwgbV9wYXJzZXJUaW1lTGltaXQoU2Vjb25kcyhwYXJzZXJUaW1l
TGltaXQobV9wYXJzZXIuZG9jdW1lbnQoKS0+cGFnZSgpKSkpCisgICAgLCBtX3BhcnNlclRpbWVM
aW1pdChwYXJzZXJUaW1lTGltaXQobV9wYXJzZXIuZG9jdW1lbnQoKS0+cGFnZSgpKSkKICAgICAs
IG1fY29udGludWVOZXh0Q2h1bmtUaW1lcigqdGhpcywgJkhUTUxQYXJzZXJTY2hlZHVsZXI6OmNv
bnRpbnVlTmV4dENodW5rVGltZXJGaXJlZCkKICAgICAsIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZl
VGltZXIoZmFsc2UpCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTEwNCwxOCArMTAyLDM2IEBAIHZv
aWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6Y29udGludWVOZXh0Q2h1bmtUaW1lckZpcmVkKCkKICAg
ICBtX3BhcnNlci5yZXN1bWVQYXJzaW5nQWZ0ZXJZaWVsZCgpOwogfQogCi1ib29sIEhUTUxQYXJz
ZXJTY2hlZHVsZXI6OnNob3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KFB1bXBTZXNzaW9u
JiBzZXNzaW9uKQorYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4
ZWN1dGluZ1NjcmlwdChjb25zdCBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50LCBQdW1wU2Vz
c2lvbiYgc2Vzc2lvbikKIHsKICAgICAvLyBJZiB3ZSd2ZSBuZXZlciBwYWludGVkIGJlZm9yZSBh
bmQgYSBsYXlvdXQgaXMgcGVuZGluZywgeWllbGQgcHJpb3IgdG8gcnVubmluZwogICAgIC8vIHNj
cmlwdHMgdG8gZ2l2ZSB0aGUgcGFnZSBhIGNoYW5jZSB0byBwYWludCBlYXJsaWVyLgogICAgIFJl
ZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX3BhcnNlci5kb2N1bWVudCgpOwotICAgIGJvb2wg
bmVlZHNGaXJzdFBhaW50ID0gZG9jdW1lbnQtPnZpZXcoKSAmJiAhZG9jdW1lbnQtPnZpZXcoKS0+
aGFzRXZlclBhaW50ZWQoKTsKKwogICAgIHNlc3Npb24uZGlkU2VlU2NyaXB0ID0gdHJ1ZTsKIAor
ICAgIGlmICghZG9jdW1lbnQtPmJvZHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCFkb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIGlmIChVTkxJS0VMWShtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRU
b2tlbnMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBuZWVkc0ZpcnN0UGFp
bnQgJiYgZG9jdW1lbnQtPmlzTGF5b3V0VGltZXJBY3RpdmUoKTsKKyAgICBTZWNvbmRzIGVsYXBz
ZWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzZXNzaW9uLnN0YXJ0VGltZTsKKworICAg
IGlmIChlbGFwc2VkVGltZSA8IHRpbWVMaW1pdEJlZm9yZUV4ZWN1dGluZ1NjcmlwdCB8fCBzZXNz
aW9uLnByb2Nlc3NlZFRva2VucyA8IHRva2VuTGltaXRCZWZvcmVFeGVjdXRpbmdTY3JpcHQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzY3JpcHRFbGVtZW50KSB7CisgICAgICAg
IGlmIChzY3JpcHRFbGVtZW50LT5oYXNBc3luY0F0dHJpYnV0ZSgpIHx8IHNjcmlwdEVsZW1lbnQt
Pmhhc0RlZmVyQXR0cmlidXRlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghc2NyaXB0RWxlbWVudC0+aGFzU291cmNlQXR0cmlidXRlKCkgJiYgc2NyaXB0RWxlbWVu
dC0+c2NyaXB0Q29udGVudCgpLmxlbmd0aCgpIDwgc21hbGxTY3JpcHRMZW5ndGhMaW1pdCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dm9pZCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzY2hlZHVsZUZvclJlc3VtZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKaW5kZXggMmNhMmYx
NjE5YzUwLi5lZWI1MWNmOWYyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKK2NsYXNz
IFNjcmlwdEVsZW1lbnQ7CiAKIGNsYXNzIEFjdGl2ZVBhcnNlclNlc3Npb24gewogcHVibGljOgpA
QCAtNTIsOSArNTMsMTAgQEAgcHVibGljOgogICAgIFB1bXBTZXNzaW9uKHVuc2lnbmVkJiBuZXN0
aW5nTGV2ZWwsIERvY3VtZW50Kik7CiAgICAgflB1bXBTZXNzaW9uKCk7CiAKLSAgICB1bnNpZ25l
ZCBwcm9jZXNzZWRUb2tlbnM7Ci0gICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWU7Ci0gICAgYm9v
bCBkaWRTZWVTY3JpcHQ7CisgICAgdW5zaWduZWQgcHJvY2Vzc2VkVG9rZW5zIHsgMCB9OworICAg
IHVuc2lnbmVkIHByb2Nlc3NlZFRva2Vuc09uTGFzdENoZWNrIHsgMCB9OworICAgIE1vbm90b25p
Y1RpbWUgc3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bm93KCkgfTsKKyAgICBib29sIGRpZFNl
ZVNjcmlwdCB7IGZhbHNlIH07CiB9OwogCiBjbGFzcyBIVE1MUGFyc2VyU2NoZWR1bGVyIHsKQEAg
LTcyLDEzICs3NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2RvY3VtZW50
SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zID4gbnVtYmVyT2ZU
b2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8IHNlc3Npb24uZGlkU2VlU2NyaXB0KSkKKyAg
ICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zID4gc2Vzc2lvbi5wcm9j
ZXNzZWRUb2tlbnNPbkxhc3RDaGVjayArIG51bWJlck9mVG9rZW5zQmVmb3JlQ2hlY2tpbmdGb3JZ
aWVsZCB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tG
b3JZaWVsZChzZXNzaW9uKTsKIAogICAgICAgICArK3Nlc3Npb24ucHJvY2Vzc2VkVG9rZW5zOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGJvb2wgc2hvdWxkWWllbGRCZWZvcmVF
eGVjdXRpbmdTY3JpcHQoUHVtcFNlc3Npb24mKTsKKyAgICBib29sIHNob3VsZFlpZWxkQmVmb3Jl
RXhlY3V0aW5nU2NyaXB0KGNvbnN0IFNjcmlwdEVsZW1lbnQqLCBQdW1wU2Vzc2lvbiYpOwogCiAg
ICAgdm9pZCBzY2hlZHVsZUZvclJlc3VtZSgpOwogICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1
bWUoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyIHx8IG1fY29u
dGludWVOZXh0Q2h1bmtUaW1lci5pc0FjdGl2ZSgpIHx8IG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJz
ZXJZaWVsZFRva2VuczsgfQpAQCAtMTA4LDE2ICsxMTAsOSBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBjaGVja0ZvcllpZWxkKFB1bXBTZXNzaW9uJiBzZXNzaW9uKQogICAgIHsKLSAgICAgICAgc2Vz
c2lvbi5wcm9jZXNzZWRUb2tlbnMgPSAxOworICAgICAgICBzZXNzaW9uLnByb2Nlc3NlZFRva2Vu
c09uTGFzdENoZWNrID0gc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7CiAgICAgICAgIHNlc3Npb24u
ZGlkU2VlU2NyaXB0ID0gZmFsc2U7CiAKLSAgICAgICAgLy8gTW9ub3RvbmljVGltZTo6bm93KCkg
Y2FuIGJlIGV4cGVuc2l2ZS4gQnkgZGVsYXlpbmcsIHdlIGF2b2lkZWQgY2FsbGluZwotICAgICAg
ICAvLyBNb25vdG9uaWNUaW1lOjpub3coKSB3aGVuIGNvbnN0cnVjdGluZyBub24teWllbGRpbmcg
UHVtcFNlc3Npb25zLgotICAgICAgICBpZiAoIXNlc3Npb24uc3RhcnRUaW1lKSB7Ci0gICAgICAg
ICAgICBzZXNzaW9uLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KICAgICAgICAgU2Vjb25kcyBlbGFwc2VkVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc2Vzc2lvbi5zdGFydFRpbWU7CiAgICAgICAgIHJl
dHVybiBlbGFwc2VkVGltZSA+IG1fcGFyc2VyVGltZUxpbWl0OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggMjAzNWUyZGIwMjAxLi5l
OTY2ZDdmNGEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE11c3QgYmUgY2FsbGVk
IHRvIHRha2UgdGhlIHBhcnNlci1ibG9ja2luZyBzY3JpcHQgYmVmb3JlIGNhbGxpbmcgdGhlIHBh
cnNlciBhZ2Fpbi4KICAgICBSZWZQdHI8U2NyaXB0RWxlbWVudD4gdGFrZVNjcmlwdFRvUHJvY2Vz
cyhUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pOworICAgIGNvbnN0IFNjcmlwdEVs
ZW1lbnQqIHNjcmlwdFRvUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VG9Qcm9jZXNz
LmdldCgpOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE+IHRha2VDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YSgpIHsgcmV0dXJuIFdURk1v
dmUobV9jdXN0b21FbGVtZW50VG9Db25zdHJ1Y3QpOyB9CiAgICAgdm9pZCBkaWRDcmVhdGVDdXN0
b21PckZhbGxiYWNrRWxlbWVudChSZWY8RWxlbWVudD4mJiwgQ3VzdG9tRWxlbWVudENvbnN0cnVj
dGlvbkRhdGEmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429150</attachid>
            <date>2021-05-20 02:53:52 -0700</date>
            <delta_ts>2021-05-20 12:00:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>script-time-limit-4.patch</filename>
            <type>text/plain</type>
            <size>10700</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjQ4ZDNmNjgyMjAuLmEyMTk0MzhjOTk5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQxIEBACisyMDIxLTA1LTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBIVE1MIHBhcnNlciBzaG91bGQgeWllbGQgbW9yZSBhZ2dyZXNzaXZlbHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDYwOQor
ICAgICAgICByZGFyOi8vNzM0NTgwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEdXJpbmcgcGFnZSBsb2FkaW5nIHdlIG1heSBzcGVuZCBzdWJzdGFu
dGlhbCBhbW91bnQgb2YgdGltZSBpbiBpbmRpdmlkdWFsIGludm9jYXRpb25zIG9mCisgICAgICAg
IHRoZSBIVE1MIHBhcnNlci4gVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHNpbmNlIGl0IGJsb2NrcyBy
ZW5kZXJpbmcgdXBkYXRlcyBhbmQgc28gdmlzdWFsCisgICAgICAgIHBhZ2UgbG9hZCBwcm9ncmVz
c2lvbi4KKworICAgICAgICBNb3N0IG9mIHRoaXMgdGltZSBpcyBub3QgYWN0dWFsbHkgc3BlbmQg
cGFyc2luZywgaXQgcmF0aGVyIGdvZXMgaW50byBzeW5jaHJvbm91cyBzY3JpcHQKKyAgICAgICAg
ZXhlY3V0aW9uIGFuZCBET00gd29yayB0cmlnZ2VyZWQgYnkgc2NyaXB0cy4gVGhpcyBwYXRjaCBh
ZGRzIGEgbW9yZSBlZmZlY3RpdmUgbWVjaGFuaXNtCisgICAgICAgIHdoZXJlIHdlIG1heSBkZWNp
ZGUgdG8geWllbGQgdGhlIHBhcnNlciBiZWZvcmUgZXhlY3V0aW5nIGEgc2NyaXB0LgorCisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpw
dW1wVG9rZW5pemVyTG9vcCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVk
dWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJUaW1lTGltaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UHVtcFNlc3Npb246OlB1bXBTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQYXJzZXJTY2hlZHVsZXI6OkhUTUxQYXJzZXJTY2hlZHVsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQp
OgorCisgICAgICAgIENvbnNpZGVyIHlpZWxkaW5nIGJlZm9yZSBzY3JpcHQgZXhlY3V0aW9uIGFm
dGVyIDE2bXMgaGFzIGVsYXBzZWQgYW5kIGF0IGxlYXN0IDI1NiB0b2tlbnMgaGF2ZSBiZWVuIHBh
cnNlZC4KKyAgICAgICAgT25seSB5aWVsZCBmb3Igc3luY2hyb25vdXMgc2NyaXB0cy4KKyAgICAg
ICAgRG9uJ3QgeWllbGQgb24gdmVyeSBzaG9ydCBpbmxpbmUgc2NyaXB0cyAodGhpcyBpcyBhbiBp
bXBlcmZlY3Qgd2F5IHRvIHRyeSB0byBndWVzcyB0aGUgZXhlY3V0aW9uIGNvc3QpLgorCisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpjaGVja0ZvcllpZWxkKToKKworICAgICAg
ICBEb24ndCByZXNldCB0aGUgdG9rZW4gY291bnQsIGluc3RlYWQgdHJhY2sgdGhlIGxhc3QgeWll
bGQgY2hlY2sgcG9pbnQuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0VG9Qcm9jZXNzIGNv
bnN0KToKKwogMjAyMS0wNS0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCBzZXJpYWxpemluZyBJbWFnZURhdGEgb2JqZWN0IGNvbG9yU3BhY2UgcHJv
cGVydHkgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAppbmRleCBhNjliNDU3NTNhNmEuLjRkNGJmYjU0Yjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5oCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4ZWN1dGVQZW5k
aW5nU2NyaXB0KFBlbmRpbmdTY3JpcHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBc3luY0F0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRGVmZXJBdHRyaWJ1dGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZUF0dHJpYnV0ZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTm9Nb2R1bGVBdHRyaWJ1dGUoKSBjb25zdCA9IDA7
CiAKICAgICAvLyBYTUwgcGFyc2VyIGNhbGxzIHRoZXNlCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoTG9hZEV2ZW50KCkgPSAwOwpAQCAtMTE0LDkgKzExNyw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBo
YXNEZWZlckF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNl
QXR0cmlidXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNOb01vZHVsZUF0dHJp
YnV0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9s
aWN5KCkgY29uc3QgPSAwOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNmJlZWVm
MmRkOTA5Li42MzQ5NmNiMTI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjU4LDggKzI1OCw5IEBAIGJvb2wgSFRNTERv
Y3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUgbW9kZSwgYm9v
bCBwYXJzaW5nRnJhCiB7CiAgICAgZG8gewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNXYWl0aW5n
Rm9yU2NyaXB0cygpKSkgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAmJiBt
X3BhcnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoc2Vzc2lv
bikpCisgICAgICAgICAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1
bGVyLT5zaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChtX3RyZWVCdWlsZGVyLT5zY3Jp
cHRUb1Byb2Nlc3MoKSwgc2Vzc2lvbikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAKICAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigp
OwogICAgICAgICAgICAgLy8gSWYgd2UncmUgcGF1c2VkIHdhaXRpbmcgZm9yIGEgc2NyaXB0LCB3
ZSB0cnkgdG8gZXhlY3V0ZSBzY3JpcHRzIGJlZm9yZSBjb250aW51aW5nLgogICAgICAgICAgICAg
aWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKaW5kZXggZjA3Zjkz
MzA5MjllLi45OWY3MTFhNDA3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCkBAIC0zMSwxOSArMzEsMTkgQEAKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogCiAvLyBkZWZhdWx0UGFyc2Vy
VGltZUxpbWl0IGlzIHRoZSBzZWNvbmRzIHRoZSBwYXJzZXIgd2lsbCBydW4gaW4gb25lIHdyaXRl
KCkgY2FsbAogLy8gYmVmb3JlIHlpZWxkaW5nLiBJbmxpbmUgPHNjcmlwdD4gZXhlY3V0aW9uIGNh
biBjYXVzZSBpdCB0byBleGNlZWQgdGhlIGxpbWl0LgotLy8gRklYTUU6IFdlIHdvdWxkIGxpa2Ug
dGhpcyB2YWx1ZSB0byBiZSAwLjIuCi1zdGF0aWMgY29uc3QgZG91YmxlIGRlZmF1bHRQYXJzZXJU
aW1lTGltaXQgPSAwLjUwMDsKK3N0YXRpYyBjb25zdCBhdXRvIGRlZmF1bHRQYXJzZXJUaW1lTGlt
aXQgPSA1MDBfbXM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGRvdWJsZSBwYXJz
ZXJUaW1lTGltaXQoUGFnZSogcGFnZSkKK3N0YXRpYyBTZWNvbmRzIHBhcnNlclRpbWVMaW1pdChQ
YWdlKiBwYWdlKQogewogICAgIC8vIFdlJ3JlIHVzaW5nIHRoZSBwb29ybHkgbmFtZWQgY3VzdG9t
SFRNTFRva2VuaXplclRpbWVEZWxheSBzZXR0aW5nLgogICAgIGlmIChwYWdlICYmIHBhZ2UtPmhh
c0N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSkKLSAgICAgICAgcmV0dXJuIHBhZ2UtPmN1
c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKTsKKyAgICAgICAgcmV0dXJuIFNlY29uZHMocGFn
ZS0+Y3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpKTsKICAgICByZXR1cm4gZGVmYXVsdFBh
cnNlclRpbWVMaW1pdDsKIH0KIApAQCAtNjUsMTEgKzY1LDYgQEAgQWN0aXZlUGFyc2VyU2Vzc2lv
bjo6fkFjdGl2ZVBhcnNlclNlc3Npb24oKQogUHVtcFNlc3Npb246OlB1bXBTZXNzaW9uKHVuc2ln
bmVkJiBuZXN0aW5nTGV2ZWwsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IE5lc3RpbmdMZXZl
bEluY3JlbWVudGVyKG5lc3RpbmdMZXZlbCkKICAgICAsIEFjdGl2ZVBhcnNlclNlc3Npb24oZG9j
dW1lbnQpCi0gICAgLy8gU2V0dGluZyBwcm9jZXNzZWRUb2tlbnMgdG8gSU5UX01BWCBjYXVzZXMg
dXMgdG8gY2hlY2sgZm9yIHlpZWxkcwotICAgIC8vIGFmdGVyIGFueSB0b2tlbiBkdXJpbmcgYW55
IHBhcnNlIHdoZXJlIHlpZWxkaW5nIGlzIGFsbG93ZWQuCi0gICAgLy8gQXQgdGhhdCB0aW1lIHdl
J2xsIGluaXRpYWxpemUgc3RhcnRUaW1lLgotICAgICwgcHJvY2Vzc2VkVG9rZW5zKElOVF9NQVgp
Ci0gICAgLCBkaWRTZWVTY3JpcHQoZmFsc2UpCiB7CiB9CiAKQEAgLTc3LDcgKzcyLDcgQEAgUHVt
cFNlc3Npb246On5QdW1wU2Vzc2lvbigpID0gZGVmYXVsdDsKIAogSFRNTFBhcnNlclNjaGVkdWxl
cjo6SFRNTFBhcnNlclNjaGVkdWxlcihIVE1MRG9jdW1lbnRQYXJzZXImIHBhcnNlcikKICAgICA6
IG1fcGFyc2VyKHBhcnNlcikKLSAgICAsIG1fcGFyc2VyVGltZUxpbWl0KFNlY29uZHMocGFyc2Vy
VGltZUxpbWl0KG1fcGFyc2VyLmRvY3VtZW50KCktPnBhZ2UoKSkpKQorICAgICwgbV9wYXJzZXJU
aW1lTGltaXQocGFyc2VyVGltZUxpbWl0KG1fcGFyc2VyLmRvY3VtZW50KCktPnBhZ2UoKSkpCiAg
ICAgLCBtX2NvbnRpbnVlTmV4dENodW5rVGltZXIoKnRoaXMsICZIVE1MUGFyc2VyU2NoZWR1bGVy
Ojpjb250aW51ZU5leHRDaHVua1RpbWVyRmlyZWQpCiAgICAgLCBtX2lzU3VzcGVuZGVkV2l0aEFj
dGl2ZVRpbWVyKGZhbHNlKQogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0xMDQsMTggKzk5LDQyIEBA
IHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6Y29udGludWVOZXh0Q2h1bmtUaW1lckZpcmVkKCkK
ICAgICBtX3BhcnNlci5yZXN1bWVQYXJzaW5nQWZ0ZXJZaWVsZCgpOwogfQogCi1ib29sIEhUTUxQ
YXJzZXJTY2hlZHVsZXI6OnNob3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KFB1bXBTZXNz
aW9uJiBzZXNzaW9uKQorYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9y
ZUV4ZWN1dGluZ1NjcmlwdChjb25zdCBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50LCBQdW1w
U2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICAvLyBJZiB3ZSd2ZSBuZXZlciBwYWludGVkIGJlZm9y
ZSBhbmQgYSBsYXlvdXQgaXMgcGVuZGluZywgeWllbGQgcHJpb3IgdG8gcnVubmluZwogICAgIC8v
IHNjcmlwdHMgdG8gZ2l2ZSB0aGUgcGFnZSBhIGNoYW5jZSB0byBwYWludCBlYXJsaWVyLgogICAg
IFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX3BhcnNlci5kb2N1bWVudCgpOwotICAgIGJv
b2wgbmVlZHNGaXJzdFBhaW50ID0gZG9jdW1lbnQtPnZpZXcoKSAmJiAhZG9jdW1lbnQtPnZpZXco
KS0+aGFzRXZlclBhaW50ZWQoKTsKKwogICAgIHNlc3Npb24uZGlkU2VlU2NyaXB0ID0gdHJ1ZTsK
IAorICAgIGlmICghZG9jdW1lbnQtPmJvZHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgIGlmIChVTkxJS0VMWShtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWll
bGRUb2tlbnMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBuZWVkc0ZpcnN0
UGFpbnQgJiYgZG9jdW1lbnQtPmlzTGF5b3V0VGltZXJBY3RpdmUoKTsKKyAgICBhdXRvIGVsYXBz
ZWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzZXNzaW9uLnN0YXJ0VGltZTsKKworICAg
IHN0YXRpYyBjb25zdCBhdXRvIGVsYXBzZWRUaW1lTGltaXQgPSAxNl9tczsKKyAgICBzdGF0aWMg
Y29uc3QgYXV0byB0b2tlbkxpbWl0ID0gMjU2OworICAgIHN0YXRpYyBjb25zdCBhdXRvIGlubGlu
ZVNjcmlwdExlbmd0aExpbWl0ID0gMTAyNDsKKworICAgIGlmIChlbGFwc2VkVGltZSA8IGVsYXBz
ZWRUaW1lTGltaXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2Vzc2lvbi5wcm9j
ZXNzZWRUb2tlbnMgPCB0b2tlbkxpbWl0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoc2NyaXB0RWxlbWVudCkgeworICAgICAgICBpZiAoc2NyaXB0RWxlbWVudC0+aGFzQXN5bmNB
dHRyaWJ1dGUoKSB8fCBzY3JpcHRFbGVtZW50LT5oYXNEZWZlckF0dHJpYnV0ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXNjcmlwdEVsZW1lbnQtPmhhc1NvdXJj
ZUF0dHJpYnV0ZSgpICYmIHNjcmlwdEVsZW1lbnQtPnNjcmlwdENvbnRlbnQoKS5sZW5ndGgoKSA8
IGlubGluZVNjcmlwdExlbmd0aExpbWl0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEhUTUxQYXJzZXJTY2hlZHVsZXI6OnNj
aGVkdWxlRm9yUmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJTY2hlZHVsZXIuaAppbmRleCAyY2EyZjE2MTljNTAuLmVlYjUxY2Y5ZjJkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaApAQCAt
MzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgSFRNTERvY3VtZW50UGFyc2VyOworY2xhc3MgU2NyaXB0RWxlbWVudDsKIAogY2xhc3MgQWN0
aXZlUGFyc2VyU2Vzc2lvbiB7CiBwdWJsaWM6CkBAIC01Miw5ICs1MywxMCBAQCBwdWJsaWM6CiAg
ICAgUHVtcFNlc3Npb24odW5zaWduZWQmIG5lc3RpbmdMZXZlbCwgRG9jdW1lbnQqKTsKICAgICB+
UHVtcFNlc3Npb24oKTsKIAotICAgIHVuc2lnbmVkIHByb2Nlc3NlZFRva2VuczsKLSAgICBNb25v
dG9uaWNUaW1lIHN0YXJ0VGltZTsKLSAgICBib29sIGRpZFNlZVNjcmlwdDsKKyAgICB1bnNpZ25l
ZCBwcm9jZXNzZWRUb2tlbnMgeyAwIH07CisgICAgdW5zaWduZWQgcHJvY2Vzc2VkVG9rZW5zT25M
YXN0Q2hlY2sgeyAwIH07CisgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgeyBNb25vdG9uaWNU
aW1lOjpub3coKSB9OworICAgIGJvb2wgZGlkU2VlU2NyaXB0IHsgZmFsc2UgfTsKIH07CiAKIGNs
YXNzIEhUTUxQYXJzZXJTY2hlZHVsZXIgewpAQCAtNzIsMTMgKzc0LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKFVOTElLRUxZKG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2Vucykp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkoc2Vzc2lv
bi5wcm9jZXNzZWRUb2tlbnMgPiBudW1iZXJPZlRva2Vuc0JlZm9yZUNoZWNraW5nRm9yWWllbGQg
fHwgc2Vzc2lvbi5kaWRTZWVTY3JpcHQpKQorICAgICAgICBpZiAoVU5MSUtFTFkoc2Vzc2lvbi5w
cm9jZXNzZWRUb2tlbnMgPiBzZXNzaW9uLnByb2Nlc3NlZFRva2Vuc09uTGFzdENoZWNrICsgbnVt
YmVyT2ZUb2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8IHNlc3Npb24uZGlkU2VlU2NyaXB0
KSkKICAgICAgICAgICAgIHJldHVybiBjaGVja0ZvcllpZWxkKHNlc3Npb24pOwogCiAgICAgICAg
ICsrc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYp
OworICAgIGJvb2wgc2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoY29uc3QgU2NyaXB0
RWxlbWVudCosIFB1bXBTZXNzaW9uJik7CiAKICAgICB2b2lkIHNjaGVkdWxlRm9yUmVzdW1lKCk7
CiAgICAgYm9vbCBpc1NjaGVkdWxlZEZvclJlc3VtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNw
ZW5kZWRXaXRoQWN0aXZlVGltZXIgfHwgbV9jb250aW51ZU5leHRDaHVua1RpbWVyLmlzQWN0aXZl
KCkgfHwgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zOyB9CkBAIC0xMDgsMTYg
KzExMCw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNoZWNrRm9yWWllbGQoUHVtcFNlc3Npb24m
IHNlc3Npb24pCiAgICAgewotICAgICAgICBzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA9IDE7Cisg
ICAgICAgIHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zT25MYXN0Q2hlY2sgPSBzZXNzaW9uLnByb2Nl
c3NlZFRva2VuczsKICAgICAgICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSBmYWxzZTsKIAotICAg
ICAgICAvLyBNb25vdG9uaWNUaW1lOjpub3coKSBjYW4gYmUgZXhwZW5zaXZlLiBCeSBkZWxheWlu
Zywgd2UgYXZvaWRlZCBjYWxsaW5nCi0gICAgICAgIC8vIE1vbm90b25pY1RpbWU6Om5vdygpIHdo
ZW4gY29uc3RydWN0aW5nIG5vbi15aWVsZGluZyBQdW1wU2Vzc2lvbnMuCi0gICAgICAgIGlmICgh
c2Vzc2lvbi5zdGFydFRpbWUpIHsKLSAgICAgICAgICAgIHNlc3Npb24uc3RhcnRUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQogICAgICAgICBTZWNvbmRzIGVsYXBzZWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBz
ZXNzaW9uLnN0YXJ0VGltZTsKICAgICAgICAgcmV0dXJuIGVsYXBzZWRUaW1lID4gbV9wYXJzZXJU
aW1lTGltaXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuaAppbmRleCAyMDM1ZTJkYjAyMDEuLmU5NjZkN2Y0YTI3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgdG8gdGFrZSB0aGUgcGFyc2VyLWJsb2NraW5n
IHNjcmlwdCBiZWZvcmUgY2FsbGluZyB0aGUgcGFyc2VyIGFnYWluLgogICAgIFJlZlB0cjxTY3Jp
cHRFbGVtZW50PiB0YWtlU2NyaXB0VG9Qcm9jZXNzKFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQ
b3NpdGlvbik7CisgICAgY29uc3QgU2NyaXB0RWxlbWVudCogc2NyaXB0VG9Qcm9jZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JpcHRUb1Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4gdGFrZUN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rpb25EYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2N1c3RvbUVsZW1lbnRUb0NvbnN0cnVj
dCk7IH0KICAgICB2b2lkIGRpZENyZWF0ZUN1c3RvbU9yRmFsbGJhY2tFbGVtZW50KFJlZjxFbGVt
ZW50PiYmLCBDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YSYpOwo=
</data>
<flag name="review"
          id="450248"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429201</attachid>
            <date>2021-05-20 12:00:41 -0700</date>
            <delta_ts>2021-05-20 12:40:13 -0700</delta_ts>
            <desc>patch</desc>
            <filename>script-time-limit-5.patch</filename>
            <type>text/plain</type>
            <size>10982</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjQ4ZDNmNjgyMjAuLmFkNWRmMGM2YmQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQxIEBACisyMDIxLTA1LTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBIVE1MIHBhcnNlciBzaG91bGQgeWllbGQgbW9yZSBhZ2dyZXNzaXZlbHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDYwOQor
ICAgICAgICByZGFyOi8vNzM0NTgwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBEdXJpbmcgcGFnZSBsb2FkaW5nIHdlIG1heSBzcGVuZCBzdWJzdGFudGlh
bCBhbW91bnQgb2YgdGltZSBpbiBpbmRpdmlkdWFsIGludm9jYXRpb25zIG9mCisgICAgICAgIHRo
ZSBIVE1MIHBhcnNlci4gVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHNpbmNlIGl0IGJsb2NrcyByZW5k
ZXJpbmcgdXBkYXRlcyBhbmQgc28gdmlzdWFsCisgICAgICAgIHBhZ2UgbG9hZCBwcm9ncmVzc2lv
bi4KKworICAgICAgICBNb3N0IG9mIHRoaXMgdGltZSBpcyBub3QgYWN0dWFsbHkgc3BlbmQgcGFy
c2luZywgaXQgcmF0aGVyIGdvZXMgaW50byBzeW5jaHJvbm91cyBzY3JpcHQKKyAgICAgICAgZXhl
Y3V0aW9uIGFuZCBET00gd29yayB0cmlnZ2VyZWQgYnkgc2NyaXB0cy4gVGhpcyBwYXRjaCBhZGRz
IGEgbW9yZSBlZmZlY3RpdmUgbWVjaGFuaXNtCisgICAgICAgIHdoZXJlIHdlIG1heSBkZWNpZGUg
dG8geWllbGQgdGhlIHBhcnNlciBiZWZvcmUgZXhlY3V0aW5nIGEgc2NyaXB0LgorCisgICAgICAg
ICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1w
VG9rZW5pemVyTG9vcCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJUaW1lTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UHVtcFNlc3Npb246OlB1bXBTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
YXJzZXJTY2hlZHVsZXI6OkhUTUxQYXJzZXJTY2hlZHVsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQpOgor
CisgICAgICAgIENvbnNpZGVyIHlpZWxkaW5nIGJlZm9yZSBzY3JpcHQgZXhlY3V0aW9uIGFmdGVy
IDE2bXMgaGFzIGVsYXBzZWQgYW5kIGF0IGxlYXN0IDI1NiB0b2tlbnMgaGF2ZSBiZWVuIHBhcnNl
ZC4KKyAgICAgICAgT25seSB5aWVsZCBmb3Igc3luY2hyb25vdXMgc2NyaXB0cy4KKyAgICAgICAg
RG9uJ3QgeWllbGQgb24gdmVyeSBzaG9ydCBpbmxpbmUgc2NyaXB0cyAodGhpcyBpcyBhbiBpbXBl
cmZlY3Qgd2F5IHRvIHRyeSB0byBndWVzcyB0aGUgZXhlY3V0aW9uIGNvc3QpLgorCisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpjaGVja0ZvcllpZWxkKToKKworICAgICAgICBE
b24ndCByZXNldCB0aGUgdG9rZW4gY291bnQsIGluc3RlYWQgdHJhY2sgdGhlIGxhc3QgeWllbGQg
Y2hlY2sgcG9pbnQuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0VG9Qcm9jZXNzIGNvbnN0
KToKKwogMjAyMS0wNS0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgU3VwcG9ydCBzZXJpYWxpemluZyBJbWFnZURhdGEgb2JqZWN0IGNvbG9yU3BhY2UgcHJvcGVy
dHkgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApp
bmRleCBhNjliNDU3NTNhNmEuLjRkNGJmYjU0Yjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5oCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4ZWN1dGVQZW5kaW5n
U2NyaXB0KFBlbmRpbmdTY3JpcHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBc3luY0F0dHJp
YnV0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRGVmZXJBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZUF0dHJpYnV0ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTm9Nb2R1bGVBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CiAK
ICAgICAvLyBYTUwgcGFyc2VyIGNhbGxzIHRoZXNlCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
TG9hZEV2ZW50KCkgPSAwOwpAQCAtMTE0LDkgKzExNyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNE
ZWZlckF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlQXR0
cmlidXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNOb01vZHVsZUF0dHJpYnV0
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5
KCkgY29uc3QgPSAwOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNmJlZWVmMmRk
OTA5Li42MzQ5NmNiMTI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjU4LDggKzI1OCw5IEBAIGJvb2wgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5jaHJvbm91c01vZGUgbW9kZSwgYm9vbCBw
YXJzaW5nRnJhCiB7CiAgICAgZG8gewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNXYWl0aW5nRm9y
U2NyaXB0cygpKSkgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAmJiBtX3Bh
cnNlclNjaGVkdWxlci0+c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoc2Vzc2lvbikp
CisgICAgICAgICAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1bGVy
LT5zaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChtX3RyZWVCdWlsZGVyLT5zY3JpcHRU
b1Byb2Nlc3MoKSwgc2Vzc2lvbikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAKICAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigpOwog
ICAgICAgICAgICAgLy8gSWYgd2UncmUgcGF1c2VkIHdhaXRpbmcgZm9yIGEgc2NyaXB0LCB3ZSB0
cnkgdG8gZXhlY3V0ZSBzY3JpcHRzIGJlZm9yZSBjb250aW51aW5nLgogICAgICAgICAgICAgaWYg
KGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKaW5kZXggZjA3ZjkzMzA5
MjllLi41NjY2MDg2MzlhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCkBAIC0zMSwxOSArMzEsMTggQEAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCi0KLS8vIGRlZmF1bHRQYXJzZXJUaW1lTGltaXQgaXMgdGhlIHNlY29uZHMgdGhlIHBh
cnNlciB3aWxsIHJ1biBpbiBvbmUgd3JpdGUoKSBjYWxsCi0vLyBiZWZvcmUgeWllbGRpbmcuIElu
bGluZSA8c2NyaXB0PiBleGVjdXRpb24gY2FuIGNhdXNlIGl0IHRvIGV4Y2VlZCB0aGUgbGltaXQu
Ci0vLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0aGlzIHZhbHVlIHRvIGJlIDAuMi4KLXN0YXRpYyBj
b25zdCBkb3VibGUgZGVmYXVsdFBhcnNlclRpbWVMaW1pdCA9IDAuNTAwOworI2luY2x1ZGUgIlNj
cmlwdEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgZG91YmxlIHBh
cnNlclRpbWVMaW1pdChQYWdlKiBwYWdlKQorc3RhdGljIFNlY29uZHMgcGFyc2VyVGltZUxpbWl0
KFBhZ2UqIHBhZ2UpCiB7CisgICAgLy8gQWx3YXlzIHlpZWxkIGFmdGVyIGV4Y2VlZGluZyB0aGlz
LgorICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRQYXJzZXJUaW1lTGltaXQgPSA1MDBfbXM7CisK
ICAgICAvLyBXZSdyZSB1c2luZyB0aGUgcG9vcmx5IG5hbWVkIGN1c3RvbUhUTUxUb2tlbml6ZXJU
aW1lRGVsYXkgc2V0dGluZy4KICAgICBpZiAocGFnZSAmJiBwYWdlLT5oYXNDdXN0b21IVE1MVG9r
ZW5pemVyVGltZURlbGF5KCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5jdXN0b21IVE1MVG9rZW5p
emVyVGltZURlbGF5KCk7CisgICAgICAgIHJldHVybiBTZWNvbmRzKHBhZ2UtPmN1c3RvbUhUTUxU
b2tlbml6ZXJUaW1lRGVsYXkoKSk7CiAgICAgcmV0dXJuIGRlZmF1bHRQYXJzZXJUaW1lTGltaXQ7
CiB9CiAKQEAgLTY1LDExICs2NCw2IEBAIEFjdGl2ZVBhcnNlclNlc3Npb246On5BY3RpdmVQYXJz
ZXJTZXNzaW9uKCkKIFB1bXBTZXNzaW9uOjpQdW1wU2Vzc2lvbih1bnNpZ25lZCYgbmVzdGluZ0xl
dmVsLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihu
ZXN0aW5nTGV2ZWwpCiAgICAgLCBBY3RpdmVQYXJzZXJTZXNzaW9uKGRvY3VtZW50KQotICAgIC8v
IFNldHRpbmcgcHJvY2Vzc2VkVG9rZW5zIHRvIElOVF9NQVggY2F1c2VzIHVzIHRvIGNoZWNrIGZv
ciB5aWVsZHMKLSAgICAvLyBhZnRlciBhbnkgdG9rZW4gZHVyaW5nIGFueSBwYXJzZSB3aGVyZSB5
aWVsZGluZyBpcyBhbGxvd2VkLgotICAgIC8vIEF0IHRoYXQgdGltZSB3ZSdsbCBpbml0aWFsaXpl
IHN0YXJ0VGltZS4KLSAgICAsIHByb2Nlc3NlZFRva2VucyhJTlRfTUFYKQotICAgICwgZGlkU2Vl
U2NyaXB0KGZhbHNlKQogewogfQogCkBAIC03Nyw3ICs3MSw3IEBAIFB1bXBTZXNzaW9uOjp+UHVt
cFNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKIEhUTUxQYXJzZXJTY2hlZHVsZXI6OkhUTUxQYXJzZXJT
Y2hlZHVsZXIoSFRNTERvY3VtZW50UGFyc2VyJiBwYXJzZXIpCiAgICAgOiBtX3BhcnNlcihwYXJz
ZXIpCi0gICAgLCBtX3BhcnNlclRpbWVMaW1pdChTZWNvbmRzKHBhcnNlclRpbWVMaW1pdChtX3Bh
cnNlci5kb2N1bWVudCgpLT5wYWdlKCkpKSkKKyAgICAsIG1fcGFyc2VyVGltZUxpbWl0KHBhcnNl
clRpbWVMaW1pdChtX3BhcnNlci5kb2N1bWVudCgpLT5wYWdlKCkpKQogICAgICwgbV9jb250aW51
ZU5leHRDaHVua1RpbWVyKCp0aGlzLCAmSFRNTFBhcnNlclNjaGVkdWxlcjo6Y29udGludWVOZXh0
Q2h1bmtUaW1lckZpcmVkKQogICAgICwgbV9pc1N1c3BlbmRlZFdpdGhBY3RpdmVUaW1lcihmYWxz
ZSkKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMTA0LDE4ICs5OCw0NSBAQCB2b2lkIEhUTUxQYXJz
ZXJTY2hlZHVsZXI6OmNvbnRpbnVlTmV4dENodW5rVGltZXJGaXJlZCgpCiAgICAgbV9wYXJzZXIu
cmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVy
OjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikK
K2Jvb2wgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3Jp
cHQoY29uc3QgU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCwgUHVtcFNlc3Npb24mIHNlc3Np
b24pCiB7CiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgcGFpbnRlZCBiZWZvcmUgYW5kIGEgbGF5b3V0
IGlzIHBlbmRpbmcsIHlpZWxkIHByaW9yIHRvIHJ1bm5pbmcKICAgICAvLyBzY3JpcHRzIHRvIGdp
dmUgdGhlIHBhZ2UgYSBjaGFuY2UgdG8gcGFpbnQgZWFybGllci4KICAgICBSZWZQdHI8RG9jdW1l
bnQ+IGRvY3VtZW50ID0gbV9wYXJzZXIuZG9jdW1lbnQoKTsKLSAgICBib29sIG5lZWRzRmlyc3RQ
YWludCA9IGRvY3VtZW50LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWlu
dGVkKCk7CisKICAgICBzZXNzaW9uLmRpZFNlZVNjcmlwdCA9IHRydWU7CiAKKyAgICBpZiAoIWRv
Y3VtZW50LT5ib2R5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZG9jdW1l
bnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBpZiAoVU5MSUtFTFkobV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gbmVlZHNGaXJzdFBhaW50ICYmIGRvY3Vt
ZW50LT5pc0xheW91dFRpbWVyQWN0aXZlKCk7CisgICAgYXV0byBlbGFwc2VkVGltZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpIC0gc2Vzc2lvbi5zdGFydFRpbWU7CisKKyAgICBjb25zdGV4cHIgYXV0
byBlbGFwc2VkVGltZUxpbWl0ID0gMTZfbXM7CisgICAgLy8gUmVxdWlyZSBhdCBsZWFzdCBzb21l
IG5ldyBwYXJzZWQgY29udGVudCBiZWZvcmUgeWllbGRpbmcuCisgICAgY29uc3RleHByIGF1dG8g
dG9rZW5MaW1pdCA9IDI1NjsKKyAgICAvLyBEb24ndCB5aWVsZCBvbiB2ZXJ5IHNob3J0IGlubGlu
ZSBzY3JpcHRzLiBUaGlzIGlzIGFuIGltcGVyZmVjdCB3YXkgdG8gdHJ5IHRvIGd1ZXNzIHRoZSBl
eGVjdXRpb24gY29zdC4KKyAgICBjb25zdGV4cHIgYXV0byBpbmxpbmVTY3JpcHRMZW5ndGhMaW1p
dCA9IDEwMjQ7CisKKyAgICBpZiAoZWxhcHNlZFRpbWUgPCBlbGFwc2VkVGltZUxpbWl0KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zIDwgdG9r
ZW5MaW1pdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNjcmlwdEVsZW1lbnQp
IHsKKyAgICAgICAgLy8gQXN5bmMgYW5kIGRlZmVycmVkIHNjcmlwdHMgYXJlIG5vdCBleGVjdXRl
ZCBieSB0aGUgcGFyc2VyLgorICAgICAgICBpZiAoc2NyaXB0RWxlbWVudC0+aGFzQXN5bmNBdHRy
aWJ1dGUoKSB8fCBzY3JpcHRFbGVtZW50LT5oYXNEZWZlckF0dHJpYnV0ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXNjcmlwdEVsZW1lbnQtPmhhc1NvdXJjZUF0
dHJpYnV0ZSgpICYmIHNjcmlwdEVsZW1lbnQtPnNjcmlwdENvbnRlbnQoKS5sZW5ndGgoKSA8IGlu
bGluZVNjcmlwdExlbmd0aExpbWl0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEhUTUxQYXJzZXJTY2hlZHVsZXI6OnNjaGVk
dWxlRm9yUmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJTY2hlZHVsZXIuaAppbmRleCAyY2EyZjE2MTljNTAuLmVlYjUxY2Y5ZjJkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaApAQCAtMzcs
NiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
SFRNTERvY3VtZW50UGFyc2VyOworY2xhc3MgU2NyaXB0RWxlbWVudDsKIAogY2xhc3MgQWN0aXZl
UGFyc2VyU2Vzc2lvbiB7CiBwdWJsaWM6CkBAIC01Miw5ICs1MywxMCBAQCBwdWJsaWM6CiAgICAg
UHVtcFNlc3Npb24odW5zaWduZWQmIG5lc3RpbmdMZXZlbCwgRG9jdW1lbnQqKTsKICAgICB+UHVt
cFNlc3Npb24oKTsKIAotICAgIHVuc2lnbmVkIHByb2Nlc3NlZFRva2VuczsKLSAgICBNb25vdG9u
aWNUaW1lIHN0YXJ0VGltZTsKLSAgICBib29sIGRpZFNlZVNjcmlwdDsKKyAgICB1bnNpZ25lZCBw
cm9jZXNzZWRUb2tlbnMgeyAwIH07CisgICAgdW5zaWduZWQgcHJvY2Vzc2VkVG9rZW5zT25MYXN0
Q2hlY2sgeyAwIH07CisgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgeyBNb25vdG9uaWNUaW1l
Ojpub3coKSB9OworICAgIGJvb2wgZGlkU2VlU2NyaXB0IHsgZmFsc2UgfTsKIH07CiAKIGNsYXNz
IEhUTUxQYXJzZXJTY2hlZHVsZXIgewpAQCAtNzIsMTMgKzc0LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKFVOTElLRUxZKG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkoc2Vzc2lvbi5w
cm9jZXNzZWRUb2tlbnMgPiBudW1iZXJPZlRva2Vuc0JlZm9yZUNoZWNraW5nRm9yWWllbGQgfHwg
c2Vzc2lvbi5kaWRTZWVTY3JpcHQpKQorICAgICAgICBpZiAoVU5MSUtFTFkoc2Vzc2lvbi5wcm9j
ZXNzZWRUb2tlbnMgPiBzZXNzaW9uLnByb2Nlc3NlZFRva2Vuc09uTGFzdENoZWNrICsgbnVtYmVy
T2ZUb2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8IHNlc3Npb24uZGlkU2VlU2NyaXB0KSkK
ICAgICAgICAgICAgIHJldHVybiBjaGVja0ZvcllpZWxkKHNlc3Npb24pOwogCiAgICAgICAgICsr
c2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYpOwor
ICAgIGJvb2wgc2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoY29uc3QgU2NyaXB0RWxl
bWVudCosIFB1bXBTZXNzaW9uJik7CiAKICAgICB2b2lkIHNjaGVkdWxlRm9yUmVzdW1lKCk7CiAg
ICAgYm9vbCBpc1NjaGVkdWxlZEZvclJlc3VtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5k
ZWRXaXRoQWN0aXZlVGltZXIgfHwgbV9jb250aW51ZU5leHRDaHVua1RpbWVyLmlzQWN0aXZlKCkg
fHwgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zOyB9CkBAIC0xMDgsMTYgKzEx
MCw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNoZWNrRm9yWWllbGQoUHVtcFNlc3Npb24mIHNl
c3Npb24pCiAgICAgewotICAgICAgICBzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA9IDE7CisgICAg
ICAgIHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zT25MYXN0Q2hlY2sgPSBzZXNzaW9uLnByb2Nlc3Nl
ZFRva2VuczsKICAgICAgICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSBmYWxzZTsKIAotICAgICAg
ICAvLyBNb25vdG9uaWNUaW1lOjpub3coKSBjYW4gYmUgZXhwZW5zaXZlLiBCeSBkZWxheWluZywg
d2UgYXZvaWRlZCBjYWxsaW5nCi0gICAgICAgIC8vIE1vbm90b25pY1RpbWU6Om5vdygpIHdoZW4g
Y29uc3RydWN0aW5nIG5vbi15aWVsZGluZyBQdW1wU2Vzc2lvbnMuCi0gICAgICAgIGlmICghc2Vz
c2lvbi5zdGFydFRpbWUpIHsKLSAgICAgICAgICAgIHNlc3Npb24uc3RhcnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQog
ICAgICAgICBTZWNvbmRzIGVsYXBzZWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzZXNz
aW9uLnN0YXJ0VGltZTsKICAgICAgICAgcmV0dXJuIGVsYXBzZWRUaW1lID4gbV9wYXJzZXJUaW1l
TGltaXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaAppbmRleCAyMDM1ZTJkYjAyMDEuLmU5NjZkN2Y0YTI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgdG8gdGFrZSB0aGUgcGFyc2VyLWJsb2NraW5nIHNj
cmlwdCBiZWZvcmUgY2FsbGluZyB0aGUgcGFyc2VyIGFnYWluLgogICAgIFJlZlB0cjxTY3JpcHRF
bGVtZW50PiB0YWtlU2NyaXB0VG9Qcm9jZXNzKFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3Np
dGlvbik7CisgICAgY29uc3QgU2NyaXB0RWxlbWVudCogc2NyaXB0VG9Qcm9jZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JpcHRUb1Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4gdGFrZUN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rpb25EYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2N1c3RvbUVsZW1lbnRUb0NvbnN0cnVjdCk7
IH0KICAgICB2b2lkIGRpZENyZWF0ZUN1c3RvbU9yRmFsbGJhY2tFbGVtZW50KFJlZjxFbGVtZW50
PiYmLCBDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>