<?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>201673</bug_id>
          
          <creation_ts>2019-09-10 19:17:45 -0700</creation_ts>
          <short_desc>[JSC] Add StringCodePointAt intrinsic</short_desc>
          <delta_ts>2019-09-12 14:26:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1569804</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-10 19:17:45 -0700</bug_when>
    <thetext>JetStream2/UniPoker uses String#codePointAt much.

Sampling rate: 1000.000000 microseconds
Top functions as &lt;numSamples  &apos;functionName:sourceID&apos;&gt;
   285    &apos;[Symbol.match]:3&apos;
   176    &apos;shift:-1&apos;
   140    &apos;codePointAt:-1&apos;
   111    &apos;join:-1&apos;
    77    &apos;shuffle:4&apos;
    77    &apos;merge:3&apos;
    67    &apos;sort:3&apos;
    50    &apos;mergeSort:3&apos;
    44    &apos;score:4&apos;
    40    &apos;arrayIteratorValueNext:3&apos;
    35    &apos;cardRank:4&apos;
    35    &apos;:5&apos;


Sampling rate: 1000.000000 microseconds
Hottest bytecodes as &lt;numSamples   &apos;functionName#hash:JITType:bytecodeIndex&apos;&gt;
   183    &apos;[Symbol.match]#B7PWYa:Baseline:82 &lt;-- score#Duc7t2:FTL:163&apos;
   176    &apos;shift#&lt;nil&gt;:None:&lt;nil&gt;&apos;
   140    &apos;codePointAt#&lt;nil&gt;:None:&lt;nil&gt;&apos;
   111    &apos;join#&lt;nil&gt;:None:&lt;nil&gt;&apos;
    47    &apos;[Symbol.match]#B7PWYa:Baseline:82 &lt;-- score#Duc7t2:FTL:127&apos;
    41    &apos;shuffle#A4Tfzo:FTL:100&apos;
    30    &apos;[Symbol.match]#B7PWYa:Baseline:82 &lt;-- score#Duc7t2:FTL:91&apos;
    23    &apos;mergeSort#DOiQtk:FTL:22&apos;
    21    &apos;indexOf#&lt;nil&gt;:None:&lt;nil&gt;&apos;
    20    &apos;[Symbol.match]#B7PWYa:Baseline:82 &lt;-- score#Duc7t2:FTL:715&apos;
    18    &apos;clear#CPW4SA:Baseline:13 &lt;-- playHands#DltzVB:FTL:111&apos;
    17    &apos;sort#C0wzoE:FTL:10&apos;
    14    &apos;mergeSort#DOiQtk:FTL:96&apos;
    14    &apos;cardRank#B8GTs9:Baseline:21 &lt;-- merge#AVbsbl:FTL:151&apos;
    12    &apos;merge#AVbsbl:FTL:0&apos;
    11    &apos;merge#AVbsbl:FTL:185&apos;
    11    &apos;shuffle#A4Tfzo:FTL:113&apos;
    10    &apos;newDeck#B6KIhS:Baseline:43 &lt;-- shuffle#A4Tfzo:FTL:18&apos;
     9    &apos;shuffle#A4Tfzo:FTL:88&apos;
     8    &apos;cardRank#B8GTs9:Baseline:13 &lt;-- merge#AVbsbl:FTL:151&apos;
     8    &apos;sort#C0wzoE:FTL:114&apos;
     8    &apos;score#Duc7t2:FTL:682&apos;
     8    &apos;sort#C0wzoE:FTL:66&apos;
     7    &apos;merge#AVbsbl:FTL:212&apos;
     6    &apos;#EMWXIv:FTL:0&apos;
     6    &apos;score#Duc7t2:FTL:1555&apos;
     6    &apos;merge#AVbsbl:FTL:95&apos;
     6    &apos;score#Duc7t2:FTL:32&apos;
     5    &apos;merge#AVbsbl:FTL:224&apos;
     5    &apos;sort#C0wzoE:FTL:126&apos;
     5    &apos;#EMWXIv:FTL:296&apos;
     5    &apos;merge#AVbsbl:FTL:151&apos;
     5    &apos;sort#C0wzoE:FTL:42&apos;
     5    &apos;mergeSort#DOiQtk:FTL:16&apos;
     5    &apos;arrayIteratorValueNext#ANxshv:Baseline:16 &lt;-- score#Duc7t2:FTL:2068&apos;
     5    &apos;merge#AVbsbl:FTL:46&apos;
     5    &apos;merge#AVbsbl:FTL:166&apos;
     5    &apos;sort#C0wzoE:FTL:78&apos;
     4    &apos;sort#C0wzoE:FTL:54&apos;
     4    &apos;shuffle#A4Tfzo:FTL:131&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569805</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-10 19:18:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/55246768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569834</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-10 21:57:49 -0700</bug_when>
    <thetext>Ensured that this offers more than 10% Score improvement in JetStream2/UniPoker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569835</commentid>
    <comment_count>3</comment_count>
      <attachid>378538</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-10 22:07:32 -0700</bug_when>
    <thetext>Created attachment 378538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569838</commentid>
    <comment_count>4</comment_count>
      <attachid>378539</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-10 22:19:09 -0700</bug_when>
    <thetext>Created attachment 378539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569873</commentid>
    <comment_count>5</comment_count>
      <attachid>378546</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-11 01:42:19 -0700</bug_when>
    <thetext>Created attachment 378546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569903</commentid>
    <comment_count>6</comment_count>
      <attachid>378546</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-11 03:57:21 -0700</bug_when>
    <thetext>Comment on attachment 378546
Patch

Attachment 378546 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/13022548

New failing tests:
stress/string-char-code-at-constant-index-out-of-range.js.no-llint
stress/string-char-code-at-constant-index-out-of-range.js.ftl-no-cjit-validate-sampling-profiler
stress/string-char-code-at-constant-index-out-of-range.js.bytecode-cache
stress/string-char-code-at-constant-index-out-of-range.js.ftl-no-cjit-b3o0
stress/string-char-code-at-constant-index-out-of-range.js.no-cjit-validate-phases
stress/string-char-code-at-constant-index-out-of-range.js.ftl-no-cjit-small-pool
stress/string-char-code-at-constant-index-out-of-range.js.dfg-eager-no-cjit-validate
stress/string-char-code-at-constant-index-out-of-range.js.ftl-no-cjit-no-put-stack-validate
stress/string-char-code-at-constant-index-out-of-range.js.ftl-no-cjit-no-inline-validate
stress/string-char-code-at-constant-index-out-of-range.js.no-cjit-collect-continuously
stress/string-char-code-at-constant-index-out-of-range.js.ftl-eager-no-cjit
stress/string-char-code-at-constant-index-out-of-range.js.no-ftl
stress/string-char-code-at-constant-index-out-of-range.js.ftl-eager-no-cjit-b3o1
stress/string-char-code-at-constant-index-out-of-range.js.default
stress/string-char-code-at-constant-index-out-of-range.js.dfg-eager
stress/string-char-code-at-constant-index-out-of-range.js.eager-jettison-no-cjit
stress/string-char-code-at-constant-index-out-of-range.js.mini-mode
stress/string-char-code-at-constant-index-out-of-range.js.ftl-eager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569927</commentid>
    <comment_count>7</comment_count>
      <attachid>378546</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-09-11 08:02:28 -0700</bug_when>
    <thetext>Comment on attachment 378546
Patch

New test stress/string-char-code-at-constant-index-out-of-range.js fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569944</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-11 09:26:28 -0700</bug_when>
    <thetext>(In reply to Michael Saboff from comment #7)
&gt; Comment on attachment 378546 [details]
&gt; Patch
&gt; 
&gt; New test stress/string-char-code-at-constant-index-out-of-range.js fails.

Oops, the test is wrong, fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569945</commentid>
    <comment_count>9</comment_count>
      <attachid>378565</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-11 09:27:00 -0700</bug_when>
    <thetext>Created attachment 378565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569995</commentid>
    <comment_count>10</comment_count>
      <attachid>378565</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-09-11 15:18:36 -0700</bug_when>
    <thetext>Comment on attachment 378565
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570013</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-11 15:37:00 -0700</bug_when>
    <thetext>Committed r249780: &lt;https://trac.webkit.org/changeset/249780&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570302</commentid>
    <comment_count>12</comment_count>
      <attachid>378565</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-12 11:05:14 -0700</bug_when>
    <thetext>Comment on attachment 378565
Patch

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

LGTM too. A couple questions

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2629
&gt; +            if (argumentCountIncludingThis != 2)

Why not “&lt; 2”?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2632
&gt; +            if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Uncountable))

CheckArray is Uncountable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570319</commentid>
    <comment_count>13</comment_count>
      <attachid>378565</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-12 12:10:22 -0700</bug_when>
    <thetext>Comment on attachment 378565
Patch

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

Nice

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2629
&gt;&gt; +            if (argumentCountIncludingThis != 2)
&gt; 
&gt; Why not “&lt; 2”?

Doing `&lt; 2` sounds nice. I&apos;ll change this for the other DFG nodes (StringCharAt / StringCharCodeAt).

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2632
&gt;&gt; +            if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Uncountable))
&gt; 
&gt; CheckArray is Uncountable?

No, CheckArray emits other thing. Uncountable is checking negative indexes in StringCodePointAt. We should have exit handing for CheckArray here.
And I think StringCharCodeAt and StringCharAt are also missing CheckArray exits. Need to add them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570374</commentid>
    <comment_count>14</comment_count>
      <attachid>378565</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-12 14:26:27 -0700</bug_when>
    <thetext>Comment on attachment 378565
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2629
&gt;&gt;&gt; +            if (argumentCountIncludingThis != 2)
&gt;&gt; 
&gt;&gt; Why not “&lt; 2”?
&gt; 
&gt; Doing `&lt; 2` sounds nice. I&apos;ll change this for the other DFG nodes (StringCharAt / StringCharCodeAt).

Yeah I&apos;ve noticed this pattern in our intrinsic inlining where we check for exact argument count match (or a few potential values), instead of just checking a range. I think checking a range is more complete. (Obviously, it&apos;s unlikely these are called with more parameters, but we shouldn&apos;t disallow it). When I inline intrinsics, I&apos;ve been trying to use the &quot;&lt; X&quot; paradigm.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2632
&gt;&gt;&gt; +            if (m_inlineStackTop-&gt;m_exitProfile.hasExitSite(m_currentIndex, Uncountable))
&gt;&gt; 
&gt;&gt; CheckArray is Uncountable?
&gt; 
&gt; No, CheckArray emits other thing. Uncountable is checking negative indexes in StringCodePointAt. We should have exit handing for CheckArray here.
&gt; And I think StringCharCodeAt and StringCharAt are also missing CheckArray exits. Need to add them.

👍🏼</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378538</attachid>
            <date>2019-09-10 22:07:32 -0700</date>
            <delta_ts>2019-09-10 22:19:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201673-20190910220731.patch</filename>
            <type>text/plain</type>
            <size>29442</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li42MTQxZWI3OWYxZmNiYWY5
NGZlMzRlNDY5OTA2ZDdmYzIwMGZkNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBTdHJpbmdDb2RlUG9pbnRBdCBpbnRyaW5zaWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ29kZVBv
aW50QXQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdDaGFyTG9hZCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvdHlwZUNvZGVQb2ludEF0VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAg
IChKU0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoK
KyAgICAgICAgKEpTQzo6dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMpOgorCiAyMDE5LTA5LTEw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gMzJi
aXQgYml0d2lkZSBvcGVyYXRpb24gd2l0aCBhbGwtb25lICgtMSkgaXMgd3JvbmcgaW4gQjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCA5YjZiZjAzNTk3ODc5N2EzZTMzYTRjODQ5NTE0MDMxNDBjNTMx
ZDEzLi5jMmZlM2FiYTk1OWIwNTAyZjQ4ZjU1YTI1NTE1ZGYyOTRkN2U5ZTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0xOTA5LDYgKzE5MDksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3Ry
aW5nQ29kZVBvaW50QXQ6CiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVj
SW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggMDE3NTkyNmUyNmIyMTNkZGY1Yzg2M2RjOTEzZDc0NzlhZDRlZWE0ZC4uZDIwYmUwYTE4
NjkxYjM0YzFhZmZkOTlmMWE4MWFjMTdjNjkyYWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC0yMzksNyArMjM5LDggQEAgY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDogeworICAgICAgICBjYXNlIFN0cmluZ0NoYXJD
b2RlQXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVlKTsKICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkMigpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVl
IHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50IHwgTm9kZUJ5dGVjb2RlVXNlc0FzQXJyYXlJbmRleCk7
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMmM4MmIxZTkzYmQxZmQ1MmNlZDU1MDRhNDFiYWVjOWE1
ZDliOTM5Mi4uNzRiNjIxZWZmOWExN2ZkYzE5MDgyNGQ4OGNkNGRjZDZhZjMwN2U1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI2
MTksNiArMjYxOSwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxs
KE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZUNvZGVQ
b2ludEF0SW50cmluc2ljOiB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgIT0gMikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IGluc2VydENoZWNrcygpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNPcGVyYW5k
ID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGluZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFk
ZFRvR3JhcGgoU3RyaW5nQ29kZVBvaW50QXQsIE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6OlN0cmlu
ZywgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgZ2V0KHRoaXNPcGVyYW5kKSwgZ2V0KGluZGV4T3Bl
cmFuZCkpOworCisgICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBDaGFyQXRJbnRyaW5zaWM6IHsK
ICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKaW5kZXggYzFiN2EwYmMyMjFjZjQ4NDFjNmQ0MzFhYzRlNWNlNWFkYTFmNzFhMC4u
MzAzZjQ3OTNlM2I2NDVlODQ4YmMzNmRkMjY5YmQ4ZjBjYjY1NGRiNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE2OCw2ICsxNjgsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFs
T2JqZWN0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKKyAgICBjYXNlIFN0cmluZ0NvZGVQ
b2ludEF0OgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgU2FtZVZhbHVlOgog
ICAgIGNhc2UgSXNFbXB0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCBmYjMxMjJiN2MyNjVkM2I4ZWQxYTZhMDA2YjJkYzgyNGE1ZTU4ZDc1Li40MDcyZjkxN2U0
NWY0YTA1OTFhOGFhYzY4MzBmMGQ4MDRhNjU0NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCkBAIC0xOTIsNiArMTkyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3RyaW5n
Q29kZVBvaW50QXQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICBjYXNl
IEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZTQ1YWM1YzFlNjRjNzNmZTI2ODlj
NGUzOGU0ZWUyYjEyNWRjMzcxZC4uY2M0MWEzZDhlYzEzM2RlMDVlY2Y2OTQ4MGM1N2JiMjY4MTg2
N2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC04MzUsNyArODM1LDggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKLSAgICAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OiB7CisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKKyAg
ICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAgICAgLy8gQ3VycmVudGx5
IHdlIGhhdmUgbm8gZ29vZCB3YXkgb2YgcmVmaW5pbmcgdGhlc2UuCiAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+YXJyYXlNb2RlKCkgPT0gQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcsIEFycmF5OjpS
ZWFkKSk7CiAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBu
b2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCA2OWYwOGMxODZkNDhjZWJmNmM3NmI4OWE0ZDVkNDg0NDA3ZGIzZDBlLi42NzZk
ZjYzNjViMTUwNWE1OWU3OGRkNDZiYzI0N2FhNjVjYTI3NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtMjA5NCw2ICsyMDk0LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAg
ICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgICAgIGNh
c2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAppbmRleCA0ZDcxNTgyZTE3YTY5MWEwNThhODM0NzIyODRmNjAxOWY5N2Q4MDM5Li42ODU2
MjhiZjRmMDY1ZTZlN2NmZjdhNTcyMjg5MDBjZmJmZDI1M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zMDMsNiArMzAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBzdHJpbmcg
YWNjZXNzICovIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQ29kZUF0LCBOb2RlUmVzdWx0SW50MzIp
IFwKKyAgICBtYWNybyhTdHJpbmdDb2RlUG9pbnRBdCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAg
bWFjcm8oU3RyaW5nQ2hhckF0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTdHJpbmdGcm9t
Q2hhckNvZGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ4YTQxYjMwNzJiNzY3NjM2MTkxMDQ1M2E0ZGU0ZjVhYWVi
NTRiYWIuLjAwYWM1NWM2ZTY2OWJlNDIxN2NkZDBhNzA1MDM4N2QwZTQzMDU4NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC05MDYsNyArOTA2LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKKyAgICAgICAgY2FzZSBTdHJp
bmdDaGFyQ29kZUF0OgorICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAg
ICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggY2E4YWVhMzBhMzUyNjZjNjc1NDU5YjliNWVmNTQ1MmM1MzE3NmQ1ZC4uNjgzN2UyMzVi
MzA2MjU1NzcxOGY1ZjEzMmMwNDY4MmNkOGNlYzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6
CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6
CiAgICAgICAgIHJldHVybiBub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChncmFwaCwg
bm9kZSwgc3RhdGUuZm9yTm9kZShncmFwaC5jaGlsZChub2RlLCAwKSkpOwogCiAgICAgY2FzZSBB
cnJheVB1c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDUyOGUxMTNmNzY4NmZmZTI2ZDJjYTJkMzkyNDIwNWQ3ZDU0Yjg1MDAuLjUw
NzE4NjAzYmY4ZTQ5ZjJiZjQ0Yzg0NjY3MTU1Y2VjNGRhOWYyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzkwNCw2ICsxMzkw
NCw1NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkK
ICNlbmRpZgogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29kZVBvaW50
QXQoTm9kZSogbm9kZSkKK3sKKyAgICAvLyBXZSBlbWl0IENoZWNrQXJyYXkgb24gdGhpcyBub2Rl
IGFzIHdlIGRvIGluIFN0cmluZ0NoYXJDb2RlQXQgbm9kZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIFNwZWNTdHJpbmcgaGVyZS4KKyAgICAvLyBBbmQgQ2hlY2tBcnJheSBhbHNvIGVu
c3VyZXMgdGhhdCB0aGlzIFN0cmluZyBpcyBub3QgYSByb3BlLgorICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHN0cmluZyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBTdG9yYWdlT3Bl
cmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKKworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBzdHJpbmcu
Z3ByKCk7CisgICAgR1BSUmVnIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CisgICAgR1BSUmVnIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0
Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworICAg
IEdQUlJlZyBzY3JhdGNoM0dQUiA9IHNjcmF0Y2gzLmdwcigpOworCisgICAgbV9qaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RyaW5nR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1
ZSgpKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaDFHUFIsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwgc2NyYXRj
aDJHUFIpOworCisgICAgLy8gdW5zaWduZWQgY29tcGFyaXNvbiBzbyB3ZSBjYW4gZmlsdGVyIG91
dCBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgc2NyYXRjaDJHUFIpKTsK
KworICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBpbnRvIHNjcmF0Y2gxR1BSCisgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olpl
cm8sIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKKworICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKKworICAgIG1faml0LmxvYWQ4KENDYWxsSGVs
cGVyczo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVz
T25lLCAwKSwgc2NyYXRjaDFHUFIpOworICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisK
KyAgICBpczE2Qml0LmxpbmsoJm1faml0KTsKKworICAgIG1faml0LmxvYWQxNihDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgQ0NhbGxIZWxwZXJzOjpUaW1lc1R3
bywgMCksIHNjcmF0Y2gxR1BSKTsKKyAgICAvLyBUaGlzIGlzIG9rLiBpbmRleEdQUiBtdXN0IGJl
IHBvc2l0aXZlIGludDMyX3QgaGVyZSBhbmQgYWRkaW5nIDEgbmV2ZXIgY2F1c2VzIG92ZXJmbG93
IGlmIHdlIHRyZWF0IGluZGV4R1BSIGFzIHVpbnQzMl90LgorICAgIG1faml0LmFkZDMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgc2NyYXRjaDNHUFIpOworICAgIGRv
bmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3Jh
dGNoM0dQUiwgc2NyYXRjaDJHUFIpKTsKKyAgICBtX2ppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICBk
b25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNo
MkdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkODAwKSkpOworICAgIG1faml0Lmxv
YWQxNihDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoM0dQUiwgQ0Nh
bGxIZWxwZXJzOjpUaW1lc1R3bywgMCksIHNjcmF0Y2gzR1BSKTsKKyAgICBtX2ppdC5hbmQzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgc2NyYXRjaDNHUFIsIHNjcmF0
Y2gyR1BSKTsKKyAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLCBzY3JhdGNoMkdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkYzAwKSkp
OworICAgIG1faml0LmxzaGlmdDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEwKSwgc2Ny
YXRjaDFHUFIpOworICAgIG1faml0LmdldEVmZmVjdGl2ZUFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpC
YXNlSW5kZXgoc2NyYXRjaDFHUFIsIHNjcmF0Y2gzR1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVzT25l
LCAtVTE2X1NVUlJPR0FURV9PRkZTRVQpLCBzY3JhdGNoMUdQUik7CisgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisKKyAgICBpbnQzMlJlc3VsdChzY3JhdGNoMUdQUiwgbV9jdXJyZW50Tm9kZSk7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZjk5MWRkMjAxNjI0ZTYwM2Iy
MWVkNzNkZDAzYzUzYzNiNzMxYWRlMi4uNTg0YTQ5ZDE5YjJmOTQ4ZjgyZTFiZGNiODNkNmZmMzZh
OGRkMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMTQ5Myw2ICsxNDkzLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZv
aWQgY29tcGlsZUV4dHJhY3RDYXRjaExvY2FsKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDbGVh
ckNhdGNoTG9jYWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQcm9maWxlVHlwZShOb2RlKik7
CisgICAgdm9pZCBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQoTm9kZSopOwogCiAgICAgdm9pZCBt
b3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggMDljZjA5ODQ2OThiOWY3OTM3NmYwNTY0MTdlNTcxNjAzOWFlNTZkYi4uYWQ2ZGViOTRk
MmIzZTEzNTZmN2IzZjhkZjM3NTU2NzQxMzEzZDA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMTk5LDYgKzIx
OTksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CisgICAgICAg
IGNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6IHsKICAgICAgICAgLy8gUmVsaWVzIG9uIFN0cmluZ0No
YXJBdCBub2RlIGhhdmluZyBzYW1lIGJhc2ljIGxheW91dCBhcyBHZXRCeVZhbAogICAgICAgICBj
b21waWxlR2V0QnlWYWxPblN0cmluZyhub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGYxZjA0YzNjOTg3NWE2MzE2NWE2
MjhmZjlmMWNlZGI1ZmM3MDZiMzYuLmY0NGRlMjQ2MDAzZDQ0ZDRlNjgxZDgyMzk2ZTI3Zjg1NTc4
MjM5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtMjM0Myw2ICsyMzQzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTdHJp
bmdDb2RlUG9pbnRBdDogeworICAgICAgICBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7CiAgICAg
ICAgIC8vIFJlbGllcyBvbiBTdHJpbmdDaGFyQXQgbm9kZSBoYXZpbmcgc2FtZSBiYXNpYyBsYXlv
dXQgYXMgR2V0QnlWYWwKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggODQ1
YzQxN2VjZGIxNGJmNTBhNDVmNWU4ZTA5ZTNhZTIzOTlmOWQ4MC4uMTk4OTQ3ODczMDc5NDkzZjg5
YTVlNDM1M2I4Y2U1ZTRiODdjYmI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTU5LDYgKzE1OSw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDoK
ICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNh
c2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6CiAgICAg
Y2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggM2MxZjI4OGI2YmVlMjFlNGEyNmY1NDE1YjNjYjJjYmYwNjg4OTQ1YS4uOGNkODc2
MzM2MzNmM2E3NDVhNTFmMjU5ZDk3NzZhZTBhZWIwYThkMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTExMyw2ICsxMTEzLDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAg
ICAgICAgY29tcGlsZVN0cmluZ0NoYXJDb2RlQXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgorICAgICAgICAgICAgY29tcGlsZVN0cmluZ0Nv
ZGVQb2ludEF0KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdGcm9t
Q2hhckNvZGU6CiAgICAgICAgICAgICBjb21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTcxMzEsNiArNzEzNCw2NCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBzZXRJbnQzMihtX291dC5waGkoSW50MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQp
KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdCgpCisgICAgewor
ICAgICAgICBMQmFzaWNCbG9jayBpczhCaXQgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBpczE2Qml0ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgaXNMZWFkID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbWF5SGF2
ZVRyYWlsID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgdHJhaWwgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93U3RyaW5nKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hpbGQz
KCkpOworCisgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihiYXNlLCBt
X2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lmxv
YWQzMk5vbk5lZ2F0aXZlKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9sZW5ndGgpOwor
CisgICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAwLCBtX291dC5hYm92
ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAg
ICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIo
c3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksCisgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSwKKyAgICAg
ICAgICAgIHVuc3VyZShpczE2Qml0KSwgdW5zdXJlKGlzOEJpdCkpOworCisgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXM4Qml0LCBpczE2Qml0KTsKKyAgICAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gY2FnZSBzdHJpbmdzIQorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTI0CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGNoYXI4Qml0ID0gbV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgbV9vdXQubG9hZDhaZXJv
RXh0MzIobV9vdXQuYmFzZUluZGV4KAorICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVy
czgsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpLAorICAgICAgICAgICAgICAgIHBy
b3ZlblZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXMxNkJpdCwgaXNMZWFkKTsKKyAg
ICAgICAgTFZhbHVlIGxlYWRDaGFyYWN0ZXIgPSBtX291dC5sb2FkMTZaZXJvRXh0MzIobV9vdXQu
YmFzZUluZGV4KG1faGVhcHMuY2hhcmFjdGVyczE2LCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRy
KGluZGV4KSwgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgY2hhcjE2Qml0ID0gbV9vdXQuYW5jaG9yKGxlYWRDaGFyYWN0ZXIpOworICAgICAg
ICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuYWRkKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5hYm92ZU9yRXF1YWwobmV4dEluZGV4LCBsZW5ndGgp
LCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGlzTGVhZCkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGlzTGVhZCwgbWF5SGF2ZVRyYWlsKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0Lm5vdEVxdWFsKG1fb3V0LmJpdEFuZChsZWFkQ2hhcmFjdGVyLCBtX291dC5jb25zdEludDMy
KDB4ZmZmZmZjMDApKSwgbV9vdXQuY29uc3RJbnQzMigweGQ4MDApKSwgdW5zdXJlKGNvbnRpbnVh
dGlvbiksIHVuc3VyZShtYXlIYXZlVHJhaWwpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyht
YXlIYXZlVHJhaWwsIHRyYWlsKTsKKyAgICAgICAgSlNWYWx1ZSBpbmRleFZhbHVlID0gcHJvdmVu
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWUgbmV4dEluZGV4VmFsdWU7
CisgICAgICAgIGlmIChpbmRleFZhbHVlICYmIGluZGV4VmFsdWUuaXNJbnQzMigpICYmIGluZGV4
VmFsdWUuYXNJbnQzMigpICE9IElOVDMyX01BWCkKKyAgICAgICAgICAgIG5leHRJbmRleFZhbHVl
ID0ganNOdW1iZXIoaW5kZXhWYWx1ZS5hc0ludDMyKCkgKyAxKTsKKyAgICAgICAgTFZhbHVlIHRy
YWlsQ2hhcmFjdGVyID0gbV9vdXQubG9hZDE2WmVyb0V4dDMyKG1fb3V0LmJhc2VJbmRleChtX2hl
YXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihuZXh0SW5kZXgpLCBu
ZXh0SW5kZXhWYWx1ZSkpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwobV9v
dXQuYml0QW5kKHRyYWlsQ2hhcmFjdGVyLCBtX291dC5jb25zdEludDMyKDB4ZmZmZmZjMDApKSwg
bV9vdXQuY29uc3RJbnQzMigweGRjMDApKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZSh0
cmFpbCkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHRyYWlsLCBjb250aW51YXRpb24pOwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFyU3Vycm9nYXRlUGFpciA9IG1fb3V0LmFuY2hvciht
X291dC5zdWIobV9vdXQuYWRkKG1fb3V0LnNobChsZWFkQ2hhcmFjdGVyLCBtX291dC5jb25zdElu
dDMyKDEwKSksIHRyYWlsQ2hhcmFjdGVyKSwgbV9vdXQuY29uc3RJbnQzMihVMTZfU1VSUk9HQVRF
X09GRlNFVCkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRJbnQz
MihtX291dC5waGkoSW50MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQsIGNoYXJTdXJyb2dhdGVQYWly
KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKCkKICAgICB7
CiAgICAgICAgIEVkZ2UgY2hpbGRFZGdlID0gbV9ub2RlLT5jaGlsZDEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMGFlNGQ1MGNkMjY0NDc1YTYwZGM3MDc5MjRl
ZjkwOWRiNDI0YzdiZC4uZjEzMDAyYjQwZjAyN2ZkNzM3NzEwYjQyMTFhNzZkMThhOGRiNWVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTk3LDE2ICs5NywxNSBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsCiAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzcmMsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBkc3QpOwogICAgIGZhaWx1cmVz
LmFwcGVuZChicmFuY2hJZlJvcGVTdHJpbmdJbXBsKGRzdCkpOwogICAgIGZhaWx1cmVzLmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJ
bXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIFRydXN0ZWRJbW0zMigxKSkpOwotICAgIGxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgp
KSwgcmVnVDEpOwotICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJp
bmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBkc3QpOworICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCByZWdUMSk7CiAKICAgICBK
dW1wTGlzdCBpczE2Qml0OwogICAgIEp1bXBMaXN0IGNvbnQ4Qml0OwotICAgIGlzMTZCaXQuYXBw
ZW5kKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMSwgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZs
YWdJczhCaXQoKSkpKTsKLSAgICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkc3QsIDAp
LCBkc3QpOworICAgIGlzMTZCaXQuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBBZGRyZXNzKGRz
dCwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpm
bGFnSXM4Qml0KCkpKSk7CisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVnVDEs
IDApLCBkc3QpOwogICAgIGNvbnQ4Qml0LmFwcGVuZChqdW1wKCkpOwogICAgIGlzMTZCaXQubGlu
ayh0aGlzKTsKLSAgICBsb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCAwKSwgZHN0
KTsKKyAgICBsb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVnVDEsIDApLCBkc3QpOwog
ICAgIGNvbnQ4Qml0LmxpbmsodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCBiMDcwOWUzMWRmYzU5ZWZiNTU5YTE2MmM1ZmQ4
NmQwMWUxMDFjNjYzLi5lNmE4Yzk4MGI1NDRlMjI3ZDU0ZWEyZTNkNWRiYmRhNzA0ZjZmODE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC02
NzIsNyArNjcyLDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVu
a0pJVCYgaml0KQogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlzMTZCaXQ7CiAg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CiAgICAgLy8gTG9hZCB0
aGUgc3RyaW5nIGZsYWdzCi0gICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5nSW1wbDo6ZmxhZ3NP
ZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKICAgICBqaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5n
SW1wbDo6ZGF0YU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGlz
MTZCaXQuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmlu
Z0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKICAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKQEAgLTcxNyw2ICs3MTcsNTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJu
IGppdC5maW5hbGl6ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNo
YXJDb2RlIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc3Ry
aW5nUHJvdG90eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCit7CisgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOworCisgICAgLy8gbG9hZCBzdHJpbmcKKyAgICBq
aXQubG9hZEpTU3RyaW5nQXJndW1lbnQoU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGhpc0FyZ3VtZW50
LCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisKKyAgICAvLyBMb2FkIHN0cmluZyBsZW5n
dGggdG8gcmVnVDMsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBv
aW50ZXIgaW50byByZWdUMgorICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5i
cmFuY2hJZlJvcGVTdHJpbmdJbXBsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKSk7CisgICAg
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMyk7CisKKyAgICAvLyBsb2FkIGluZGV4CisgICAgaml0LmxvYWRJbnQzMkFyZ3Vt
ZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsgLy8gcmVnVDEgY29udGFpbnMgdGhl
IGluZGV4CisKKyAgICAvLyBEbyBhbiB1bnNpZ25lZCBjb21wYXJlIHRvIHNpbXVsdGFuZW91c2x5
IGZpbHRlciBuZWdhdGl2ZSBpbmRpY2VzIGFzIHdlbGwgYXMgaW5kaWNlcyB0aGF0IGFyZSB0b28g
bGFyZ2UKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QzKSk7CisKKyAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIKKyAgICBTcGVjaWFs
aXplZFRodW5rSklUOjpKdW1wTGlzdCBpczE2Qml0OworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6
Okp1bXBMaXN0IGNvbnQ4Qml0OworICAgIC8vIExvYWQgdGhlIHN0cmluZyBmbGFncworICAgIGpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
Mik7CisgICAgaXMxNkJpdC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKKyAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICBjb250OEJpdC5hcHBlbmQoaml0Lmp1bXAoKSk7CisKKyAgICBp
czE2Qml0LmxpbmsoJmppdCk7CisgICAgaml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDApOworICAgIC8vIE9yaWdpbmFsIGluZGV4IGlzIGludDMyX3QuIFNvIGlmIHdlIGludGVycHJl
dCBpdCBhcyB1aW50MzJfdCwgYWRkaW5nIDEgbmV2ZXIgb3ZlcmZsb3dzLgorICAgIGppdC5hZGQz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDEpOworICAgIGNvbnQ4Qml0LmFwcGVuZChqaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QzKSk7CisgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4
ZmZmZmZjMDApLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDMpOworICAgIGNvbnQ4Qml0LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJz
OjpOb3RFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDB4ZDgwMCkpKTsKKyAgICBqaXQubG9hZDE2KE1hY3JvQXNzZW1ibGVyOjpCYXNl
SW5kZXgoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMik7CisgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZmZmZmZj
MDApLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDMpOworICAgIGNvbnQ4Qml0LmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDB4ZGMwMCkpKTsKKyAgICBqaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMTApLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgaml0LmdldEVmZmVjdGl2
ZUFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUs
IC1VMTZfU1VSUk9HQVRFX09GRlNFVCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAg
ICBjb250OEJpdC5saW5rKCZqaXQpOworCisgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLmppdFN0dWJzLT5j
dGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjb2RlUG9pbnRBdCIpOworfQorCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNsejMyVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmluZGV4IDkxNTM4MjEyMGFlNzYzMGZmYjJlYWVmOGNl
MjZkYWQ3MTVkOTBhNjMuLmY5YjNjOGNjNjdhYWUyYmNlMTI5MDkwOWNjNTFjYzFkZGE0MTQxYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtNTUs
NiArNTUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHN0cmluZ0dl
dEJ5VmFsR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0VGh1
bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2x6MzJUaHVua0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhYnNUaHVua0dlbmVyYXRvcihWTSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggZmJjNGVmM2NkOGYyZWM2
MmRhOTMwMGRhMjcxYjEwMjMzOTc0MzRmYy4uYTEyYTI0MDU1YzcyOTBhM2ExYzk1NmY2YWI0ZTc2
MzdmODdmYmIzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
Y3BwCkBAIC0xMjMsNiArMTIzLDggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5z
aWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIk9iamVjdEtleXNJbnRyaW5zaWMiOwogICAg
IGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIlJl
ZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CisgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVD
b2RlUG9pbnRBdEludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJTdHJpbmdQcm90b3R5cGVDb2Rl
UG9pbnRBdEludHJpbnNpYyI7CiAgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmlu
c2ljOgogICAgICAgICByZXR1cm4gIlN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMiOwog
ICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggOTNkMzY0M2NhZThjYWZhYThhODU4ZTA2
MmVjMTU2MDg5MDAzNTI5Mi4uZTUxYjgzOWQ5ODY2NzY4OTgzZTc1MThlMjQ3NWVhMzU4ZDlmZDg1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTc0LDYg
Kzc0LDcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBPYmplY3RJc0ludHJpbnNp
YywKICAgICBPYmplY3RLZXlzSW50cmluc2ljLAogICAgIFJlZmxlY3RHZXRQcm90b3R5cGVPZklu
dHJpbnNpYywKKyAgICBTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdEludHJpbnNpYywKICAgICBT
dHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxh
Y2VJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlUmVwbGFjZVJlZ0V4cEludHJpbnNpYywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CmluZGV4IDE2ODE5OTZhMTI5YzE1OGEzZDYxYmNmNzEzYWFkOWZmNTU1YjI4NjQuLmY4ODBkNTQ2
NGFmZDc5NTcyN2E0NjA0ZDUyMTRhMGRmYTM1NjRmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YsIHN0cmluZ1By
b3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMCwgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYyk7CiAgICAgSlND
X05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJjaGFyQXQiLCBz
dHJpbmdQcm90b0Z1bmNDaGFyQXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxLCBDaGFyQXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiY2hhckNvZGVBdCIsIHN0cmluZ1By
b3RvRnVuY0NoYXJDb2RlQXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAxLCBDaGFyQ29kZUF0SW50cmluc2ljKTsKLSAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiY29kZVBvaW50QXQiLCBzdHJpbmdQcm90b0Z1bmND
b2RlUG9pbnRBdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTigiY29kZVBvaW50QXQiLCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIFN0cmluZ1By
b3RvdHlwZUNvZGVQb2ludEF0SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTigiaW5kZXhPZiIsIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigibGFzdEluZGV4T2YiLCBzdHJp
bmdQcm90b0Z1bmNMYXN0SW5kZXhPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZXBs
YWNlVXNpbmdSZWdFeHBQcml2YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdS
ZWdFeHAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAyLCBTdHJpbmdQcm90b3R5cGVSZXBsYWNlUmVnRXhwSW50cmluc2ljKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBmODUyZGQyZjZjODA1MWY1ZjM5YjVkMTA1NWNhYzgx
MGU4OTNhMTkzLi5kZmY4YWY0M2MwYmNkMjQxN2M2NmE0MGY0MzcyNTg4N2JkMmNlMzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NDAsNiArNjQwLDggQEAgc3RhdGlj
IFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRy
aW5zaWMpCiAgICAgICAgIHJldHVybiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3I7CiAgICAgY2Fz
ZSBDaGFyQXRJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiBjaGFyQXRUaHVua0dlbmVyYXRvcjsK
KyAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0SW50cmluc2ljOgorICAgICAgICBy
ZXR1cm4gc3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcjsKICAgICBjYXNl
IENsejMySW50cmluc2ljOgogICAgICAgICByZXR1cm4gY2x6MzJUaHVua0dlbmVyYXRvcjsKICAg
ICBjYXNlIEZyb21DaGFyQ29kZUludHJpbnNpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378539</attachid>
            <date>2019-09-10 22:19:09 -0700</date>
            <delta_ts>2019-09-11 01:42:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201673-20190910221909.patch</filename>
            <type>text/plain</type>
            <size>29480</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDhiZDkxNTM3MGMyNjdhNTE1ZjE0MWY1MjdlNjlkMjFkNTVhY2Y2Li42MTQxZWI3OWYxZmNiYWY5
NGZlMzRlNDY5OTA2ZDdmYzIwMGZkNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBTdHJpbmdDb2RlUG9pbnRBdCBpbnRyaW5zaWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ29kZVBv
aW50QXQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdDaGFyTG9hZCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvdHlwZUNvZGVQb2ludEF0VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAg
IChKU0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoK
KyAgICAgICAgKEpTQzo6dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMpOgorCiAyMDE5LTA5LTEw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gMzJi
aXQgYml0d2lkZSBvcGVyYXRpb24gd2l0aCBhbGwtb25lICgtMSkgaXMgd3JvbmcgaW4gQjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCA5YjZiZjAzNTk3ODc5N2EzZTMzYTRjODQ5NTE0MDMxNDBjNTMx
ZDEzLi5jMmZlM2FiYTk1OWIwNTAyZjQ4ZjU1YTI1NTE1ZGYyOTRkN2U5ZTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0xOTA5LDYgKzE5MDksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3Ry
aW5nQ29kZVBvaW50QXQ6CiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVj
SW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggMDE3NTkyNmUyNmIyMTNkZGY1Yzg2M2RjOTEzZDc0NzlhZDRlZWE0ZC4uZDIwYmUwYTE4
NjkxYjM0YzFhZmZkOTlmMWE4MWFjMTdjNjkyYWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC0yMzksNyArMjM5LDggQEAgY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDogeworICAgICAgICBjYXNlIFN0cmluZ0NoYXJD
b2RlQXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVlKTsKICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkMigpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVl
IHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50IHwgTm9kZUJ5dGVjb2RlVXNlc0FzQXJyYXlJbmRleCk7
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMmM4MmIxZTkzYmQxZmQ1MmNlZDU1MDRhNDFiYWVjOWE1
ZDliOTM5Mi4uNzRiNjIxZWZmOWExN2ZkYzE5MDgyNGQ4OGNkNGRjZDZhZjMwN2U1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI2
MTksNiArMjYxOSwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxs
KE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZUNvZGVQ
b2ludEF0SW50cmluc2ljOiB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgIT0gMikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IGluc2VydENoZWNrcygpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNPcGVyYW5k
ID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGluZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFk
ZFRvR3JhcGgoU3RyaW5nQ29kZVBvaW50QXQsIE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6OlN0cmlu
ZywgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgZ2V0KHRoaXNPcGVyYW5kKSwgZ2V0KGluZGV4T3Bl
cmFuZCkpOworCisgICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBDaGFyQXRJbnRyaW5zaWM6IHsK
ICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKaW5kZXggYzFiN2EwYmMyMjFjZjQ4NDFjNmQ0MzFhYzRlNWNlNWFkYTFmNzFhMC4u
MzAzZjQ3OTNlM2I2NDVlODQ4YmMzNmRkMjY5YmQ4ZjBjYjY1NGRiNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE2OCw2ICsxNjgsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFs
T2JqZWN0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKKyAgICBjYXNlIFN0cmluZ0NvZGVQ
b2ludEF0OgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgU2FtZVZhbHVlOgog
ICAgIGNhc2UgSXNFbXB0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCBmYjMxMjJiN2MyNjVkM2I4ZWQxYTZhMDA2YjJkYzgyNGE1ZTU4ZDc1Li40MDcyZjkxN2U0
NWY0YTA1OTFhOGFhYzY4MzBmMGQ4MDRhNjU0NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCkBAIC0xOTIsNiArMTkyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgY2FzZSBHZXRW
ZWN0b3JMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3RyaW5n
Q29kZVBvaW50QXQ6CiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICBjYXNl
IEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZTQ1YWM1YzFlNjRjNzNmZTI2ODlj
NGUzOGU0ZWUyYjEyNWRjMzcxZC4uY2M0MWEzZDhlYzEzM2RlMDVlY2Y2OTQ4MGM1N2JiMjY4MTg2
N2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC04MzUsNyArODM1LDggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKLSAgICAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OiB7CisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKKyAg
ICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAgICAgLy8gQ3VycmVudGx5
IHdlIGhhdmUgbm8gZ29vZCB3YXkgb2YgcmVmaW5pbmcgdGhlc2UuCiAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+YXJyYXlNb2RlKCkgPT0gQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcsIEFycmF5OjpS
ZWFkKSk7CiAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBu
b2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCA2OWYwOGMxODZkNDhjZWJmNmM3NmI4OWE0ZDVkNDg0NDA3ZGIzZDBlLi42NzZk
ZjYzNjViMTUwNWE1OWU3OGRkNDZiYzI0N2FhNjVjYTI3NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtMjA5NCw2ICsyMDk0LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAg
ICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgICAgIGNh
c2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAppbmRleCA0ZDcxNTgyZTE3YTY5MWEwNThhODM0NzIyODRmNjAxOWY5N2Q4MDM5Li42ODU2
MjhiZjRmMDY1ZTZlN2NmZjdhNTcyMjg5MDBjZmJmZDI1M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zMDMsNiArMzAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBzdHJpbmcg
YWNjZXNzICovIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQ29kZUF0LCBOb2RlUmVzdWx0SW50MzIp
IFwKKyAgICBtYWNybyhTdHJpbmdDb2RlUG9pbnRBdCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAg
bWFjcm8oU3RyaW5nQ2hhckF0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTdHJpbmdGcm9t
Q2hhckNvZGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ4YTQxYjMwNzJiNzY3NjM2MTkxMDQ1M2E0ZGU0ZjVhYWVi
NTRiYWIuLjAwYWM1NWM2ZTY2OWJlNDIxN2NkZDBhNzA1MDM4N2QwZTQzMDU4NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC05MDYsNyArOTA2LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKKyAgICAgICAgY2FzZSBTdHJp
bmdDaGFyQ29kZUF0OgorICAgICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CiAgICAgICAg
ICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggY2E4YWVhMzBhMzUyNjZjNjc1NDU5YjliNWVmNTQ1MmM1MzE3NmQ1ZC4uNjgzN2UyMzVi
MzA2MjU1NzcxOGY1ZjEzMmMwNDY4MmNkOGNlYzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6
CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6
CiAgICAgICAgIHJldHVybiBub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChncmFwaCwg
bm9kZSwgc3RhdGUuZm9yTm9kZShncmFwaC5jaGlsZChub2RlLCAwKSkpOwogCiAgICAgY2FzZSBB
cnJheVB1c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDUyOGUxMTNmNzY4NmZmZTI2ZDJjYTJkMzkyNDIwNWQ3ZDU0Yjg1MDAuLjUw
NzE4NjAzYmY4ZTQ5ZjJiZjQ0Yzg0NjY3MTU1Y2VjNGRhOWYyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzkwNCw2ICsxMzkw
NCw1NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkK
ICNlbmRpZgogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29kZVBvaW50
QXQoTm9kZSogbm9kZSkKK3sKKyAgICAvLyBXZSBlbWl0IENoZWNrQXJyYXkgb24gdGhpcyBub2Rl
IGFzIHdlIGRvIGluIFN0cmluZ0NoYXJDb2RlQXQgbm9kZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIFNwZWNTdHJpbmcgaGVyZS4KKyAgICAvLyBBbmQgQ2hlY2tBcnJheSBhbHNvIGVu
c3VyZXMgdGhhdCB0aGlzIFN0cmluZyBpcyBub3QgYSByb3BlLgorICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHN0cmluZyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBTdG9yYWdlT3Bl
cmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKKworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBzdHJpbmcu
Z3ByKCk7CisgICAgR1BSUmVnIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CisgICAgR1BSUmVnIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0
Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworICAg
IEdQUlJlZyBzY3JhdGNoM0dQUiA9IHNjcmF0Y2gzLmdwcigpOworCisgICAgbV9qaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RyaW5nR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1
ZSgpKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaDFHUFIsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwgc2NyYXRj
aDJHUFIpOworCisgICAgLy8gdW5zaWduZWQgY29tcGFyaXNvbiBzbyB3ZSBjYW4gZmlsdGVyIG91
dCBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgc2NyYXRjaDJHUFIpKTsK
KworICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBpbnRvIHNjcmF0Y2gxR1BSCisgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olpl
cm8sIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKKworICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKKworICAgIG1faml0LmxvYWQ4KENDYWxsSGVs
cGVyczo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVz
T25lLCAwKSwgc2NyYXRjaDFHUFIpOworICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisK
KyAgICBpczE2Qml0LmxpbmsoJm1faml0KTsKKworICAgIG1faml0LmxvYWQxNihDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgQ0NhbGxIZWxwZXJzOjpUaW1lc1R3
bywgMCksIHNjcmF0Y2gxR1BSKTsKKyAgICAvLyBUaGlzIGlzIG9rLiBpbmRleEdQUiBtdXN0IGJl
IHBvc2l0aXZlIGludDMyX3QgaGVyZSBhbmQgYWRkaW5nIDEgbmV2ZXIgY2F1c2VzIG92ZXJmbG93
IGlmIHdlIHRyZWF0IGluZGV4R1BSIGFzIHVpbnQzMl90LgorICAgIG1faml0LmFkZDMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgc2NyYXRjaDNHUFIpOworICAgIGRv
bmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBzY3Jh
dGNoM0dQUiwgc2NyYXRjaDJHUFIpKTsKKyAgICBtX2ppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICBk
b25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNo
MkdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkODAwKSkpOworICAgIG1faml0Lmxv
YWQxNihDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoM0dQUiwgQ0Nh
bGxIZWxwZXJzOjpUaW1lc1R3bywgMCksIHNjcmF0Y2gzR1BSKTsKKyAgICBtX2ppdC5hbmQzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgc2NyYXRjaDNHUFIsIHNjcmF0
Y2gyR1BSKTsKKyAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLCBzY3JhdGNoMkdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkYzAwKSkp
OworICAgIG1faml0LmxzaGlmdDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEwKSwgc2Ny
YXRjaDFHUFIpOworICAgIG1faml0LmdldEVmZmVjdGl2ZUFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpC
YXNlSW5kZXgoc2NyYXRjaDFHUFIsIHNjcmF0Y2gzR1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVzT25l
LCAtVTE2X1NVUlJPR0FURV9PRkZTRVQpLCBzY3JhdGNoMUdQUik7CisgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisKKyAgICBpbnQzMlJlc3VsdChzY3JhdGNoMUdQUiwgbV9jdXJyZW50Tm9kZSk7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZjk5MWRkMjAxNjI0ZTYwM2Iy
MWVkNzNkZDAzYzUzYzNiNzMxYWRlMi4uNTg0YTQ5ZDE5YjJmOTQ4ZjgyZTFiZGNiODNkNmZmMzZh
OGRkMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMTQ5Myw2ICsxNDkzLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZv
aWQgY29tcGlsZUV4dHJhY3RDYXRjaExvY2FsKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDbGVh
ckNhdGNoTG9jYWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQcm9maWxlVHlwZShOb2RlKik7
CisgICAgdm9pZCBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQoTm9kZSopOwogCiAgICAgdm9pZCBt
b3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggMDljZjA5ODQ2OThiOWY3OTM3NmYwNTY0MTdlNTcxNjAzOWFlNTZkYi4uYWQ2ZGViOTRk
MmIzZTEzNTZmN2IzZjhkZjM3NTU2NzQxMzEzZDA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMTk5LDYgKzIx
OTksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OiB7CisgICAgICAg
IGNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6IHsKICAgICAgICAgLy8gUmVsaWVzIG9uIFN0cmluZ0No
YXJBdCBub2RlIGhhdmluZyBzYW1lIGJhc2ljIGxheW91dCBhcyBHZXRCeVZhbAogICAgICAgICBj
b21waWxlR2V0QnlWYWxPblN0cmluZyhub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGYxZjA0YzNjOTg3NWE2MzE2NWE2
MjhmZjlmMWNlZGI1ZmM3MDZiMzYuLmY0NGRlMjQ2MDAzZDQ0ZDRlNjgxZDgyMzk2ZTI3Zjg1NTc4
MjM5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtMjM0Myw2ICsyMzQzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTdHJp
bmdDb2RlUG9pbnRBdDogeworICAgICAgICBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7CiAgICAg
ICAgIC8vIFJlbGllcyBvbiBTdHJpbmdDaGFyQXQgbm9kZSBoYXZpbmcgc2FtZSBiYXNpYyBsYXlv
dXQgYXMgR2V0QnlWYWwKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggODQ1
YzQxN2VjZGIxNGJmNTBhNDVmNWU4ZTA5ZTNhZTIzOTlmOWQ4MC4uMTk4OTQ3ODczMDc5NDkzZjg5
YTVlNDM1M2I4Y2U1ZTRiODdjYmI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTU5LDYgKzE1OSw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDoK
ICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNh
c2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6CiAgICAg
Y2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggM2MxZjI4OGI2YmVlMjFlNGEyNmY1NDE1YjNjYjJjYmYwNjg4OTQ1YS4uOGNkODc2
MzM2MzNmM2E3NDVhNTFmMjU5ZDk3NzZhZTBhZWIwYThkMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTExMyw2ICsxMTEzLDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAg
ICAgICAgY29tcGlsZVN0cmluZ0NoYXJDb2RlQXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgorICAgICAgICAgICAgY29tcGlsZVN0cmluZ0Nv
ZGVQb2ludEF0KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdGcm9t
Q2hhckNvZGU6CiAgICAgICAgICAgICBjb21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTcxMzEsNiArNzEzNCw2NCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBzZXRJbnQzMihtX291dC5waGkoSW50MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQp
KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdCgpCisgICAgewor
ICAgICAgICBMQmFzaWNCbG9jayBpczhCaXQgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBpczE2Qml0ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgaXNMZWFkID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbWF5SGF2
ZVRyYWlsID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgdHJhaWwgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93U3RyaW5nKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hpbGQz
KCkpOworCisgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihiYXNlLCBt
X2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lmxv
YWQzMk5vbk5lZ2F0aXZlKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9sZW5ndGgpOwor
CisgICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAwLCBtX291dC5hYm92
ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworCisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAg
ICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIo
c3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksCisgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSwKKyAgICAg
ICAgICAgIHVuc3VyZShpczE2Qml0KSwgdW5zdXJlKGlzOEJpdCkpOworCisgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXM4Qml0LCBpczE2Qml0KTsKKyAgICAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gY2FnZSBzdHJpbmdzIQorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTI0CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGNoYXI4Qml0ID0gbV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgbV9vdXQubG9hZDhaZXJv
RXh0MzIobV9vdXQuYmFzZUluZGV4KAorICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVy
czgsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpLAorICAgICAgICAgICAgICAgIHBy
b3ZlblZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXMxNkJpdCwgaXNMZWFkKTsKKyAg
ICAgICAgTFZhbHVlIGxlYWRDaGFyYWN0ZXIgPSBtX291dC5sb2FkMTZaZXJvRXh0MzIobV9vdXQu
YmFzZUluZGV4KG1faGVhcHMuY2hhcmFjdGVyczE2LCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRy
KGluZGV4KSwgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgY2hhcjE2Qml0ID0gbV9vdXQuYW5jaG9yKGxlYWRDaGFyYWN0ZXIpOworICAgICAg
ICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuYWRkKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5hYm92ZU9yRXF1YWwobmV4dEluZGV4LCBsZW5ndGgp
LCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGlzTGVhZCkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGlzTGVhZCwgbWF5SGF2ZVRyYWlsKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0Lm5vdEVxdWFsKG1fb3V0LmJpdEFuZChsZWFkQ2hhcmFjdGVyLCBtX291dC5jb25zdEludDMy
KDB4ZmZmZmZjMDApKSwgbV9vdXQuY29uc3RJbnQzMigweGQ4MDApKSwgdW5zdXJlKGNvbnRpbnVh
dGlvbiksIHVuc3VyZShtYXlIYXZlVHJhaWwpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyht
YXlIYXZlVHJhaWwsIHRyYWlsKTsKKyAgICAgICAgSlNWYWx1ZSBpbmRleFZhbHVlID0gcHJvdmVu
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWUgbmV4dEluZGV4VmFsdWU7
CisgICAgICAgIGlmIChpbmRleFZhbHVlICYmIGluZGV4VmFsdWUuaXNJbnQzMigpICYmIGluZGV4
VmFsdWUuYXNJbnQzMigpICE9IElOVDMyX01BWCkKKyAgICAgICAgICAgIG5leHRJbmRleFZhbHVl
ID0ganNOdW1iZXIoaW5kZXhWYWx1ZS5hc0ludDMyKCkgKyAxKTsKKyAgICAgICAgTFZhbHVlIHRy
YWlsQ2hhcmFjdGVyID0gbV9vdXQubG9hZDE2WmVyb0V4dDMyKG1fb3V0LmJhc2VJbmRleChtX2hl
YXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihuZXh0SW5kZXgpLCBu
ZXh0SW5kZXhWYWx1ZSkpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwobV9v
dXQuYml0QW5kKHRyYWlsQ2hhcmFjdGVyLCBtX291dC5jb25zdEludDMyKDB4ZmZmZmZjMDApKSwg
bV9vdXQuY29uc3RJbnQzMigweGRjMDApKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZSh0
cmFpbCkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHRyYWlsLCBjb250aW51YXRpb24pOwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFyU3Vycm9nYXRlUGFpciA9IG1fb3V0LmFuY2hvciht
X291dC5zdWIobV9vdXQuYWRkKG1fb3V0LnNobChsZWFkQ2hhcmFjdGVyLCBtX291dC5jb25zdElu
dDMyKDEwKSksIHRyYWlsQ2hhcmFjdGVyKSwgbV9vdXQuY29uc3RJbnQzMihVMTZfU1VSUk9HQVRF
X09GRlNFVCkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRJbnQz
MihtX291dC5waGkoSW50MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQsIGNoYXJTdXJyb2dhdGVQYWly
KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKCkKICAgICB7
CiAgICAgICAgIEVkZ2UgY2hpbGRFZGdlID0gbV9ub2RlLT5jaGlsZDEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMGFlNGQ1MGNkMjY0NDc1YTYwZGM3MDc5MjRl
ZjkwOWRiNDI0YzdiZC4uZjEzMDAyYjQwZjAyN2ZkNzM3NzEwYjQyMTFhNzZkMThhOGRiNWVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTk3LDE2ICs5NywxNSBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsCiAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzcmMsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBkc3QpOwogICAgIGZhaWx1cmVz
LmFwcGVuZChicmFuY2hJZlJvcGVTdHJpbmdJbXBsKGRzdCkpOwogICAgIGZhaWx1cmVzLmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJ
bXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIFRydXN0ZWRJbW0zMigxKSkpOwotICAgIGxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgp
KSwgcmVnVDEpOwotICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJp
bmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBkc3QpOworICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCByZWdUMSk7CiAKICAgICBK
dW1wTGlzdCBpczE2Qml0OwogICAgIEp1bXBMaXN0IGNvbnQ4Qml0OwotICAgIGlzMTZCaXQuYXBw
ZW5kKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMSwgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZs
YWdJczhCaXQoKSkpKTsKLSAgICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkc3QsIDAp
LCBkc3QpOworICAgIGlzMTZCaXQuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBBZGRyZXNzKGRz
dCwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpm
bGFnSXM4Qml0KCkpKSk7CisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVnVDEs
IDApLCBkc3QpOwogICAgIGNvbnQ4Qml0LmFwcGVuZChqdW1wKCkpOwogICAgIGlzMTZCaXQubGlu
ayh0aGlzKTsKLSAgICBsb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCAwKSwgZHN0
KTsKKyAgICBsb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVnVDEsIDApLCBkc3QpOwog
ICAgIGNvbnQ4Qml0LmxpbmsodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCBiMDcwOWUzMWRmYzU5ZWZiNTU5YTE2MmM1ZmQ4
NmQwMWUxMDFjNjYzLi4yNWNkNWNiMWY3ZWZkODE5NjA4N2Y5NzRjNmNhY2JkOTI1OTk2ZDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC02
NzIsNyArNjcyLDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVu
a0pJVCYgaml0KQogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlzMTZCaXQ7CiAg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CiAgICAgLy8gTG9hZCB0
aGUgc3RyaW5nIGZsYWdzCi0gICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5nSW1wbDo6ZmxhZ3NP
ZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKICAgICBqaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5n
SW1wbDo6ZGF0YU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGlz
MTZCaXQuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmlu
Z0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKICAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKQEAgLTcxNyw2ICs3MTcsNTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJu
IGppdC5maW5hbGl6ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNo
YXJDb2RlIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc3Ry
aW5nUHJvdG90eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCit7CisgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOworCisgICAgLy8gbG9hZCBzdHJpbmcKKyAgICBq
aXQubG9hZEpTU3RyaW5nQXJndW1lbnQoU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGhpc0FyZ3VtZW50
LCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisKKyAgICAvLyBMb2FkIHN0cmluZyBsZW5n
dGggdG8gcmVnVDMsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBv
aW50ZXIgaW50byByZWdUMgorICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5i
cmFuY2hJZlJvcGVTdHJpbmdJbXBsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKSk7CisgICAg
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMyk7CisKKyAgICAvLyBsb2FkIGluZGV4CisgICAgaml0LmxvYWRJbnQzMkFyZ3Vt
ZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsgLy8gcmVnVDEgY29udGFpbnMgdGhl
IGluZGV4CisKKyAgICAvLyBEbyBhbiB1bnNpZ25lZCBjb21wYXJlIHRvIHNpbXVsdGFuZW91c2x5
IGZpbHRlciBuZWdhdGl2ZSBpbmRpY2VzIGFzIHdlbGwgYXMgaW5kaWNlcyB0aGF0IGFyZSB0b28g
bGFyZ2UKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QzKSk7CisKKyAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIKKyAgICBTcGVjaWFs
aXplZFRodW5rSklUOjpKdW1wTGlzdCBpczE2Qml0OworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6
Okp1bXBMaXN0IGNvbnQ4Qml0OworICAgIC8vIExvYWQgdGhlIHN0cmluZyBmbGFncworICAgIGpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
Mik7CisgICAgaXMxNkJpdC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKKyAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICBjb250OEJpdC5hcHBlbmQoaml0Lmp1bXAoKSk7CisKKyAgICBp
czE2Qml0LmxpbmsoJmppdCk7CisgICAgaml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDApOworICAgIC8vIE9yaWdpbmFsIGluZGV4IGlzIGludDMyX3QsIGFuZCBoZXJlLCB3ZSBlbnN1
cmUgdGhhdCBpdCBpcyBwb3NpdGl2ZS4gSWYgd2UgaW50ZXJwcmV0IGl0IGFzIHVpbnQzMl90LCBh
ZGRpbmcgMSBuZXZlciBvdmVyZmxvd3MuCisgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDEpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7CisgICAgY29udDhCaXQu
YXBwZW5kKGppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpKTsKKyAgICBq
aXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhmZmZmZmMwMCksIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAgY29u
dDhCaXQuYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkODAwKSkp
OworICAgIGppdC5sb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc1R3bywgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKKyAgICBqaXQuYW5k
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhmZmZmZmMwMCksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAgY29udDhCaXQu
YXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkYzAwKSkpOworICAg
IGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxMCksIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgLVUxNl9TVVJST0dBVEVfT0ZG
U0VUKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGNvbnQ4Qml0LmxpbmsoJmpp
dCk7CisKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwor
ICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZt
KSwgImNvZGVQb2ludEF0Iik7Cit9CisKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gY2x6MzJUaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgU3BlY2lhbGl6ZWRUaHVu
a0pJVCBqaXQodm0sIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmgKaW5kZXggOTE1MzgyMTIwYWU3NjMwZmZiMmVhZWY4Y2UyNmRhZDcxNWQ5MGE2My4uZjli
M2M4Y2M2N2FhZTJiY2UxMjkwOTA5Y2M1MWNjMWRkYTQxNDFjNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC01NSw2ICs1NSw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc3RyaW5nR2V0QnlWYWxHZW5lcmF0b3IoVk0m
KTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGFyQ29kZUF0VGh1
bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hhckF0VGh1bmtHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcihWTSYpOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjbHozMlRodW5rR2VuZXJhdG9y
KFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZyb21DaGFyQ29k
ZVRodW5rR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGFic1RodW5rR2VuZXJhdG9yKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmNwcAppbmRleCBmYmM0ZWYzY2Q4ZjJlYzYyZGE5MzAwZGEyNzFiMTAyMzM5
NzQzNGZjLi5hMTJhMjQwNTVjNzI5MGEzYTFjOTU2ZjZhYjRlNzYzN2Y4N2ZiYjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTEyMyw2ICsxMjMs
OCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAg
ICAgIHJldHVybiAiT2JqZWN0S2V5c0ludHJpbnNpYyI7CiAgICAgY2FzZSBSZWZsZWN0R2V0UHJv
dG90eXBlT2ZJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiUmVmbGVjdEdldFByb3RvdHlwZU9m
SW50cmluc2ljIjsKKyAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0SW50cmluc2lj
OgorICAgICAgICByZXR1cm4gIlN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0SW50cmluc2ljIjsK
ICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWM6CiAgICAgICAgIHJldHVy
biAiU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBTdHJpbmdQcm90
b3R5cGVSZXBsYWNlSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaAppbmRleCA5M2QzNjQzY2FlOGNhZmFhOGE4NThlMDYyZWMxNTYwODkwMDM1MjkyLi5l
NTFiODM5ZDk4NjY3Njg5ODNlNzUxOGUyNDc1ZWEzNThkOWZkODUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtNzQsNiArNzQsNyBAQCBlbnVtIEludHJp
bnNpYyA6IHVpbnQ4X3QgewogICAgIE9iamVjdElzSW50cmluc2ljLAogICAgIE9iamVjdEtleXNJ
bnRyaW5zaWMsCiAgICAgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAorICAgIFN0cmlu
Z1Byb3RvdHlwZUNvZGVQb2ludEF0SW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVZhbHVl
T2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYywKICAgICBT
dHJpbmdQcm90b3R5cGVSZXBsYWNlUmVnRXhwSW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMTY4MTk5NmExMjlj
MTU4YTNkNjFiY2Y3MTNhYWQ5ZmY1NTViMjg2NC4uZjg4MGQ1NDY0YWZkNzk1NzI3YTQ2MDRkNTIx
NGEwZGZhMzU2NGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBTdHJpbmdQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTdHIKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVPZiwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBTdHJp
bmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNoYXJBdCIsIHN0cmluZ1Byb3RvRnVuY0NoYXJB
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEs
IENoYXJBdEludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKCJjaGFyQ29kZUF0Iiwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIENo
YXJDb2RlQXRJbnRyaW5zaWMpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKCJjb2RlUG9pbnRBdCIsIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlND
X05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJjb2RlUG9pbnRB
dCIsIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRJ
bnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJp
bmRleE9mIiwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIsIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRl
eE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcGxhY2VVc2luZ1JlZ0V4cFByaXZh
dGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIsIFN0cmluZ1Byb3RvdHlw
ZVJlcGxhY2VSZWdFeHBJbnRyaW5zaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IGY4NTJkZDJmNmM4MDUxZjVmMzliNWQxMDU1Y2FjODEwZTg5M2ExOTMuLmRmZjhhZjQz
YzBiY2QyNDE3YzY2YTQwZjQzNzI1ODg3YmQyY2UzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTY0MCw2ICs2NDAsOCBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1
bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0
dXJuIGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcjsKICAgICBjYXNlIENoYXJBdEludHJpbnNpYzoK
ICAgICAgICAgcmV0dXJuIGNoYXJBdFRodW5rR2VuZXJhdG9yOworICAgIGNhc2UgU3RyaW5nUHJv
dG90eXBlQ29kZVBvaW50QXRJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiBzdHJpbmdQcm90b3R5
cGVDb2RlUG9pbnRBdFRodW5rR2VuZXJhdG9yOwogICAgIGNhc2UgQ2x6MzJJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiBjbHozMlRodW5rR2VuZXJhdG9yOwogICAgIGNhc2UgRnJvbUNoYXJDb2Rl
SW50cmluc2ljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378546</attachid>
            <date>2019-09-11 01:42:19 -0700</date>
            <delta_ts>2019-09-11 09:26:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201673-20190911014218.patch</filename>
            <type>text/plain</type>
            <size>42086</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjMyZGI3ZGNjMTYwN2I0Y2VmM2Y2YTEyOTAxYWRkODMzMWI3YzJjLi44OGM5NzVmOTViNjhkMjg2
OWQyNWNmMGRlYjljY2RkNjUzZGIxMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxOS0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBTdHJpbmdDb2RlUG9pbnRBdCBpbnRyaW5zaWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpldFN0cmVhbTIvVW5p
UG9rZXIgZXhlY3V0ZXMgU3RyaW5nI2NvZGVQb2ludEF0IGZyZXF1ZW50bHkuIFdlIHNob3VsZCBo
YW5kbGUgaXQgaW4gVGh1bmtHZW5lcmF0b3IsIERGRywgYW5kIEZUTCBsaWtlIHdlIGFyZSBkb2lu
ZyBzbyBmb3IgU3RyaW5nI2NoYXJDb2RlQXQuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGVz
ZSBzdXBwb3J0cyBmb3IgU3RyaW5nI2NvZGVQb2ludEF0IHRvIGdldCB+MTAlIHNjb3JlIGltcHJv
dmVtZW50IGluIEpldFN0cmVhbTIvVW5pUG9rZXIuCisKKyAgICAgICAgSW4gVGh1bmtHZW5lcmF0
b3IsIHdlIGFkZCBhIHRodW5rIGZvciBTdHJpbmcjY29kZVBvaW50QXQsIHdoaWNoIGFjY2VsZXJh
dGVzIExMSW50IGFuZCBCYXNlbGluZS4gSW4gREZHLCB3ZSBoYW5kbGUgdGhpcyBhcyBTdHJpbmdD
b2RlUG9pbnRBdCBub2RlLCBhbmQgZW1pdAorICAgICAgICBpbmxpbmVkIGNvZGUgaW4gREZHIGFu
ZCBGVEwuIFRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgU3RyaW5nQ29kZVBvaW50QXQgbm9kZSBpcyBi
YXNpY2FsbHkgdGhlIHNhbWUgdG8gU3RyaW5nQ2hhckF0LiBJdCBoYXMgU3RyaW5nIGFycmF5LW1v
ZGUsIHNvIGl0IGVtaXRzCisgICAgICAgIHByZWNlZGluZyBDaGVja0FycmF5LiBUaGlzIGVuc3Vy
ZXMgdGhhdCAoMSkgU3RyaW5nQ29kZVBvaW50QXQgbm9kZSBpdHNlbGYgZG9lcyBub3QgZG8gR0Mg
c2luY2UgdGhlIHN0cmluZyBpcyBhbHdheXMgcmVzb2x2ZWQsIGFuZCAoMikgd2UgY2FuIHNraXAg
dGhlIHJvcGUKKyAgICAgICAgY2hlY2suIFRoaXMgdGhpbmcgaXMganVzdCB0aGUgc2FtZSB0byB0
aGUgZXhpc3RpbmcgU3RyaW5nQ2hhckNvZGVBdCBtZWNoYW5pc20uCisKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KToKKyAgICAgICAgKiBmdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdHZXRC
eVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnN0cmluZ0NoYXJMb2FkKToKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcik6CisgICAgICAg
ICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNw
cDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRy
aW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyk6CisK
IDIwMTktMDktMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IENhbnZhczogaW5zdHJ1bWVudCBXZWJHUFVEZXZpY2UgaW5zdGVhZCBv
ZiBHUFVDYW52YXNDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWI2YmYwMzU5Nzg3OTdh
M2UzM2E0Yzg0OTUxNDAzMTQwYzUzMWQxMy4uYzJmZTNhYmE5NTliMDUwMmY0OGY1NWEyNTUxNWRm
Mjk0ZDdlOWUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTkwOSw2ICsxOTA5LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nQ2hh
ckNvZGVBdDoKKyAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgICAgICBzZXROb25DZWxs
VHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDAxNzU5MjZlMjZiMjEzZGRmNWM4NjNkYzkxM2Q3
NDc5YWQ0ZWVhNGQuLjdmM2EyYTU2ZDFjZDYzOTYwYTc3YmNmZDU5NDhlYmM0MmIxNzMyYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMjM5LDcgKzIzOSw5IEBAIGNsYXNzIEJhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKKyAg
ICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
KyAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAgICAgbm9kZS0+Y2hp
bGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOwogICAgICAgICAgICAg
bm9kZS0+Y2hpbGQyKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUgfCBOb2Rl
Qnl0ZWNvZGVVc2VzQXNJbnQgfCBOb2RlQnl0ZWNvZGVVc2VzQXNBcnJheUluZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMzkwLDEyICszOTIsNiBAQCBjbGFzcyBCYWNrd2FyZHNQcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6IHsKLSAgICAgICAgICAg
IG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVlKTsKLSAg
ICAgICAgICAgIG5vZGUtPmNoaWxkMigpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1Zh
bHVlIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50IHwgTm9kZUJ5dGVjb2RlVXNlc0FzQXJyYXlJbmRl
eCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgVG9TdHJpbmc6CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOiB7CiAg
ICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNO
dW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDJjODJiMWU5M2JkMWZkNTJjZWQ1
NTA0YTQxYmFlYzlhNWQ5YjkzOTIuLjQwMTdmMzQzYThkMzU0MzkwMmZjMzcxZjY5NTljNWFiZTM3
MmExMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC0yNjEwLDYgKzI2MTAsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAg
ICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgVW5jb3VudGFibGUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tz
KCk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc09wZXJhbmQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgaW5kZXhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpOwpAQCAtMjYxOSwxMCArMjYyMiwzMyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgSQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNl
IFN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0SW50cmluc2ljOiB7CisgICAgICAgICAgICBpZiAo
IWlzNjRCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIFVuY291bnRhYmxlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGluZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zm
c2V0KTsKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFkZFRvR3JhcGgoU3RyaW5nQ29kZVBv
aW50QXQsIE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6OlN0cmluZywgQXJyYXk6OlJlYWQpLmFzV29y
ZCgpKSwgZ2V0KHRoaXNPcGVyYW5kKSwgZ2V0KGluZGV4T3BlcmFuZCkpOworCisgICAgICAgICAg
ICBzZXRSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBDaGFyQXRJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFN0cmluZyNjaGFyQXQgcmV0dXJucyBlbXB0eSBz
dHJpbmcgd2hlbiBpbmRleCBpcyBvdXQtb2YtYm91bmRzLCBhbmQgdGhpcyBkb2VzIG5vdCBicmVh
ayB0aGUgQUkncyBjbGFpbS4KKyAgICAgICAgICAgIC8vIE9ubHkgRlRMIHN1cHBvcnRzIG91dC1v
Zi1ib3VuZHMgdmVyc2lvbiBub3cuIFdlIHNob3VsZCBzdXBwb3J0IG91dC1vZi1ib3VuZHMgdmVy
c2lvbiBldmVuIGluIERGRy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE2NzgKKwogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc09wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgaW5kZXhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBj
MWI3YTBiYzIyMWNmNDg0MWM2ZDQzMWFjNGU1Y2U1YWRhMWY3MWEwLi4zMDNmNDc5M2UzYjY0NWU4
NDhiYzM2ZGQyNjliZDhmMGNiNjU0ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgY2Fz
ZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBTYW1lVmFsdWU6CiAgICAgY2FzZSBJc0VtcHR5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGZiMzEyMmI3YzI2
NWQzYjhlZDFhNmEwMDZiMmRjODI0YTVlNThkNzUuLjQwNzJmOTE3ZTQ1ZjRhMDU5MWE4YWFjNjgz
MGYwZDgwNGE2NTQ3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
QEAgLTE5Miw2ICsxOTIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CisgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCBlNDVhYzVjMWU2NGM3M2ZlMjY4OWM0ZTM4ZTRlZTJiMTI1ZGMz
NzFkLi5jYzQxYTNkOGVjMTMzZGUwNWVjZjY5NDgwYzU3YmIyNjgxODY3ZTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTgzNSw3ICs4MzUsOCBA
QCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgotICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6IHsKKyAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgICAgICBjYXNlIFN0cmlu
Z0NvZGVQb2ludEF0OiB7CiAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgaGF2ZSBubyBnb29k
IHdheSBvZiByZWZpbmluZyB0aGVzZS4KICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1v
ZGUoKSA9PSBBcnJheU1vZGUoQXJyYXk6OlN0cmluZywgQXJyYXk6OlJlYWQpKTsKICAgICAgICAg
ICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBu
b2RlLT5jaGlsZDMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDY5ZjA4
YzE4NmQ0OGNlYmY2Yzc2Yjg5YTRkNWQ0ODQ0MDdkYjNkMGUuLjY3NmRmNjM2NWIxNTA1YTU5ZTc4
ZGQ0NmJjMjQ3YWE2NWNhMjc2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0yMDk0LDYgKzIwOTQsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6
CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgICAgIGNhc2UgQ2hlY2tB
cnJheToKICAgICAgICAgY2FzZSBBcnJheWlmeToKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3Ry
dWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDRkNzE1
ODJlMTdhNjkxYTA1OGE4MzQ3MjI4NGY2MDE5Zjk3ZDgwMzkuLjY4NTYyOGJmNGYwNjVlNmU3Y2Zm
N2E1NzIyODkwMGNmYmZkMjUzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTMwMyw2ICszMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgXAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIHN0cmluZyBhY2Nlc3MgKi8gXAogICAg
IG1hY3JvKFN0cmluZ0NoYXJDb2RlQXQsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKFN0
cmluZ0NvZGVQb2ludEF0LCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhTdHJpbmdDaGFy
QXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFN0cmluZ0Zyb21DaGFyQ29kZSwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggNDhhNDFiMzA3MmI3Njc2MzYxOTEwNDUzYTRkZTRmNWFhZWI1NGJhYi4uMDBhYzU1YzZl
NjY5YmU0MjE3Y2RkMGE3MDUwMzg3ZDBlNDMwNTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTkwNiw3ICs5MDYsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNh
c2UgU3RyaW5nQ2hhckNvZGVBdDogeworICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6Cisg
ICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBjYThhZWEzMGEz
NTI2NmM2NzU0NTliOWI1ZWY1NDUyYzUzMTc2ZDVkLi42ODM3ZTIzNWIzMDYyNTU3NzE4ZjVmMTMy
YzA0NjgyY2Q4Y2VjOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaApAQCAtNTI2LDYgKzUyNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBBcnJheVBvcDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICBjYXNlIFN0cmlu
Z0NoYXJDb2RlQXQ6CisgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICAgICAgcmV0dXJu
IG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKGdyYXBoLCBub2RlLCBzdGF0ZS5mb3JO
b2RlKGdyYXBoLmNoaWxkKG5vZGUsIDApKSk7CiAKICAgICBjYXNlIEFycmF5UHVzaDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmOTkxZGQy
MDE2MjRlNjAzYjIxZWQ3M2RkMDNjNTNjM2I3MzFhZGUyLi41ODRhNDlkMTliMmY5NDhmODJlMWJk
Y2I4M2Q2ZmYzNmE4ZGQyZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDkzLDYgKzE0OTMsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJ
VCB7CiAgICAgdm9pZCBjb21waWxlRXh0cmFjdENhdGNoTG9jYWwoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUNsZWFyQ2F0Y2hMb2NhbHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVByb2ZpbGVU
eXBlKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChOb2RlKik7CiAK
ICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJl
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCAwOWNmMDk4NDY5OGI5Zjc5Mzc2ZjA1NjQxN2U1NzE2MDM5YWU1NmRi
Li41NGQzMzkyMzJiOWZiNDQyZmNmYmUwMDFjMmRkNTcwYjYzZThlZDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTQxOTgsNiArNDE5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoK
ICAgICBjYXNlIERhdGFWaWV3U2V0OgorICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAidW5leHBlY3RlZCBub2RlIGluIERG
RyBiYWNrZW5kIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGYxZjA0YzNjOTg3NWE2
MzE2NWE2MjhmZjlmMWNlZGI1ZmM3MDZiMzYuLmVlYzIxMGU3OTY1YjJkNjA4ODczMWZhMmVhZTZk
ODA1MTgzODI2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtMjM0Myw2ICsyMzQzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDogeworICAgICAgICBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7
CiAgICAgICAgIC8vIFJlbGllcyBvbiBTdHJpbmdDaGFyQXQgbm9kZSBoYXZpbmcgc2FtZSBiYXNp
YyBsYXlvdXQgYXMgR2V0QnlWYWwKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9k
ZSk7CkBAIC01MjY3LDYgKzUyNzIsNTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoUmFuZG9tKE5vZGUqIG5vZGUpCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChO
b2RlKiBub2RlKQoreworICAgIC8vIFdlIGVtaXQgQ2hlY2tBcnJheSBvbiB0aGlzIG5vZGUgYXMg
d2UgZG8gaW4gU3RyaW5nQ2hhckNvZGVBdCBub2RlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8g
Y2hlY2sgU3BlY1N0cmluZyBoZXJlLgorICAgIC8vIEFuZCBDaGVja0FycmF5IGFsc28gZW5zdXJl
cyB0aGF0IHRoaXMgU3RyaW5nIGlzIG5vdCBhIHJvcGUuCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgc3RyaW5nKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQz
Mk9wZXJhbmQgaW5kZXgodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIFN0b3JhZ2VPcGVyYW5k
IHN0b3JhZ2UodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
MSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gzKHRoaXMpOworCisgICAgR1BSUmVnIHN0cmluZ0dQUiA9IHN0cmluZy5ncHIo
KTsKKyAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKyAgICBHUFJSZWcgc3RvcmFn
ZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEu
Z3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisgICAgR1BS
UmVnIHNjcmF0Y2gzR1BSID0gc2NyYXRjaDMuZ3ByKCk7CisKKyAgICBtX2ppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHJpbmdHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkp
LCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCBzY3JhdGNoMkdQ
Uik7CisKKyAgICAvLyB1bnNpZ25lZCBjb21wYXJpc29uIHNvIHdlIGNhbiBmaWx0ZXIgb3V0IG5l
Z2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdlCisgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBzY3JhdGNoMkdQUikpOworCisg
ICAgLy8gTG9hZCB0aGUgY2hhcmFjdGVyIGludG8gc2NyYXRjaDFHUFIKKyAgICBhdXRvIGlzMTZC
aXQgPSBtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSk7CisKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGRvbmU7CisKKyAgICBtX2ppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChz
dG9yYWdlR1BSLCBpbmRleEdQUiwgQ0NhbGxIZWxwZXJzOjpUaW1lc09uZSwgMCksIHNjcmF0Y2gx
R1BSKTsKKyAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgaXMxNkJpdC5saW5r
KCZtX2ppdCk7CisgICAgbV9qaXQubG9hZDE2KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHN0b3Jh
Z2VHUFIsIGluZGV4R1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVzVHdvLCAwKSwgc2NyYXRjaDFHUFIp
OworICAgIC8vIFRoaXMgaXMgb2suIGluZGV4R1BSIG11c3QgYmUgcG9zaXRpdmUgaW50MzJfdCBo
ZXJlIGFuZCBhZGRpbmcgMSBuZXZlciBjYXVzZXMgb3ZlcmZsb3cgaWYgd2UgdHJlYXQgaW5kZXhH
UFIgYXMgdWludDMyX3QuCisgICAgbV9qaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMSksIGluZGV4R1BSLCBzY3JhdGNoM0dQUik7CisgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2gzR1BSLCBzY3JhdGNoMkdQ
UikpOworICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZmZmZmZj
MDApLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpOworICAgIGRvbmUuYXBwZW5kKG1faml0LmJy
YW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gyR1BSLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweGQ4MDApKSk7CisgICAgbV9qaXQubG9hZDE2KENDYWxsSGVscGVyczo6
QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHNjcmF0Y2gzR1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVzVHdv
LCAwKSwgc2NyYXRjaDNHUFIpOworICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDB4ZmZmZmZjMDApLCBzY3JhdGNoM0dQUiwgc2NyYXRjaDJHUFIpOworICAgIGRvbmUu
YXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gyR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRjMDApKSk7CisgICAgbV9qaXQubHNoaWZ0
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTApLCBzY3JhdGNoMUdQUik7CisgICAgbV9q
aXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoMUdQ
Uiwgc2NyYXRjaDNHUFIsIENDYWxsSGVscGVyczo6VGltZXNPbmUsIC1VMTZfU1VSUk9HQVRFX09G
RlNFVCksIHNjcmF0Y2gxR1BSKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKworICAgIGludDMy
UmVzdWx0KHNjcmF0Y2gxR1BSLCBtX2N1cnJlbnROb2RlKTsKK30KKwogI2VuZGlmCiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCA4NDVjNDE3ZWNkYjE0YmY1MGE0NWY1ZThlMDllM2FlMjM5OWY5
ZDgwLi4xOTg5NDc4NzMwNzk0OTNmODlhNWU0MzUzYjhjZTVlNGI4N2NiYjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNTksNiArMTU5
LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDaGVja1N0cmluZ0lkZW50OgogICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CisgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIFN0
cmluZ0Zyb21DaGFyQ29kZToKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAg
IGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzYzFmMjg4YjZiZWUyMWU0YTI2ZjU0MTVi
M2NiMmNiZjA2ODg5NDVhLi40YTM1ZDFiM2IwZGNmMDhmZDAyNTE4NjViOTkyMDQxMDMzMTkyMDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xMTEzLDYgKzExMTMsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgICAgICBjb21waWxlU3RyaW5nQ2hhckNvZGVBdCgpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CisgICAg
ICAgICAgICBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZToKICAgICAgICAgICAgIGNvbXBpbGVTdHJp
bmdGcm9tQ2hhckNvZGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzEzMSw2ICs3MTM0LDY0
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQz
MiwgY2hhcjhCaXQsIGNoYXIxNkJpdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZVN0cmlu
Z0NvZGVQb2ludEF0KCkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzOEJpdCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzMTZCaXQgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBpc0xlYWRTdXJyb2dhdGUgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBtYXlIYXZlVHJhaWxTdXJyb2dhdGUgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNUcmFpbFN1cnJvZ2F0ZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5jaGlsZDMoKSk7
CisKKyAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVh
cHMuSlNTdHJpbmdfdmFsdWUpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMy
Tm9uTmVnYXRpdmUoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2xlbmd0aCk7CisKKyAg
ICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmFib3ZlT3JF
cXVhbChpbmRleCwgbGVuZ3RoKSk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAg
ICAgbV9vdXQudGVzdElzWmVybzMyKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihzdHJp
bmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKKyAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpLAorICAgICAgICAg
ICAgdW5zdXJlKGlzMTZCaXQpLCB1bnN1cmUoaXM4Qml0KSk7CisKKyAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpczhCaXQsIGlzMTZCaXQpOworICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBjYWdlIHN0cmluZ3MhCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MjQKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sg
Y2hhcjhCaXQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQz
MihtX291dC5iYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzOCwg
c3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCksCisgICAgICAgICAgICAgICAgcHJvdmVu
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpczE2Qml0LCBpc0xlYWRTdXJyb2dhdGUp
OworICAgICAgICBMVmFsdWUgbGVhZENoYXJhY3RlciA9IG1fb3V0LmxvYWQxNlplcm9FeHQzMiht
X291dC5iYXNlSW5kZXgobV9oZWFwcy5jaGFyYWN0ZXJzMTYsIHN0b3JhZ2UsIG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpLCBwcm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3IobGVhZENoYXJhY3Rlcik7Cisg
ICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5hZGQoaW5kZXgsIG1fb3V0LmludDMyT25l
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmFib3ZlT3JFcXVhbChuZXh0SW5kZXgsIGxl
bmd0aCksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNMZWFkU3Vycm9nYXRlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNMZWFkU3Vycm9nYXRlLCBtYXlIYXZlVHJhaWxTdXJy
b2dhdGUpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwobV9vdXQuYml0QW5k
KGxlYWRDaGFyYWN0ZXIsIG1fb3V0LmNvbnN0SW50MzIoMHhmZmZmZmMwMCkpLCBtX291dC5jb25z
dEludDMyKDB4ZDgwMCkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG1heUhhdmVUcmFp
bFN1cnJvZ2F0ZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1heUhhdmVUcmFpbFN1cnJv
Z2F0ZSwgaGFzVHJhaWxTdXJyb2dhdGUpOworICAgICAgICBKU1ZhbHVlIGluZGV4VmFsdWUgPSBw
cm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZSBuZXh0SW5kZXhW
YWx1ZTsKKyAgICAgICAgaWYgKGluZGV4VmFsdWUgJiYgaW5kZXhWYWx1ZS5pc0ludDMyKCkgJiYg
aW5kZXhWYWx1ZS5hc0ludDMyKCkgIT0gSU5UMzJfTUFYKQorICAgICAgICAgICAgbmV4dEluZGV4
VmFsdWUgPSBqc051bWJlcihpbmRleFZhbHVlLmFzSW50MzIoKSArIDEpOworICAgICAgICBMVmFs
dWUgdHJhaWxDaGFyYWN0ZXIgPSBtX291dC5sb2FkMTZaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4
KG1faGVhcHMuY2hhcmFjdGVyczE2LCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKG5leHRJbmRl
eCksIG5leHRJbmRleFZhbHVlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVh
bChtX291dC5iaXRBbmQodHJhaWxDaGFyYWN0ZXIsIG1fb3V0LmNvbnN0SW50MzIoMHhmZmZmZmMw
MCkpLCBtX291dC5jb25zdEludDMyKDB4ZGMwMCkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5z
dXJlKGhhc1RyYWlsU3Vycm9nYXRlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzVHJh
aWxTdXJyb2dhdGUsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoYXJT
dXJyb2dhdGVQYWlyID0gbV9vdXQuYW5jaG9yKG1fb3V0LnN1YihtX291dC5hZGQobV9vdXQuc2hs
KGxlYWRDaGFyYWN0ZXIsIG1fb3V0LmNvbnN0SW50MzIoMTApKSwgdHJhaWxDaGFyYWN0ZXIpLCBt
X291dC5jb25zdEludDMyKFUxNl9TVVJST0dBVEVfT0ZGU0VUKSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgY2hhcjhCaXQs
IGNoYXIxNkJpdCwgY2hhclN1cnJvZ2F0ZVBhaXIpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVTdHJpbmdGcm9tQ2hhckNvZGUoKQogICAgIHsKICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBt
X25vZGUtPmNoaWxkMSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCAwYWU0ZDUwY2QyNjQ0NzVhNjBkYzcwNzkyNGVmOTA5ZGI0MjRjN2JkLi4wZmQ0NzgyYjlhZTVj
ZDgzMTQzZWMyYjNmMWI4NmRkOTIyZTE5YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaApAQCAtOTcsMTcgKzk3LDE0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVt
aXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwKICAg
ICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgSlNTdHJpbmc6Om9mZnNldE9m
VmFsdWUoKSksIGRzdCk7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaElmUm9wZVN0cmluZ0lt
cGwoZHN0KSk7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkc3QsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKDEpKSk7Ci0gICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhk
c3QsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgbG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkc3QsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIGRzdCk7
Ci0KLSAgICBKdW1wTGlzdCBpczE2Qml0OwotICAgIEp1bXBMaXN0IGNvbnQ4Qml0OwotICAgIGlz
MTZCaXQuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMSwgVHJ1c3RlZEltbTMyKFN0cmlu
Z0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKLSAgICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhkc3QsIDApLCBkc3QpOwotICAgIGNvbnQ4Qml0LmFwcGVuZChqdW1wKCkpOworICAgIGxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkp
LCByZWdUMSk7CisKKyAgICBhdXRvIGlzMTZCaXQgPSBicmFuY2hUZXN0MzIoWmVybywgQWRkcmVz
cyhkc3QsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nSW1w
bDo6ZmxhZ0lzOEJpdCgpKSk7CisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVn
VDEsIDApLCBkc3QpOworICAgIGF1dG8gZG9uZSA9IGp1bXAoKTsKICAgICBpczE2Qml0Lmxpbmso
dGhpcyk7Ci0gICAgbG9hZDE2KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRzdCwgMCksIGRzdCk7
Ci0gICAgY29udDhCaXQubGluayh0aGlzKTsKKyAgICBsb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVnVDEsIDApLCBkc3QpOworICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAogQUxXQVlT
X0lOTElORSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWRDYWxsKENvZGVQdHI8Tm9QdHJUYWc+IHRh
cmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApp
bmRleCBiMDcwOWUzMWRmYzU5ZWZiNTU5YTE2MmM1ZmQ4NmQwMWUxMDFjNjYzLi42OTM5MjMxZjE5
ZTkwMzY0MzliZjhmOTZjYWFhZjRiZTc0MzRlMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC02MjcsMTIgKzYyNywxMSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHN0cmluZ0dldEJ5VmFsR2VuZXJhdG9yKFZN
JiB2bSkKICAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaDMyKEpTSW50ZXJmYWNlSklUOjpB
Ym92ZU9yRXF1YWwsIGluZGV4R1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAvLyBMb2FkIHRoZSBj
aGFyYWN0ZXIKLSAgICBKU0ludGVyZmFjZUpJVDo6SnVtcExpc3QgaXMxNkJpdDsKICAgICBKU0lu
dGVyZmFjZUpJVDo6SnVtcExpc3QgY29udDhCaXQ7CiAgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZs
YWdzCiAgICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhzdHJpbmdHUFIsIFN0
cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBqaXQubG9hZFB0cihK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhzdHJpbmdHUFIsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQo
KSksIHN0cmluZ0dQUik7Ci0gICAgaXMxNkJpdC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihKU0lu
dGVyZmFjZUpJVDo6WmVybywgc2NyYXRjaEdQUiwgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0z
MihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CisgICAgYXV0byBpczE2Qml0ID0gaml0LmJy
YW5jaFRlc3QzMihKU0ludGVyZmFjZUpJVDo6WmVybywgc2NyYXRjaEdQUiwgSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKICAgICBqaXQubG9h
ZDgoSlNJbnRlcmZhY2VKSVQ6OkJhc2VJbmRleChzdHJpbmdHUFIsIGluZGV4R1BSLCBKU0ludGVy
ZmFjZUpJVDo6VGltZXNPbmUsIDApLCBzdHJpbmdHUFIpOwogICAgIGNvbnQ4Qml0LmFwcGVuZChq
aXQuanVtcCgpKTsKICAgICBpczE2Qml0LmxpbmsoJmppdCk7CkBAIC02NzIsNyArNjcxLDcgQEAg
c3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0KQogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlzMTZCaXQ7CiAgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CiAgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZsYWdz
Ci0gICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMik7CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5nSW1wbDo6ZGF0YU9mZnNl
dCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGlzMTZCaXQuYXBwZW5kKGpp
dC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhC
aXQoKSkpKTsKICAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc09uZSwgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTcx
Nyw2ICs3MTYsNTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBmcm9t
Q2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CiB9CiAK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc3RyaW5nUHJvdG90eXBlQ29k
ZVBvaW50QXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCit7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQodm0sIDEpOworCisgICAgLy8gbG9hZCBzdHJpbmcKKyAgICBqaXQubG9hZEpTU3RyaW5n
QXJndW1lbnQoU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGhpc0FyZ3VtZW50LCBHUFJJbmZvOjpyZWdU
MCk7CisKKyAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDMsIGFuZCBzdGFydCB0aGUg
cHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMgorICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNTdHJpbmc6Om9m
ZnNldE9mVmFsdWUoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShq
aXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChHUFJJbmZvOjpyZWdUMCkpOworICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBTdHJpbmdJbXBsOjpsZW5n
dGhNZW1vcnlPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QzKTsKKworICAgIC8vIGxvYWQgaW5kZXgK
KyAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgR1BSSW5mbzo6cmVnVDEpOyAvLyByZWdUMSBj
b250YWlucyB0aGUgaW5kZXgKKworICAgIC8vIERvIGFuIHVuc2lnbmVkIGNvbXBhcmUgdG8gc2lt
dWx0YW5lb3VzbHkgZmlsdGVyIG5lZ2F0aXZlIGluZGljZXMgYXMgd2VsbCBhcyBpbmRpY2VzIHRo
YXQgYXJlIHRvbyBsYXJnZQorICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QzKSk7
CisKKyAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IGRvbmU7CisgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCisgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0
KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBpczE2Qml0ID0gaml0LmJyYW5jaFRlc3Qz
MihDQ2FsbEhlbHBlcnM6Olplcm8sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpOworICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6
OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6
VGltZXNPbmUsIDApLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAo
KSk7CisKKyAgICBpczE2Qml0LmxpbmsoJmppdCk7CisgICAgaml0LmxvYWQxNihDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVy
czo6VGltZXNUd28sIDApLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgLy8gT3JpZ2luYWwgaW5kZXgg
aXMgaW50MzJfdCwgYW5kIGhlcmUsIHdlIGVuc3VyZSB0aGF0IGl0IGlzIHBvc2l0aXZlLiBJZiB3
ZSBpbnRlcnByZXQgaXQgYXMgdWludDMyX3QsIGFkZGluZyAxIG5ldmVyIG92ZXJmbG93cy4KKyAg
ICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBkb25lLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMykpOworICAgIGppdC5hbmQzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBkb25lLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZDgw
MCkpKTsKKyAgICBqaXQubG9hZDE2KENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJl
Z1QyLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc1R3bywgMCksIEdQUkluZm86
OnJlZ1QyKTsKKyAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhmZmZm
ZmMwMCksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgZG9uZS5hcHBlbmQo
aml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QzLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRjMDApKSk7CisgICAgaml0LmxzaGlmdDMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEwKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5nZXRF
ZmZlY3RpdmVBZGRyZXNzKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc09uZSwgLVUxNl9TVVJST0dBVEVfT0ZG
U0VUKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGRvbmUubGluaygmaml0KTsKKworICAgIGppdC5y
ZXR1cm5JbnQzMihHUFJJbmZvOjpyZWdUMCk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY29kZVBvaW50QXQiKTsKK30KKwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjbHozMlRodW5rR2VuZXJhdG9yKFZN
JiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRleCA5MTUzODIxMjBhZTc2MzBm
ZmIyZWFlZjhjZTI2ZGFkNzE1ZDkwYTYzLi5mOWIzYzhjYzY3YWFlMmJjZTEyOTA5MDljYzUxY2Mx
ZGRhNDE0MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmgKQEAgLTU1LDYgKzU1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzdHJpbmdHZXRCeVZhbEdlbmVyYXRvcihWTSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSYpOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzdHJpbmdQcm90b3R5cGVDb2Rl
UG9pbnRBdFRodW5rR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGNsejMyVGh1bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYWJzVGh1bmtHZW5lcmF0b3IoVk0mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IGZiYzRl
ZjNjZDhmMmVjNjJkYTkzMDBkYTI3MWIxMDIzMzk3NDM0ZmMuLmExMmEyNDA1NWM3MjkwYTNhMWM5
NTZmNmFiNGU3NjM3Zjg3ZmJiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmNwcApAQCAtMTIzLDYgKzEyMyw4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05h
bWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJPYmplY3RLZXlzSW50cmlu
c2ljIjsKICAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKICAgICAgICAg
cmV0dXJuICJSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOworICAgIGNhc2UgU3RyaW5n
UHJvdG90eXBlQ29kZVBvaW50QXRJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiU3RyaW5nUHJv
dG90eXBlQ29kZVBvaW50QXRJbnRyaW5zaWMiOwogICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlVmFs
dWVPZkludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50
cmluc2ljIjsKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDkzZDM2NDNjYWU4Y2Fm
YWE4YTg1OGUwNjJlYzE1NjA4OTAwMzUyOTIuLmU1MWI4MzlkOTg2Njc2ODk4M2U3NTE4ZTI0NzVl
YTM1OGQ5ZmQ4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
CkBAIC03NCw2ICs3NCw3IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7CiAgICAgT2JqZWN0
SXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0S2V5c0ludHJpbnNpYywKICAgICBSZWZsZWN0R2V0UHJv
dG90eXBlT2ZJbnRyaW5zaWMsCisgICAgU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRJbnRyaW5z
aWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywKICAgICBTdHJpbmdQcm90
b3R5cGVSZXBsYWNlSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VSZWdFeHBJ
bnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAppbmRleCAxNjgxOTk2YTEyOWMxNThhM2Q2MWJjZjcxM2FhZDlmZjU1NWIyODY0
Li5mODgwZDU0NjRhZmQ3OTU3MjdhNDYwNGQ1MjE0YTBkZmEzNTY0ZmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVfSU5UUklO
U0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9m
LCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDAsIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMp
OwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigi
Y2hhckF0Iiwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgQ2hhckF0SW50cmluc2ljKTsKICAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNoYXJDb2RlQXQi
LCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgQ2hhckNvZGVBdEludHJpbnNpYyk7Ci0gICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNvZGVQb2ludEF0Iiwgc3RyaW5n
UHJvdG9GdW5jQ29kZVBvaW50QXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oImNvZGVQb2ludEF0Iiwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50
QXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
LCBTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdEludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluZGV4T2YiLCBzdHJpbmdQcm90b0Z1bmNJbmRl
eE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImxhc3RJbmRl
eE9mIiwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucmVwbGFjZVVzaW5nUmVnRXhwUHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVVzaW5nUmVnRXhwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMiwgU3RyaW5nUHJvdG90eXBlUmVwbGFjZVJlZ0V4cEludHJpbnNpYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZjg1MmRkMmY2YzgwNTFmNWYzOWI1
ZDEwNTVjYWM4MTBlODkzYTE5My4uZGZmOGFmNDNjMGJjZDI0MTdjNjZhNDBmNDM3MjU4ODdiZDJj
ZTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjQwLDYgKzY0MCw4
IEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRy
aW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gY2hhckNvZGVBdFRodW5rR2VuZXJhdG9y
OwogICAgIGNhc2UgQ2hhckF0SW50cmluc2ljOgogICAgICAgICByZXR1cm4gY2hhckF0VGh1bmtH
ZW5lcmF0b3I7CisgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdEludHJpbnNpYzoK
KyAgICAgICAgcmV0dXJuIHN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0VGh1bmtHZW5lcmF0b3I7
CiAgICAgY2FzZSBDbHozMkludHJpbnNpYzoKICAgICAgICAgcmV0dXJuIGNsejMyVGh1bmtHZW5l
cmF0b3I7CiAgICAgY2FzZSBGcm9tQ2hhckNvZGVJbnRyaW5zaWM6CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyYzBiN2E1OTk0MDI1NmVk
YjFmNjE1MjVkMWUxYTc3ZWEyMGMyZWQuLjkwNjNmOWQwYjJlZTk0MGMzZDU3OWQ2ZjlmZTRlNzBi
OGIyOTVmY2MgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgU3RyaW5nQ29kZVBvaW50QXQgaW50
cmluc2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDE2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9zdHJpbmctY2hhci1hdC1jb25zdGFudC1pbmRleC1vdXQtb2YtcmFuZ2UuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3N0cmluZy1jaGFyLWNvZGUtYXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0
cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC0tb3V0LW9mLXJhbmdlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9zdHJpbmct
Y29kZS1wb2ludC1hdC1iYXNpYy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KiBzdHJlc3Mvc3RyaW5nLWNvZGUtcG9pbnQtYXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1pbnQzMi1tYXgtaW5kZXgt
b3V0LW9mLXJhbmdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIHN0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1zdXJy
b2dhdGUtcGFpci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGJyZWFraW5nKToKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLWNvZGUtcG9p
bnQtYXQtc3Vycm9nYXRlLXBhaXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAqIHN0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisKIDIwMTktMDktMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViQXNzZW1ibHldIFVzZSBTdHJlYW1pbmdQYXJzZXIgaW4gZXhpc3Rp
bmcgV2FzbTo6QkJRUGxhbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNoYXIt
YXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5n
LWNoYXItYXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiYTM5
MGZhYTQwNGRlZTUwNTQ5NzFmMzBhNzhkYjI3YjU5NGY2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9zdHJpbmctY2hhci1hdC1jb25zdGFudC1pbmRleC1vdXQtb2YtcmFuZ2Uu
anMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qoc3RyaW5nKSB7Cisg
ICAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCIiKSwgIiIpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNoYXItY29kZS1hdC1jb25zdGFudC1pbmRl
eC1vdXQtb2YtcmFuZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY2hhci1jb2RlLWF0LWNv
bnN0YW50LWluZGV4LW91dC1vZi1yYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjQwY2JmOTdkOTE4NGY1
MjM1ODMzM2FmZTJlNzdlMzAxM2Y0ZTRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvc3RyaW5nLWNoYXItY29kZS1hdC1jb25zdGFudC1pbmRleC1vdXQtb2YtcmFuZ2UuanMKQEAg
LTAsMCArMSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qoc3RyaW5nKSB7CisgICAgcmV0
dXJuIHN0cmluZy5jaGFyQ29kZUF0KDApOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdCgiIiksIHVuZGVmaW5lZCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC0tb3V0LW9m
LXJhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNvZGUtcG9pbnQtYXQtLW91dC1vZi1y
YW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMzk2MmJhYmZmOWJlMmJiYjMzODkyMThjZGY4MDVlZmZlNjI3
YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNvZGUtcG9pbnQt
YXQtLW91dC1vZi1yYW5nZS5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
dGVzdChzdHJpbmcsIGluZGV4KSB7CisgICAgcmV0dXJuIHN0cmluZy5jb2RlUG9pbnRBdChpbmRl
eCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkK
KyAgICBzaG91bGRCZSh0ZXN0KCIiLCAtMSksIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1iYXNpYy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3N0cmluZy1jb2RlLXBvaW50LWF0LWJhc2ljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5YmE0NGExNTUwMDk0
YjVjNWZiYjAwMzczYmJhNDM0ZjNkMGJlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1iYXNpYy5qcwpAQCAtMCwwICsxLDQgQEAKK2Z1bmN0
aW9uIHRlc3Qoc3RyaW5nLCBpbmRleCkKK3sKKyAgICByZXR1cm4gc3RyaW5nLmNvZGVQb2ludEF0
KGluZGV4KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0cmluZy1jb2RlLXBvaW50
LWF0LWNvbnN0YW50LWluZGV4LW91dC1vZi1yYW5nZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0cmlu
Zy1jb2RlLXBvaW50LWF0LWNvbnN0YW50LWluZGV4LW91dC1vZi1yYW5nZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNDZmMmE3YWY4MzNlYmE5Njk5YWY4MDFkYmRkNjNlMWRiMGE5N2ZlCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNvZGUtcG9pbnQtYXQtY29uc3RhbnQtaW5kZXgt
b3V0LW9mLXJhbmdlLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0
KHN0cmluZykgeworICAgIHJldHVybiBzdHJpbmcuY29kZVBvaW50QXQoMCk7Cit9Citub0lubGlu
ZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0
ZXN0KCIiKSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0cmluZy1j
b2RlLXBvaW50LWF0LWNvbnN0YW50LWludDMyLW1heC1pbmRleC1vdXQtb2YtcmFuZ2UuanMgYi9K
U1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1pbnQzMi1tYXgtaW5k
ZXgtb3V0LW9mLXJhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMmIxY2U0MTdiM2FhMTU1ZjIxNWQ1ZDNm
Mjg3OGUzODgxNDQxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmct
Y29kZS1wb2ludC1hdC1jb25zdGFudC1pbnQzMi1tYXgtaW5kZXgtb3V0LW9mLXJhbmdlLmpzCkBA
IC0wLDAgKzEsMjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGVz
dChzdHJpbmcpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAgcmV0dXJuIHN0cmluZy5jb2RlUG9p
bnRBdCgweDdmZmZmZmZmKTsKKyAgICByZXR1cm4gNDI7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
ZmxhZyA9IHRydWU7Citmb3IgKHZhciBpID0gMDsgaSA8IDQwOyArK2kpIHsKKyAgICBzaG91bGRC
ZSh0ZXN0KCIiKSwgdW5kZWZpbmVkKTsKK30KKworZmxhZyA9IGZhbHNlOworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCIiKSwgNDIpOworCitmbGFnID0g
dHJ1ZTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdCgi
IiksIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1w
b2ludC1hdC1jb25zdGFudC1zdXJyb2dhdGUtcGFpci5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0cmlu
Zy1jb2RlLXBvaW50LWF0LWNvbnN0YW50LXN1cnJvZ2F0ZS1wYWlyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRj
NGUzYzhjNGE1N2I2NGFiMzkwZmVmYjc0MGJkNWU3YmQ3M2RjMjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1zdXJyb2dhdGUt
cGFpci5qcwpAQCAtMCwwICsxLDIyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChzdHJpbmcp
IHsKKyAgICByZXR1cm4gc3RyaW5nLmNvZGVQb2ludEF0KDApOworfQorbm9JbmxpbmUodGVzdCk7
CisKK2Z1bmN0aW9uIGJyZWFraW5nKHN0cmluZykgeworICAgIHJldHVybiBzdHJpbmcuY29kZVBv
aW50QXQoMSk7Cit9Citub0lubGluZShicmVha2luZyk7CisKK3ZhciBzdHJpbmcgPSAi8KCut+mH
juWutiI7CitzaG91bGRCZShzdHJpbmcubGVuZ3RoLCA0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0KHN0cmluZyksIDB4MjBiYjcpOworICAgIHNo
b3VsZEJlKHRlc3QoIvCgrrciKSwgMHgyMGJiNyk7CisgICAgc2hvdWxkQmUoYnJlYWtpbmcoc3Ry
aW5nKSwgMHhkZmI3KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0cmluZy1jb2Rl
LXBvaW50LWF0LXN1cnJvZ2F0ZS1wYWlyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNvZGUt
cG9pbnQtYXQtc3Vycm9nYXRlLXBhaXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQzYmFkMDNiYmIyYTI5NDBl
YzJiZWU2MGNlZDY4MDcwZTI5NjM4MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3N0cmluZy1jb2RlLXBvaW50LWF0LXN1cnJvZ2F0ZS1wYWlyLmpzCkBAIC0wLDAgKzEsNjUgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7YWN0dWFs
fSwgZXhwZWN0ZWQgJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gdGVzdFN1cnJvZ2F0ZVBh
aXIodGVzdFN0cmluZywgZXhwZWN0ZWQpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RT
dHJpbmcubGVuZ3RoOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRlc3RTdHJpbmcuY29kZVBvaW50
QXQoaSksIGV4cGVjdGVkW2ldKTsKK30KK25vSW5saW5lKHRlc3RTdXJyb2dhdGVQYWlyKTsKKwor
Ly8gIlx1RDg0Mlx1REZCN1x1OTFjZVx1NWJiNiIKK3ZhciB0ZXN0U3RyaW5nID0gIvCgrrfph47l
rrYiOwordmFyIGV4cGVjdGVkID0gWworICAgIDB4MjBCQjcsCisgICAgMHhERkI3LAorICAgIDB4
OTFDRSwKKyAgICAweDVCQjYsCitdOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAg
ICB0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CisKK3ZhciB0ZXN0U3Ry
aW5nID0gIkFcdUQ4NDIiOwordmFyIGV4cGVjdGVkID0gWworICAgIDB4MDA0MSwKKyAgICAweEQ4
NDIsCitdOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICB0ZXN0U3Vycm9nYXRl
UGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CisKK3ZhciB0ZXN0U3RyaW5nID0gIkFcdUQ4NDJB
IjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICAweDAwNDEsCisgICAgMHhEODQyLAorICAgIDB4MDA0
MSwKK107Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHRlc3RTdXJyb2dhdGVQ
YWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkKTsKKwordmFyIHRlc3RTdHJpbmcgPSAiQVx1RDg0Mlx1
REZCNyI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgMHgwMDQxLAorICAgIDB4MjBCQjcsCisgICAg
MHhERkI3LAorXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgdGVzdFN1cnJv
Z2F0ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQpOworCit2YXIgdGVzdFN0cmluZyA9ICJcdUQ4
NDJBXHVERkI3IjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICAweEQ4NDIsCisgICAgMHgwMDQxLAor
ICAgIDB4REZCNywKK107Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHRlc3RT
dXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkKTsKKwordmFyIHRlc3RTdHJpbmcgPSAi
XHVERkI3XHVEODQyQSI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgMHhERkI3LAorICAgIDB4RDg0
MiwKKyAgICAweDAwNDEsCitdOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICB0
ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0cmlu
Zy1jb2RlLXBvaW50LWF0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlYzg3YjYzZTAwNDQxOTUyYjA0YWRiMzFj
NGIwNjNkNWEzYmM1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmct
Y29kZS1wb2ludC1hdC5qcwpAQCAtMCwwICsxLDcxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke2FjdHVhbH0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9
YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVk
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U3RyaW5nLmxlbmd0aDsgKytpKQorICAg
ICAgICBzaG91bGRCZSh0ZXN0U3RyaW5nLmNvZGVQb2ludEF0KGkpLCBleHBlY3RlZFtpXSk7Cit9
Citub0lubGluZSh0ZXN0U3Vycm9nYXRlUGFpcik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1
OyArK2kpIHsKKyAgICB2YXIgdGVzdFN0cmluZyA9ICdDb2NvYSc7CisgICAgdmFyIGV4cGVjdGVk
ID0gWworICAgICAgICA2NywKKyAgICAgICAgMTExLAorICAgICAgICA5OSwKKyAgICAgICAgMTEx
LAorICAgICAgICA5NywKKyAgICBdOworICAgIHRlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcs
IGV4cGVjdGVkKTsKKworICAgIC8vICJcdUQ4NDJcdURGQjdcdTkxY2VcdTViYjYiCisgICAgdmFy
IHRlc3RTdHJpbmcgPSAi8KCut+mHjuWutiI7CisgICAgdmFyIGV4cGVjdGVkID0gWworICAgICAg
ICAweDIwQkI3LAorICAgICAgICAweERGQjcsCisgICAgICAgIDB4OTFDRSwKKyAgICAgICAgMHg1
QkI2LAorICAgIF07CisgICAgdGVzdFN1cnJvZ2F0ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQp
OworCisgICAgdmFyIHRlc3RTdHJpbmcgPSAiQVx1RDg0MiI7CisgICAgdmFyIGV4cGVjdGVkID0g
WworICAgICAgICAweDAwNDEsCisgICAgICAgIDB4RDg0MiwKKyAgICBdOworICAgIHRlc3RTdXJy
b2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkKTsKKworICAgIHZhciB0ZXN0U3RyaW5nID0g
IkFcdUQ4NDJBIjsKKyAgICB2YXIgZXhwZWN0ZWQgPSBbCisgICAgICAgIDB4MDA0MSwKKyAgICAg
ICAgMHhEODQyLAorICAgICAgICAweDAwNDEsCisgICAgXTsKKyAgICB0ZXN0U3Vycm9nYXRlUGFp
cih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CisKKyAgICB2YXIgdGVzdFN0cmluZyA9ICJBXHVEODQy
XHVERkI3IjsKKyAgICB2YXIgZXhwZWN0ZWQgPSBbCisgICAgICAgIDB4MDA0MSwKKyAgICAgICAg
MHgyMEJCNywKKyAgICAgICAgMHhERkI3LAorICAgIF07CisgICAgdGVzdFN1cnJvZ2F0ZVBhaXIo
dGVzdFN0cmluZywgZXhwZWN0ZWQpOworCisgICAgdmFyIHRlc3RTdHJpbmcgPSAiXHVEODQyQVx1
REZCNyI7CisgICAgdmFyIGV4cGVjdGVkID0gWworICAgICAgICAweEQ4NDIsCisgICAgICAgIDB4
MDA0MSwKKyAgICAgICAgMHhERkI3LAorICAgIF07CisgICAgdGVzdFN1cnJvZ2F0ZVBhaXIodGVz
dFN0cmluZywgZXhwZWN0ZWQpOworCisgICAgdmFyIHRlc3RTdHJpbmcgPSAiXHVERkI3XHVEODQy
QSI7CisgICAgdmFyIGV4cGVjdGVkID0gWworICAgICAgICAweERGQjcsCisgICAgICAgIDB4RDg0
MiwKKyAgICAgICAgMHgwMDQxLAorICAgIF07CisgICAgdGVzdFN1cnJvZ2F0ZVBhaXIodGVzdFN0
cmluZywgZXhwZWN0ZWQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378565</attachid>
            <date>2019-09-11 09:27:00 -0700</date>
            <delta_ts>2019-09-11 15:18:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201673-20190911092659.patch</filename>
            <type>text/plain</type>
            <size>42095</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjMyZGI3ZGNjMTYwN2I0Y2VmM2Y2YTEyOTAxYWRkODMzMWI3YzJjLi44OGM5NzVmOTViNjhkMjg2
OWQyNWNmMGRlYjljY2RkNjUzZGIxMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxOS0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBTdHJpbmdDb2RlUG9pbnRBdCBpbnRyaW5zaWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpldFN0cmVhbTIvVW5p
UG9rZXIgZXhlY3V0ZXMgU3RyaW5nI2NvZGVQb2ludEF0IGZyZXF1ZW50bHkuIFdlIHNob3VsZCBo
YW5kbGUgaXQgaW4gVGh1bmtHZW5lcmF0b3IsIERGRywgYW5kIEZUTCBsaWtlIHdlIGFyZSBkb2lu
ZyBzbyBmb3IgU3RyaW5nI2NoYXJDb2RlQXQuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGVz
ZSBzdXBwb3J0cyBmb3IgU3RyaW5nI2NvZGVQb2ludEF0IHRvIGdldCB+MTAlIHNjb3JlIGltcHJv
dmVtZW50IGluIEpldFN0cmVhbTIvVW5pUG9rZXIuCisKKyAgICAgICAgSW4gVGh1bmtHZW5lcmF0
b3IsIHdlIGFkZCBhIHRodW5rIGZvciBTdHJpbmcjY29kZVBvaW50QXQsIHdoaWNoIGFjY2VsZXJh
dGVzIExMSW50IGFuZCBCYXNlbGluZS4gSW4gREZHLCB3ZSBoYW5kbGUgdGhpcyBhcyBTdHJpbmdD
b2RlUG9pbnRBdCBub2RlLCBhbmQgZW1pdAorICAgICAgICBpbmxpbmVkIGNvZGUgaW4gREZHIGFu
ZCBGVEwuIFRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgU3RyaW5nQ29kZVBvaW50QXQgbm9kZSBpcyBi
YXNpY2FsbHkgdGhlIHNhbWUgdG8gU3RyaW5nQ2hhckF0LiBJdCBoYXMgU3RyaW5nIGFycmF5LW1v
ZGUsIHNvIGl0IGVtaXRzCisgICAgICAgIHByZWNlZGluZyBDaGVja0FycmF5LiBUaGlzIGVuc3Vy
ZXMgdGhhdCAoMSkgU3RyaW5nQ29kZVBvaW50QXQgbm9kZSBpdHNlbGYgZG9lcyBub3QgZG8gR0Mg
c2luY2UgdGhlIHN0cmluZyBpcyBhbHdheXMgcmVzb2x2ZWQsIGFuZCAoMikgd2UgY2FuIHNraXAg
dGhlIHJvcGUKKyAgICAgICAgY2hlY2suIFRoaXMgdGhpbmcgaXMganVzdCB0aGUgc2FtZSB0byB0
aGUgZXhpc3RpbmcgU3RyaW5nQ2hhckNvZGVBdCBtZWNoYW5pc20uCisKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KToKKyAgICAgICAgKiBmdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdHZXRC
eVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnN0cmluZ0NoYXJMb2FkKToKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcik6CisgICAgICAg
ICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNw
cDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRy
aW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyk6CisK
IDIwMTktMDktMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IENhbnZhczogaW5zdHJ1bWVudCBXZWJHUFVEZXZpY2UgaW5zdGVhZCBv
ZiBHUFVDYW52YXNDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWI2YmYwMzU5Nzg3OTdh
M2UzM2E0Yzg0OTUxNDAzMTQwYzUzMWQxMy4uYzJmZTNhYmE5NTliMDUwMmY0OGY1NWEyNTUxNWRm
Mjk0ZDdlOWUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTkwOSw2ICsxOTA5LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nQ2hh
ckNvZGVBdDoKKyAgICBjYXNlIFN0cmluZ0NvZGVQb2ludEF0OgogICAgICAgICBzZXROb25DZWxs
VHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDAxNzU5MjZlMjZiMjEzZGRmNWM4NjNkYzkxM2Q3
NDc5YWQ0ZWVhNGQuLjdmM2EyYTU2ZDFjZDYzOTYwYTc3YmNmZDU5NDhlYmM0MmIxNzMyYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMjM5LDcgKzIzOSw5IEBAIGNsYXNzIEJhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKKyAg
ICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
KyAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAgICAgbm9kZS0+Y2hp
bGQxKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOwogICAgICAgICAgICAg
bm9kZS0+Y2hpbGQyKCktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUgfCBOb2Rl
Qnl0ZWNvZGVVc2VzQXNJbnQgfCBOb2RlQnl0ZWNvZGVVc2VzQXNBcnJheUluZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMzkwLDEyICszOTIsNiBAQCBjbGFzcyBCYWNrd2FyZHNQcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6IHsKLSAgICAgICAgICAg
IG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVlKTsKLSAg
ICAgICAgICAgIG5vZGUtPmNoaWxkMigpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1Zh
bHVlIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50IHwgTm9kZUJ5dGVjb2RlVXNlc0FzQXJyYXlJbmRl
eCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgVG9TdHJpbmc6CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOiB7CiAg
ICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNO
dW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDJjODJiMWU5M2JkMWZkNTJjZWQ1
NTA0YTQxYmFlYzlhNWQ5YjkzOTIuLjQwMTdmMzQzYThkMzU0MzkwMmZjMzcxZjY5NTljNWFiZTM3
MmExMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC0yNjEwLDYgKzI2MTAsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAg
ICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgVW5jb3VudGFibGUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tz
KCk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc09wZXJhbmQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgaW5kZXhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpOwpAQCAtMjYxOSwxMCArMjYyMiwzMyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgSQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNl
IFN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0SW50cmluc2ljOiB7CisgICAgICAgICAgICBpZiAo
IWlzNjRCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIFVuY291bnRhYmxlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGluZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zm
c2V0KTsKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFkZFRvR3JhcGgoU3RyaW5nQ29kZVBv
aW50QXQsIE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6OlN0cmluZywgQXJyYXk6OlJlYWQpLmFzV29y
ZCgpKSwgZ2V0KHRoaXNPcGVyYW5kKSwgZ2V0KGluZGV4T3BlcmFuZCkpOworCisgICAgICAgICAg
ICBzZXRSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBDaGFyQXRJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFN0cmluZyNjaGFyQXQgcmV0dXJucyBlbXB0eSBz
dHJpbmcgd2hlbiBpbmRleCBpcyBvdXQtb2YtYm91bmRzLCBhbmQgdGhpcyBkb2VzIG5vdCBicmVh
ayB0aGUgQUkncyBjbGFpbS4KKyAgICAgICAgICAgIC8vIE9ubHkgRlRMIHN1cHBvcnRzIG91dC1v
Zi1ib3VuZHMgdmVyc2lvbiBub3cuIFdlIHNob3VsZCBzdXBwb3J0IG91dC1vZi1ib3VuZHMgdmVy
c2lvbiBldmVuIGluIERGRy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE2NzgKKwogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc09wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgaW5kZXhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBj
MWI3YTBiYzIyMWNmNDg0MWM2ZDQzMWFjNGU1Y2U1YWRhMWY3MWEwLi4zMDNmNDc5M2UzYjY0NWU4
NDhiYzM2ZGQyNjliZDhmMGNiNjU0ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2Fz
ZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgY2Fz
ZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBTYW1lVmFsdWU6CiAgICAgY2FzZSBJc0VtcHR5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGZiMzEyMmI3YzI2
NWQzYjhlZDFhNmEwMDZiMmRjODI0YTVlNThkNzUuLjQwNzJmOTE3ZTQ1ZjRhMDU5MWE4YWFjNjgz
MGYwZDgwNGE2NTQ3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
QEAgLTE5Miw2ICsxOTIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKICAg
ICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CisgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAg
ICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCBlNDVhYzVjMWU2NGM3M2ZlMjY4OWM0ZTM4ZTRlZTJiMTI1ZGMz
NzFkLi5jYzQxYTNkOGVjMTMzZGUwNWVjZjY5NDgwYzU3YmIyNjgxODY3ZTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTgzNSw3ICs4MzUsOCBA
QCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgotICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6IHsKKyAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgorICAgICAgICBjYXNlIFN0cmlu
Z0NvZGVQb2ludEF0OiB7CiAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgaGF2ZSBubyBnb29k
IHdheSBvZiByZWZpbmluZyB0aGVzZS4KICAgICAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1v
ZGUoKSA9PSBBcnJheU1vZGUoQXJyYXk6OlN0cmluZywgQXJyYXk6OlJlYWQpKTsKICAgICAgICAg
ICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBu
b2RlLT5jaGlsZDMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDY5ZjA4
YzE4NmQ0OGNlYmY2Yzc2Yjg5YTRkNWQ0ODQ0MDdkYjNkMGUuLjY3NmRmNjM2NWIxNTA1YTU5ZTc4
ZGQ0NmJjMjQ3YWE2NWNhMjc2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0yMDk0LDYgKzIwOTQsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6
CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAgICAgIGNhc2UgQ2hlY2tB
cnJheToKICAgICAgICAgY2FzZSBBcnJheWlmeToKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3Ry
dWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDRkNzE1
ODJlMTdhNjkxYTA1OGE4MzQ3MjI4NGY2MDE5Zjk3ZDgwMzkuLjY4NTYyOGJmNGYwNjVlNmU3Y2Zm
N2E1NzIyODkwMGNmYmZkMjUzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTMwMyw2ICszMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgXAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIHN0cmluZyBhY2Nlc3MgKi8gXAogICAg
IG1hY3JvKFN0cmluZ0NoYXJDb2RlQXQsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKFN0
cmluZ0NvZGVQb2ludEF0LCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhTdHJpbmdDaGFy
QXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFN0cmluZ0Zyb21DaGFyQ29kZSwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggNDhhNDFiMzA3MmI3Njc2MzYxOTEwNDUzYTRkZTRmNWFhZWI1NGJhYi4uMDBhYzU1YzZl
NjY5YmU0MjE3Y2RkMGE3MDUwMzg3ZDBlNDMwNTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTkwNiw3ICs5MDYsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNh
c2UgU3RyaW5nQ2hhckNvZGVBdDogeworICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6Cisg
ICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBjYThhZWEzMGEz
NTI2NmM2NzU0NTliOWI1ZWY1NDUyYzUzMTc2ZDVkLi42ODM3ZTIzNWIzMDYyNTU3NzE4ZjVmMTMy
YzA0NjgyY2Q4Y2VjOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaApAQCAtNTI2LDYgKzUyNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBBcnJheVBvcDoKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICBjYXNlIFN0cmlu
Z0NoYXJDb2RlQXQ6CisgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICAgICAgcmV0dXJu
IG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKGdyYXBoLCBub2RlLCBzdGF0ZS5mb3JO
b2RlKGdyYXBoLmNoaWxkKG5vZGUsIDApKSk7CiAKICAgICBjYXNlIEFycmF5UHVzaDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmOTkxZGQy
MDE2MjRlNjAzYjIxZWQ3M2RkMDNjNTNjM2I3MzFhZGUyLi41ODRhNDlkMTliMmY5NDhmODJlMWJk
Y2I4M2Q2ZmYzNmE4ZGQyZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDkzLDYgKzE0OTMsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJ
VCB7CiAgICAgdm9pZCBjb21waWxlRXh0cmFjdENhdGNoTG9jYWwoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUNsZWFyQ2F0Y2hMb2NhbHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVByb2ZpbGVU
eXBlKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChOb2RlKik7CiAK
ICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJl
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCAwOWNmMDk4NDY5OGI5Zjc5Mzc2ZjA1NjQxN2U1NzE2MDM5YWU1NmRi
Li41NGQzMzkyMzJiOWZiNDQyZmNmYmUwMDFjMmRkNTcwYjYzZThlZDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTQxOTgsNiArNDE5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoK
ICAgICBjYXNlIERhdGFWaWV3U2V0OgorICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CiAgICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAidW5leHBlY3RlZCBub2RlIGluIERG
RyBiYWNrZW5kIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGYxZjA0YzNjOTg3NWE2
MzE2NWE2MjhmZjlmMWNlZGI1ZmM3MDZiMzYuLmVlYzIxMGU3OTY1YjJkNjA4ODczMWZhMmVhZTZk
ODA1MTgzODI2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtMjM0Myw2ICsyMzQzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBTdHJpbmdDb2RlUG9pbnRBdDogeworICAgICAgICBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7
CiAgICAgICAgIC8vIFJlbGllcyBvbiBTdHJpbmdDaGFyQXQgbm9kZSBoYXZpbmcgc2FtZSBiYXNp
YyBsYXlvdXQgYXMgR2V0QnlWYWwKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9k
ZSk7CkBAIC01MjY3LDYgKzUyNzIsNTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoUmFuZG9tKE5vZGUqIG5vZGUpCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChO
b2RlKiBub2RlKQoreworICAgIC8vIFdlIGVtaXQgQ2hlY2tBcnJheSBvbiB0aGlzIG5vZGUgYXMg
d2UgZG8gaW4gU3RyaW5nQ2hhckNvZGVBdCBub2RlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8g
Y2hlY2sgU3BlY1N0cmluZyBoZXJlLgorICAgIC8vIEFuZCBDaGVja0FycmF5IGFsc28gZW5zdXJl
cyB0aGF0IHRoaXMgU3RyaW5nIGlzIG5vdCBhIHJvcGUuCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgc3RyaW5nKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQz
Mk9wZXJhbmQgaW5kZXgodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIFN0b3JhZ2VPcGVyYW5k
IHN0b3JhZ2UodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
MSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gzKHRoaXMpOworCisgICAgR1BSUmVnIHN0cmluZ0dQUiA9IHN0cmluZy5ncHIo
KTsKKyAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKyAgICBHUFJSZWcgc3RvcmFn
ZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEu
Z3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisgICAgR1BS
UmVnIHNjcmF0Y2gzR1BSID0gc2NyYXRjaDMuZ3ByKCk7CisKKyAgICBtX2ppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHJpbmdHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkp
LCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCBzY3JhdGNoMkdQ
Uik7CisKKyAgICAvLyB1bnNpZ25lZCBjb21wYXJpc29uIHNvIHdlIGNhbiBmaWx0ZXIgb3V0IG5l
Z2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdlCisgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBzY3JhdGNoMkdQUikpOworCisg
ICAgLy8gTG9hZCB0aGUgY2hhcmFjdGVyIGludG8gc2NyYXRjaDFHUFIKKyAgICBhdXRvIGlzMTZC
aXQgPSBtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSk7CisKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGRvbmU7CisKKyAgICBtX2ppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChz
dG9yYWdlR1BSLCBpbmRleEdQUiwgQ0NhbGxIZWxwZXJzOjpUaW1lc09uZSwgMCksIHNjcmF0Y2gx
R1BSKTsKKyAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgaXMxNkJpdC5saW5r
KCZtX2ppdCk7CisgICAgbV9qaXQubG9hZDE2KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHN0b3Jh
Z2VHUFIsIGluZGV4R1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVzVHdvLCAwKSwgc2NyYXRjaDFHUFIp
OworICAgIC8vIFRoaXMgaXMgb2suIGluZGV4R1BSIG11c3QgYmUgcG9zaXRpdmUgaW50MzJfdCBo
ZXJlIGFuZCBhZGRpbmcgMSBuZXZlciBjYXVzZXMgb3ZlcmZsb3cgaWYgd2UgdHJlYXQgaW5kZXhH
UFIgYXMgdWludDMyX3QuCisgICAgbV9qaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMSksIGluZGV4R1BSLCBzY3JhdGNoM0dQUik7CisgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2gzR1BSLCBzY3JhdGNoMkdQ
UikpOworICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZmZmZmZj
MDApLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpOworICAgIGRvbmUuYXBwZW5kKG1faml0LmJy
YW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gyR1BSLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweGQ4MDApKSk7CisgICAgbV9qaXQubG9hZDE2KENDYWxsSGVscGVyczo6
QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHNjcmF0Y2gzR1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVzVHdv
LCAwKSwgc2NyYXRjaDNHUFIpOworICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDB4ZmZmZmZjMDApLCBzY3JhdGNoM0dQUiwgc2NyYXRjaDJHUFIpOworICAgIGRvbmUu
YXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gyR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRjMDApKSk7CisgICAgbV9qaXQubHNoaWZ0
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTApLCBzY3JhdGNoMUdQUik7CisgICAgbV9q
aXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoMUdQ
Uiwgc2NyYXRjaDNHUFIsIENDYWxsSGVscGVyczo6VGltZXNPbmUsIC1VMTZfU1VSUk9HQVRFX09G
RlNFVCksIHNjcmF0Y2gxR1BSKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKworICAgIGludDMy
UmVzdWx0KHNjcmF0Y2gxR1BSLCBtX2N1cnJlbnROb2RlKTsKK30KKwogI2VuZGlmCiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCA4NDVjNDE3ZWNkYjE0YmY1MGE0NWY1ZThlMDllM2FlMjM5OWY5
ZDgwLi4xOTg5NDc4NzMwNzk0OTNmODlhNWU0MzUzYjhjZTVlNGI4N2NiYjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNTksNiArMTU5
LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDaGVja1N0cmluZ0lkZW50OgogICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CisgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICBjYXNlIFN0
cmluZ0Zyb21DaGFyQ29kZToKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAg
IGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzYzFmMjg4YjZiZWUyMWU0YTI2ZjU0MTVi
M2NiMmNiZjA2ODg5NDVhLi40YTM1ZDFiM2IwZGNmMDhmZDAyNTE4NjViOTkyMDQxMDMzMTkyMDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xMTEzLDYgKzExMTMsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgICAgICBjb21waWxlU3RyaW5nQ2hhckNvZGVBdCgpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6CisgICAg
ICAgICAgICBjb21waWxlU3RyaW5nQ29kZVBvaW50QXQoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZToKICAgICAgICAgICAgIGNvbXBpbGVTdHJp
bmdGcm9tQ2hhckNvZGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzEzMSw2ICs3MTM0LDY0
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQz
MiwgY2hhcjhCaXQsIGNoYXIxNkJpdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZVN0cmlu
Z0NvZGVQb2ludEF0KCkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzOEJpdCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzMTZCaXQgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBpc0xlYWRTdXJyb2dhdGUgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBtYXlIYXZlVHJhaWxTdXJyb2dhdGUgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNUcmFpbFN1cnJvZ2F0ZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5jaGlsZDMoKSk7
CisKKyAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVh
cHMuSlNTdHJpbmdfdmFsdWUpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMy
Tm9uTmVnYXRpdmUoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2xlbmd0aCk7CisKKyAg
ICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmFib3ZlT3JF
cXVhbChpbmRleCwgbGVuZ3RoKSk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAg
ICAgbV9vdXQudGVzdElzWmVybzMyKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihzdHJp
bmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKKyAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpLAorICAgICAgICAg
ICAgdW5zdXJlKGlzMTZCaXQpLCB1bnN1cmUoaXM4Qml0KSk7CisKKyAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpczhCaXQsIGlzMTZCaXQpOworICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBjYWdlIHN0cmluZ3MhCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MjQKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sg
Y2hhcjhCaXQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQz
MihtX291dC5iYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzOCwg
c3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCksCisgICAgICAgICAgICAgICAgcHJvdmVu
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpczE2Qml0LCBpc0xlYWRTdXJyb2dhdGUp
OworICAgICAgICBMVmFsdWUgbGVhZENoYXJhY3RlciA9IG1fb3V0LmxvYWQxNlplcm9FeHQzMiht
X291dC5iYXNlSW5kZXgobV9oZWFwcy5jaGFyYWN0ZXJzMTYsIHN0b3JhZ2UsIG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpLCBwcm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3IobGVhZENoYXJhY3Rlcik7Cisg
ICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5hZGQoaW5kZXgsIG1fb3V0LmludDMyT25l
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmFib3ZlT3JFcXVhbChuZXh0SW5kZXgsIGxl
bmd0aCksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNMZWFkU3Vycm9nYXRlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNMZWFkU3Vycm9nYXRlLCBtYXlIYXZlVHJhaWxTdXJy
b2dhdGUpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwobV9vdXQuYml0QW5k
KGxlYWRDaGFyYWN0ZXIsIG1fb3V0LmNvbnN0SW50MzIoMHhmZmZmZmMwMCkpLCBtX291dC5jb25z
dEludDMyKDB4ZDgwMCkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG1heUhhdmVUcmFp
bFN1cnJvZ2F0ZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1heUhhdmVUcmFpbFN1cnJv
Z2F0ZSwgaGFzVHJhaWxTdXJyb2dhdGUpOworICAgICAgICBKU1ZhbHVlIGluZGV4VmFsdWUgPSBw
cm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZSBuZXh0SW5kZXhW
YWx1ZTsKKyAgICAgICAgaWYgKGluZGV4VmFsdWUgJiYgaW5kZXhWYWx1ZS5pc0ludDMyKCkgJiYg
aW5kZXhWYWx1ZS5hc0ludDMyKCkgIT0gSU5UMzJfTUFYKQorICAgICAgICAgICAgbmV4dEluZGV4
VmFsdWUgPSBqc051bWJlcihpbmRleFZhbHVlLmFzSW50MzIoKSArIDEpOworICAgICAgICBMVmFs
dWUgdHJhaWxDaGFyYWN0ZXIgPSBtX291dC5sb2FkMTZaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4
KG1faGVhcHMuY2hhcmFjdGVyczE2LCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKG5leHRJbmRl
eCksIG5leHRJbmRleFZhbHVlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVh
bChtX291dC5iaXRBbmQodHJhaWxDaGFyYWN0ZXIsIG1fb3V0LmNvbnN0SW50MzIoMHhmZmZmZmMw
MCkpLCBtX291dC5jb25zdEludDMyKDB4ZGMwMCkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5z
dXJlKGhhc1RyYWlsU3Vycm9nYXRlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzVHJh
aWxTdXJyb2dhdGUsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoYXJT
dXJyb2dhdGVQYWlyID0gbV9vdXQuYW5jaG9yKG1fb3V0LnN1YihtX291dC5hZGQobV9vdXQuc2hs
KGxlYWRDaGFyYWN0ZXIsIG1fb3V0LmNvbnN0SW50MzIoMTApKSwgdHJhaWxDaGFyYWN0ZXIpLCBt
X291dC5jb25zdEludDMyKFUxNl9TVVJST0dBVEVfT0ZGU0VUKSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgY2hhcjhCaXQs
IGNoYXIxNkJpdCwgY2hhclN1cnJvZ2F0ZVBhaXIpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVTdHJpbmdGcm9tQ2hhckNvZGUoKQogICAgIHsKICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBt
X25vZGUtPmNoaWxkMSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCAwYWU0ZDUwY2QyNjQ0NzVhNjBkYzcwNzkyNGVmOTA5ZGI0MjRjN2JkLi4wZmQ0NzgyYjlhZTVj
ZDgzMTQzZWMyYjNmMWI4NmRkOTIyZTE5YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaApAQCAtOTcsMTcgKzk3LDE0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVt
aXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwKICAg
ICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgSlNTdHJpbmc6Om9mZnNldE9m
VmFsdWUoKSksIGRzdCk7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaElmUm9wZVN0cmluZ0lt
cGwoZHN0KSk7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkc3QsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKDEpKSk7Ci0gICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhk
c3QsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgbG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkc3QsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIGRzdCk7
Ci0KLSAgICBKdW1wTGlzdCBpczE2Qml0OwotICAgIEp1bXBMaXN0IGNvbnQ4Qml0OwotICAgIGlz
MTZCaXQuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMSwgVHJ1c3RlZEltbTMyKFN0cmlu
Z0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKLSAgICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhkc3QsIDApLCBkc3QpOwotICAgIGNvbnQ4Qml0LmFwcGVuZChqdW1wKCkpOworICAgIGxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkp
LCByZWdUMSk7CisKKyAgICBhdXRvIGlzMTZCaXQgPSBicmFuY2hUZXN0MzIoWmVybywgQWRkcmVz
cyhkc3QsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nSW1w
bDo6ZmxhZ0lzOEJpdCgpKSk7CisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVn
VDEsIDApLCBkc3QpOworICAgIGF1dG8gZG9uZSA9IGp1bXAoKTsKICAgICBpczE2Qml0Lmxpbmso
dGhpcyk7Ci0gICAgbG9hZDE2KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRzdCwgMCksIGRzdCk7
Ci0gICAgY29udDhCaXQubGluayh0aGlzKTsKKyAgICBsb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVnVDEsIDApLCBkc3QpOworICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAogQUxXQVlT
X0lOTElORSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWRDYWxsKENvZGVQdHI8Tm9QdHJUYWc+IHRh
cmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApp
bmRleCBiMDcwOWUzMWRmYzU5ZWZiNTU5YTE2MmM1ZmQ4NmQwMWUxMDFjNjYzLi42OTM5MjMxZjE5
ZTkwMzY0MzliZjhmOTZjYWFhZjRiZTc0MzRlMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC02MjcsMTIgKzYyNywxMSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHN0cmluZ0dldEJ5VmFsR2VuZXJhdG9yKFZN
JiB2bSkKICAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaDMyKEpTSW50ZXJmYWNlSklUOjpB
Ym92ZU9yRXF1YWwsIGluZGV4R1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAvLyBMb2FkIHRoZSBj
aGFyYWN0ZXIKLSAgICBKU0ludGVyZmFjZUpJVDo6SnVtcExpc3QgaXMxNkJpdDsKICAgICBKU0lu
dGVyZmFjZUpJVDo6SnVtcExpc3QgY29udDhCaXQ7CiAgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZs
YWdzCiAgICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhzdHJpbmdHUFIsIFN0
cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBqaXQubG9hZFB0cihK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyhzdHJpbmdHUFIsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQo
KSksIHN0cmluZ0dQUik7Ci0gICAgaXMxNkJpdC5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihKU0lu
dGVyZmFjZUpJVDo6WmVybywgc2NyYXRjaEdQUiwgSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0z
MihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CisgICAgYXV0byBpczE2Qml0ID0gaml0LmJy
YW5jaFRlc3QzMihKU0ludGVyZmFjZUpJVDo6WmVybywgc2NyYXRjaEdQUiwgSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKICAgICBqaXQubG9h
ZDgoSlNJbnRlcmZhY2VKSVQ6OkJhc2VJbmRleChzdHJpbmdHUFIsIGluZGV4R1BSLCBKU0ludGVy
ZmFjZUpJVDo6VGltZXNPbmUsIDApLCBzdHJpbmdHUFIpOwogICAgIGNvbnQ4Qml0LmFwcGVuZChq
aXQuanVtcCgpKTsKICAgICBpczE2Qml0LmxpbmsoJmppdCk7CkBAIC02NzIsNyArNjcxLDcgQEAg
c3RhdGljIHZvaWQgc3RyaW5nQ2hhckxvYWQoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0KQogICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGlzMTZCaXQ7CiAgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6SnVtcExpc3QgY29udDhCaXQ7CiAgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZsYWdz
Ci0gICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMik7CisgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3RyaW5nSW1wbDo6ZGF0YU9mZnNl
dCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGlzMTZCaXQuYXBwZW5kKGpp
dC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhC
aXQoKSkpKTsKICAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc09uZSwgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTcx
Nyw2ICs3MTYsNTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBmcm9t
Q2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CiB9CiAK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc3RyaW5nUHJvdG90eXBlQ29k
ZVBvaW50QXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCit7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQodm0sIDEpOworCisgICAgLy8gbG9hZCBzdHJpbmcKKyAgICBqaXQubG9hZEpTU3RyaW5n
QXJndW1lbnQoU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGhpc0FyZ3VtZW50LCBHUFJJbmZvOjpyZWdU
MCk7CisKKyAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDMsIGFuZCBzdGFydCB0aGUg
cHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMgorICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNTdHJpbmc6Om9m
ZnNldE9mVmFsdWUoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShq
aXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChHUFJJbmZvOjpyZWdUMCkpOworICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBTdHJpbmdJbXBsOjpsZW5n
dGhNZW1vcnlPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QzKTsKKworICAgIC8vIGxvYWQgaW5kZXgK
KyAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgR1BSSW5mbzo6cmVnVDEpOyAvLyByZWdUMSBj
b250YWlucyB0aGUgaW5kZXgKKworICAgIC8vIERvIGFuIHVuc2lnbmVkIGNvbXBhcmUgdG8gc2lt
dWx0YW5lb3VzbHkgZmlsdGVyIG5lZ2F0aXZlIGluZGljZXMgYXMgd2VsbCBhcyBpbmRpY2VzIHRo
YXQgYXJlIHRvbyBsYXJnZQorICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QzKSk7
CisKKyAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IGRvbmU7CisgICAgLy8gTG9hZCB0aGUgc3RyaW5nIGZsYWdzCisgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0
KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBpczE2Qml0ID0gaml0LmJyYW5jaFRlc3Qz
MihDQ2FsbEhlbHBlcnM6Olplcm8sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpOworICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6
OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6
VGltZXNPbmUsIDApLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAo
KSk7CisKKyAgICBpczE2Qml0LmxpbmsoJmppdCk7CisgICAgaml0LmxvYWQxNihDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVy
czo6VGltZXNUd28sIDApLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgLy8gT3JpZ2luYWwgaW5kZXgg
aXMgaW50MzJfdCwgYW5kIGhlcmUsIHdlIGVuc3VyZSB0aGF0IGl0IGlzIHBvc2l0aXZlLiBJZiB3
ZSBpbnRlcnByZXQgaXQgYXMgdWludDMyX3QsIGFkZGluZyAxIG5ldmVyIG92ZXJmbG93cy4KKyAg
ICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBkb25lLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1
YWwsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMykpOworICAgIGppdC5hbmQzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBkb25lLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZDgw
MCkpKTsKKyAgICBqaXQubG9hZDE2KENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJl
Z1QyLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc1R3bywgMCksIEdQUkluZm86
OnJlZ1QyKTsKKyAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhmZmZm
ZmMwMCksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgZG9uZS5hcHBlbmQo
aml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QzLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRjMDApKSk7CisgICAgaml0LmxzaGlmdDMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEwKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5nZXRF
ZmZlY3RpdmVBZGRyZXNzKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc09uZSwgLVUxNl9TVVJST0dBVEVfT0ZG
U0VUKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGRvbmUubGluaygmaml0KTsKKworICAgIGppdC5y
ZXR1cm5JbnQzMihHUFJJbmZvOjpyZWdUMCk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS5q
aXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiY29kZVBvaW50QXQiKTsKK30KKwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjbHozMlRodW5rR2VuZXJhdG9yKFZN
JiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRleCA5MTUzODIxMjBhZTc2MzBm
ZmIyZWFlZjhjZTI2ZGFkNzE1ZDkwYTYzLi5mOWIzYzhjYzY3YWFlMmJjZTEyOTA5MDljYzUxY2Mx
ZGRhNDE0MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmgKQEAgLTU1LDYgKzU1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzdHJpbmdHZXRCeVZhbEdlbmVyYXRvcihWTSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGFyQXRUaHVua0dlbmVyYXRvcihWTSYpOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzdHJpbmdQcm90b3R5cGVDb2Rl
UG9pbnRBdFRodW5rR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGNsejMyVGh1bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYWJzVGh1bmtHZW5lcmF0b3IoVk0mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IGZiYzRl
ZjNjZDhmMmVjNjJkYTkzMDBkYTI3MWIxMDIzMzk3NDM0ZmMuLmExMmEyNDA1NWM3MjkwYTNhMWM5
NTZmNmFiNGU3NjM3Zjg3ZmJiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmNwcApAQCAtMTIzLDYgKzEyMyw4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05h
bWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJPYmplY3RLZXlzSW50cmlu
c2ljIjsKICAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKICAgICAgICAg
cmV0dXJuICJSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOworICAgIGNhc2UgU3RyaW5n
UHJvdG90eXBlQ29kZVBvaW50QXRJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiU3RyaW5nUHJv
dG90eXBlQ29kZVBvaW50QXRJbnRyaW5zaWMiOwogICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlVmFs
dWVPZkludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50
cmluc2ljIjsKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDkzZDM2NDNjYWU4Y2Fm
YWE4YTg1OGUwNjJlYzE1NjA4OTAwMzUyOTIuLmU1MWI4MzlkOTg2Njc2ODk4M2U3NTE4ZTI0NzVl
YTM1OGQ5ZmQ4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
CkBAIC03NCw2ICs3NCw3IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7CiAgICAgT2JqZWN0
SXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0S2V5c0ludHJpbnNpYywKICAgICBSZWZsZWN0R2V0UHJv
dG90eXBlT2ZJbnRyaW5zaWMsCisgICAgU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRJbnRyaW5z
aWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywKICAgICBTdHJpbmdQcm90
b3R5cGVSZXBsYWNlSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VSZWdFeHBJ
bnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAppbmRleCAxNjgxOTk2YTEyOWMxNThhM2Q2MWJjZjcxM2FhZDlmZjU1NWIyODY0
Li5mODgwZDU0NjRhZmQ3OTU3MjdhNDYwNGQ1MjE0YTBkZmEzNTY0ZmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVfSU5UUklO
U0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9m
LCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDAsIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMp
OwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigi
Y2hhckF0Iiwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgQ2hhckF0SW50cmluc2ljKTsKICAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNoYXJDb2RlQXQi
LCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgQ2hhckNvZGVBdEludHJpbnNpYyk7Ci0gICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNvZGVQb2ludEF0Iiwgc3RyaW5n
UHJvdG9GdW5jQ29kZVBvaW50QXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oImNvZGVQb2ludEF0Iiwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50
QXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
LCBTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdEludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluZGV4T2YiLCBzdHJpbmdQcm90b0Z1bmNJbmRl
eE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImxhc3RJbmRl
eE9mIiwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucmVwbGFjZVVzaW5nUmVnRXhwUHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVVzaW5nUmVnRXhwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMiwgU3RyaW5nUHJvdG90eXBlUmVwbGFjZVJlZ0V4cEludHJpbnNpYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZjg1MmRkMmY2YzgwNTFmNWYzOWI1
ZDEwNTVjYWM4MTBlODkzYTE5My4uZGZmOGFmNDNjMGJjZDI0MTdjNjZhNDBmNDM3MjU4ODdiZDJj
ZTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjQwLDYgKzY0MCw4
IEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRy
aW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gY2hhckNvZGVBdFRodW5rR2VuZXJhdG9y
OwogICAgIGNhc2UgQ2hhckF0SW50cmluc2ljOgogICAgICAgICByZXR1cm4gY2hhckF0VGh1bmtH
ZW5lcmF0b3I7CisgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdEludHJpbnNpYzoK
KyAgICAgICAgcmV0dXJuIHN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0VGh1bmtHZW5lcmF0b3I7
CiAgICAgY2FzZSBDbHozMkludHJpbnNpYzoKICAgICAgICAgcmV0dXJuIGNsejMyVGh1bmtHZW5l
cmF0b3I7CiAgICAgY2FzZSBGcm9tQ2hhckNvZGVJbnRyaW5zaWM6CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyYzBiN2E1OTk0MDI1NmVk
YjFmNjE1MjVkMWUxYTc3ZWEyMGMyZWQuLjkwNjNmOWQwYjJlZTk0MGMzZDU3OWQ2ZjlmZTRlNzBi
OGIyOTVmY2MgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgU3RyaW5nQ29kZVBvaW50QXQgaW50
cmluc2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDE2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9zdHJpbmctY2hhci1hdC1jb25zdGFudC1pbmRleC1vdXQtb2YtcmFuZ2UuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3Ry
ZXNzL3N0cmluZy1jaGFyLWNvZGUtYXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0
cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC0tb3V0LW9mLXJhbmdlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9zdHJpbmct
Y29kZS1wb2ludC1hdC1iYXNpYy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KiBzdHJlc3Mvc3RyaW5nLWNvZGUtcG9pbnQtYXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1pbnQzMi1tYXgtaW5kZXgt
b3V0LW9mLXJhbmdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIHN0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1zdXJy
b2dhdGUtcGFpci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGJyZWFraW5nKToKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLWNvZGUtcG9p
bnQtYXQtc3Vycm9nYXRlLXBhaXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAqIHN0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisKIDIwMTktMDktMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViQXNzZW1ibHldIFVzZSBTdHJlYW1pbmdQYXJzZXIgaW4gZXhpc3Rp
bmcgV2FzbTo6QkJRUGxhbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNoYXIt
YXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5n
LWNoYXItYXQtY29uc3RhbnQtaW5kZXgtb3V0LW9mLXJhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiYTM5
MGZhYTQwNGRlZTUwNTQ5NzFmMzBhNzhkYjI3YjU5NGY2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9zdHJpbmctY2hhci1hdC1jb25zdGFudC1pbmRleC1vdXQtb2YtcmFuZ2Uu
anMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qoc3RyaW5nKSB7Cisg
ICAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCIiKSwgIiIpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNoYXItY29kZS1hdC1jb25zdGFudC1pbmRl
eC1vdXQtb2YtcmFuZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY2hhci1jb2RlLWF0LWNv
bnN0YW50LWluZGV4LW91dC1vZi1yYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDFlYTZhNWExM2ZhM2I5
YjNlZDk0OTYxYzlhN2RlMGQ5ZjQ5ODMwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvc3RyaW5nLWNoYXItY29kZS1hdC1jb25zdGFudC1pbmRleC1vdXQtb2YtcmFuZ2UuanMKQEAg
LTAsMCArMSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qoc3RyaW5nKSB7CisgICAgcmV0
dXJuIHN0cmluZy5jaGFyQ29kZUF0KDApOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUoTnVtYmVyLmlzTmFOKHRlc3QoIiIp
KSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1h
dC0tb3V0LW9mLXJhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNvZGUtcG9pbnQtYXQt
LW91dC1vZi1yYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzk2MmJhYmZmOWJlMmJiYjMzODkyMThjZGY4
MDVlZmZlNjI3YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNv
ZGUtcG9pbnQtYXQtLW91dC1vZi1yYW5nZS5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGVzdChzdHJpbmcsIGluZGV4KSB7CisgICAgcmV0dXJuIHN0cmluZy5jb2RlUG9p
bnRBdChpbmRleCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCIiLCAtMSksIHVuZGVmaW5lZCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1iYXNpYy5qcyBiL0pTVGVz
dHMvc3RyZXNzL3N0cmluZy1jb2RlLXBvaW50LWF0LWJhc2ljLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5YmE0
NGExNTUwMDk0YjVjNWZiYjAwMzczYmJhNDM0ZjNkMGJlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1iYXNpYy5qcwpAQCAtMCwwICsxLDQg
QEAKK2Z1bmN0aW9uIHRlc3Qoc3RyaW5nLCBpbmRleCkKK3sKKyAgICByZXR1cm4gc3RyaW5nLmNv
ZGVQb2ludEF0KGluZGV4KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0cmluZy1j
b2RlLXBvaW50LWF0LWNvbnN0YW50LWluZGV4LW91dC1vZi1yYW5nZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3N0cmluZy1jb2RlLXBvaW50LWF0LWNvbnN0YW50LWluZGV4LW91dC1vZi1yYW5nZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNDZmMmE3YWY4MzNlYmE5Njk5YWY4MDFkYmRkNjNlMWRiMGE5N2ZlCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWNvZGUtcG9pbnQtYXQtY29uc3Rh
bnQtaW5kZXgtb3V0LW9mLXJhbmdlLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5j
dGlvbiB0ZXN0KHN0cmluZykgeworICAgIHJldHVybiBzdHJpbmcuY29kZVBvaW50QXQoMCk7Cit9
Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBz
aG91bGRCZSh0ZXN0KCIiKSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3N0cmluZy1jb2RlLXBvaW50LWF0LWNvbnN0YW50LWludDMyLW1heC1pbmRleC1vdXQtb2YtcmFu
Z2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1pbnQz
Mi1tYXgtaW5kZXgtb3V0LW9mLXJhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMmIxY2U0MTdiM2FhMTU1
ZjIxNWQ1ZDNmMjg3OGUzODgxNDQxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1pbnQzMi1tYXgtaW5kZXgtb3V0LW9mLXJh
bmdlLmpzCkBAIC0wLDAgKzEsMjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVu
Y3Rpb24gdGVzdChzdHJpbmcpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAgcmV0dXJuIHN0cmlu
Zy5jb2RlUG9pbnRBdCgweDdmZmZmZmZmKTsKKyAgICByZXR1cm4gNDI7Cit9Citub0lubGluZSh0
ZXN0KTsKKworZmxhZyA9IHRydWU7Citmb3IgKHZhciBpID0gMDsgaSA8IDQwOyArK2kpIHsKKyAg
ICBzaG91bGRCZSh0ZXN0KCIiKSwgdW5kZWZpbmVkKTsKK30KKworZmxhZyA9IGZhbHNlOworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCIiKSwgNDIpOwor
CitmbGFnID0gdHJ1ZTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxk
QmUodGVzdCgiIiksIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdHJp
bmctY29kZS1wb2ludC1hdC1jb25zdGFudC1zdXJyb2dhdGUtcGFpci5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3N0cmluZy1jb2RlLXBvaW50LWF0LWNvbnN0YW50LXN1cnJvZ2F0ZS1wYWlyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRjNGUzYzhjNGE1N2I2NGFiMzkwZmVmYjc0MGJkNWU3YmQ3M2RjMjAKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC1jb25zdGFudC1z
dXJyb2dhdGUtcGFpci5qcwpAQCAtMCwwICsxLDIyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVz
dChzdHJpbmcpIHsKKyAgICByZXR1cm4gc3RyaW5nLmNvZGVQb2ludEF0KDApOworfQorbm9Jbmxp
bmUodGVzdCk7CisKK2Z1bmN0aW9uIGJyZWFraW5nKHN0cmluZykgeworICAgIHJldHVybiBzdHJp
bmcuY29kZVBvaW50QXQoMSk7Cit9Citub0lubGluZShicmVha2luZyk7CisKK3ZhciBzdHJpbmcg
PSAi8KCut+mHjuWutiI7CitzaG91bGRCZShzdHJpbmcubGVuZ3RoLCA0KTsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0KHN0cmluZyksIDB4MjBiYjcp
OworICAgIHNob3VsZEJlKHRlc3QoIvCgrrciKSwgMHgyMGJiNyk7CisgICAgc2hvdWxkQmUoYnJl
YWtpbmcoc3RyaW5nKSwgMHhkZmI3KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0
cmluZy1jb2RlLXBvaW50LWF0LXN1cnJvZ2F0ZS1wYWlyLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3Ry
aW5nLWNvZGUtcG9pbnQtYXQtc3Vycm9nYXRlLXBhaXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQzYmFkMDNi
YmIyYTI5NDBlYzJiZWU2MGNlZDY4MDcwZTI5NjM4MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3N0cmluZy1jb2RlLXBvaW50LWF0LXN1cnJvZ2F0ZS1wYWlyLmpzCkBAIC0wLDAg
KzEsNjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6
ICR7YWN0dWFsfSwgZXhwZWN0ZWQgJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gdGVzdFN1
cnJvZ2F0ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQpIHsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRlc3RTdHJpbmcubGVuZ3RoOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRlc3RTdHJpbmcu
Y29kZVBvaW50QXQoaSksIGV4cGVjdGVkW2ldKTsKK30KK25vSW5saW5lKHRlc3RTdXJyb2dhdGVQ
YWlyKTsKKworLy8gIlx1RDg0Mlx1REZCN1x1OTFjZVx1NWJiNiIKK3ZhciB0ZXN0U3RyaW5nID0g
IvCgrrfph47lrrYiOwordmFyIGV4cGVjdGVkID0gWworICAgIDB4MjBCQjcsCisgICAgMHhERkI3
LAorICAgIDB4OTFDRSwKKyAgICAweDVCQjYsCitdOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7
ICsraSkKKyAgICB0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CisKK3Zh
ciB0ZXN0U3RyaW5nID0gIkFcdUQ4NDIiOwordmFyIGV4cGVjdGVkID0gWworICAgIDB4MDA0MSwK
KyAgICAweEQ4NDIsCitdOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICB0ZXN0
U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CisKK3ZhciB0ZXN0U3RyaW5nID0g
IkFcdUQ4NDJBIjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICAweDAwNDEsCisgICAgMHhEODQyLAor
ICAgIDB4MDA0MSwKK107Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHRlc3RT
dXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkKTsKKwordmFyIHRlc3RTdHJpbmcgPSAi
QVx1RDg0Mlx1REZCNyI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgMHgwMDQxLAorICAgIDB4MjBC
QjcsCisgICAgMHhERkI3LAorXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAg
dGVzdFN1cnJvZ2F0ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQpOworCit2YXIgdGVzdFN0cmlu
ZyA9ICJcdUQ4NDJBXHVERkI3IjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICAweEQ4NDIsCisgICAg
MHgwMDQxLAorICAgIDB4REZCNywKK107Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQor
ICAgIHRlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkKTsKKwordmFyIHRlc3RT
dHJpbmcgPSAiXHVERkI3XHVEODQyQSI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgMHhERkI3LAor
ICAgIDB4RDg0MiwKKyAgICAweDAwNDEsCitdOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsr
aSkKKyAgICB0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctY29kZS1wb2ludC1hdC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3N0cmluZy1jb2RlLXBvaW50LWF0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlYzg3YjYzZTAwNDQxOTUy
YjA0YWRiMzFjNGIwNjNkNWEzYmM1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9zdHJpbmctY29kZS1wb2ludC1hdC5qcwpAQCAtMCwwICsxLDcxIEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke2FjdHVhbH0sIGV4cGVjdGVkICR7
ZXhwZWN0ZWR9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcs
IGV4cGVjdGVkKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U3RyaW5nLmxlbmd0aDsg
KytpKQorICAgICAgICBzaG91bGRCZSh0ZXN0U3RyaW5nLmNvZGVQb2ludEF0KGkpLCBleHBlY3Rl
ZFtpXSk7Cit9Citub0lubGluZSh0ZXN0U3Vycm9nYXRlUGFpcik7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU1OyArK2kpIHsKKyAgICB2YXIgdGVzdFN0cmluZyA9ICdDb2NvYSc7CisgICAgdmFy
IGV4cGVjdGVkID0gWworICAgICAgICA2NywKKyAgICAgICAgMTExLAorICAgICAgICA5OSwKKyAg
ICAgICAgMTExLAorICAgICAgICA5NywKKyAgICBdOworICAgIHRlc3RTdXJyb2dhdGVQYWlyKHRl
c3RTdHJpbmcsIGV4cGVjdGVkKTsKKworICAgIC8vICJcdUQ4NDJcdURGQjdcdTkxY2VcdTViYjYi
CisgICAgdmFyIHRlc3RTdHJpbmcgPSAi8KCut+mHjuWutiI7CisgICAgdmFyIGV4cGVjdGVkID0g
WworICAgICAgICAweDIwQkI3LAorICAgICAgICAweERGQjcsCisgICAgICAgIDB4OTFDRSwKKyAg
ICAgICAgMHg1QkI2LAorICAgIF07CisgICAgdGVzdFN1cnJvZ2F0ZVBhaXIodGVzdFN0cmluZywg
ZXhwZWN0ZWQpOworCisgICAgdmFyIHRlc3RTdHJpbmcgPSAiQVx1RDg0MiI7CisgICAgdmFyIGV4
cGVjdGVkID0gWworICAgICAgICAweDAwNDEsCisgICAgICAgIDB4RDg0MiwKKyAgICBdOworICAg
IHRlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkKTsKKworICAgIHZhciB0ZXN0
U3RyaW5nID0gIkFcdUQ4NDJBIjsKKyAgICB2YXIgZXhwZWN0ZWQgPSBbCisgICAgICAgIDB4MDA0
MSwKKyAgICAgICAgMHhEODQyLAorICAgICAgICAweDAwNDEsCisgICAgXTsKKyAgICB0ZXN0U3Vy
cm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCk7CisKKyAgICB2YXIgdGVzdFN0cmluZyA9
ICJBXHVEODQyXHVERkI3IjsKKyAgICB2YXIgZXhwZWN0ZWQgPSBbCisgICAgICAgIDB4MDA0MSwK
KyAgICAgICAgMHgyMEJCNywKKyAgICAgICAgMHhERkI3LAorICAgIF07CisgICAgdGVzdFN1cnJv
Z2F0ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQpOworCisgICAgdmFyIHRlc3RTdHJpbmcgPSAi
XHVEODQyQVx1REZCNyI7CisgICAgdmFyIGV4cGVjdGVkID0gWworICAgICAgICAweEQ4NDIsCisg
ICAgICAgIDB4MDA0MSwKKyAgICAgICAgMHhERkI3LAorICAgIF07CisgICAgdGVzdFN1cnJvZ2F0
ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQpOworCisgICAgdmFyIHRlc3RTdHJpbmcgPSAiXHVE
RkI3XHVEODQyQSI7CisgICAgdmFyIGV4cGVjdGVkID0gWworICAgICAgICAweERGQjcsCisgICAg
ICAgIDB4RDg0MiwKKyAgICAgICAgMHgwMDQxLAorICAgIF07CisgICAgdGVzdFN1cnJvZ2F0ZVBh
aXIodGVzdFN0cmluZywgZXhwZWN0ZWQpOworfQo=
</data>
<flag name="review"
          id="394181"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>