<?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>178934</bug_id>
          
          <creation_ts>2017-10-27 05:15:37 -0700</creation_ts>
          <short_desc>[DFG][FTL] Introduce StringSlice</short_desc>
          <delta_ts>2017-11-15 12:36:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1365330</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-27 05:15:37 -0700</bug_when>
    <thetext>[DFG][FTL] Introduce StringSlice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365331</commentid>
    <comment_count>1</comment_count>
      <attachid>325150</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-27 05:24:28 -0700</bug_when>
    <thetext>Created attachment 325150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365406</commentid>
    <comment_count>2</comment_count>
      <attachid>325150</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-27 10:12:30 -0700</bug_when>
    <thetext>Comment on attachment 325150
Patch

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

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

Nit: even though they’re equivalent in this context, I think &gt; 2 is more intuitive

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4309
&gt; +        // end would be nullptr.

would =&gt; can

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4320
&gt; +        LValue startIndex = m_out.select(m_out.greaterThanOrEqual(start, m_out.int32Zero),

These two boundary selections are equivalent if parameterized on start/end. Might be worth making a lambda</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365435</commentid>
    <comment_count>3</comment_count>
      <attachid>325150</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-27 10:48:16 -0700</bug_when>
    <thetext>Comment on attachment 325150
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        1. Empty string generation is accelerated. It is fully executed inlinely.

inlinely =&gt;inline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366832</commentid>
    <comment_count>4</comment_count>
      <attachid>325150</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 06:23:03 -0700</bug_when>
    <thetext>Comment on attachment 325150
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +        1. Empty string generation is accelerated. It is fully executed inlinely.
&gt; 
&gt; inlinely =&gt;inline

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2919
&gt;&gt; +        if (argumentCountIncludingThis != 2)
&gt; 
&gt; Nit: even though they’re equivalent in this context, I think &gt; 2 is more intuitive

Changed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4309
&gt;&gt; +        // end would be nullptr.
&gt; 
&gt; would =&gt; can

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4320
&gt;&gt; +        LValue startIndex = m_out.select(m_out.greaterThanOrEqual(start, m_out.int32Zero),
&gt; 
&gt; These two boundary selections are equivalent if parameterized on start/end. Might be worth making a lambda

Yeah, nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366833</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 06:25:39 -0700</bug_when>
    <thetext>Committed r224276: &lt;https://trac.webkit.org/changeset/224276&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366956</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-11-01 11:46:46 -0700</bug_when>
    <thetext>This change introduced an assertion failure with LayoutTest inspector/formatting/formatting-javascript.html:
https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK1%20(Tests)/r224277%20(4602)/results.html

ASSERTION FAILED: graph.m_plan.weakReferences.contains(cell)
./ftl/FTLOutput.h(112) : LValue JSC::FTL::Output::weakPointer(DFG::Graph &amp;, JSC::JSCell *)
1   0x10f31c9f0 WTFCrash
2   0x10e9abd12 JSC::FTL::Output::weakPointer(JSC::DFG::Graph&amp;, JSC::JSCell*)
3   0x10e9288e9 JSC::FTL::(anonymous namespace)::LowerDFGToB3::compileStringSlice()
4   0x10e8ece68 JSC::FTL::(anonymous namespace)::LowerDFGToB3::compileNode(unsigned int)
5   0x10e8e7bf0 JSC::FTL::(anonymous namespace)::LowerDFGToB3::compileBlock(JSC::DFG::BasicBlock*)
6   0x10e8e3a56 JSC::FTL::(anonymous namespace)::LowerDFGToB3::lower()
7   0x10e8e274e JSC::FTL::lowerDFGToB3(JSC::FTL::State&amp;)
8   0x10e728b37 JSC::DFG::Plan::compileInThreadImpl()
9   0x10e72367d JSC::DFG::Plan::compileInThread(JSC::DFG::ThreadData*)
10  0x10e8b755e JSC::DFG::Worklist::ThreadBody::work()
11  0x10f32a3fe WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0::operator()() const
12  0x10f32a0dc WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call()
13  0x10f35a8fe WTF::Function&lt;void ()&gt;::operator()() const
14  0x10f3a96ea WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
15  0x10f3af0d5 WTF::wtfThreadEntryPoint(void*)
16  0x7fff8536b99d _pthread_body
17  0x7fff8536b91a _pthread_body
18  0x7fff85369351 thread_start

The same assertion is also seen with 121 tests on the Debug JSC bot: https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/1479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366960</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 11:55:14 -0700</bug_when>
    <thetext>Committed r224285: &lt;https://trac.webkit.org/changeset/224285&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367003</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-01 13:01:31 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; Committed r224285: &lt;https://trac.webkit.org/changeset/224285&gt;

Maybe it’s worth making FTLOutput’s weakPointer private and just friend lower’s weakPointer? Or maybe we can use naming to help prevent this mistake in the future in a case where it actually matters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369405</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-08 06:11:37 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #8)
&gt; (In reply to Yusuke Suzuki from comment #7)
&gt; &gt; Committed r224285: &lt;https://trac.webkit.org/changeset/224285&gt;
&gt; 
&gt; Maybe it’s worth making FTLOutput’s weakPointer private and just friend
&gt; lower’s weakPointer? Or maybe we can use naming to help prevent this mistake
&gt; in the future in a case where it actually matters.

It sound nice. I&apos;ll open a bug for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372201</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:36:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567861&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325150</attachid>
            <date>2017-10-27 05:24:28 -0700</date>
            <delta_ts>2017-10-27 10:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178934-20171027212427.patch</filename>
            <type>text/plain</type>
            <size>38423</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjdiNmI4YmE1MjMyOTM4NTBhYzMxMjc2ZTE3ODk0ODQyZTY3NjVmLi5lZWNjMDc1MzEwYzE5YmU5
NDQ2ZGJhNWIxOWRmY2VmNjQ5ZjYwMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAxNy0xMC0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEludHJvZHVjZSBTdHJpbmdTbGljZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4OTM0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RyaW5nLnByb3RvdHlw
ZS5zbGljZSBpcyBvbmUgb2YgdGhlIG1vc3QgZnJlcXVlbnRseSBjYWxsZWQgZnVuY3Rpb24gaW4g
QVJFUy02L0JhYnlsb24uCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBTdHJpbmdTbGlj
ZSBERkcgbm9kZSB0byBvcHRpbWl6ZSBpdCBpbiBERkcgYW5kIEZUTC4KKworICAgICAgICBUaGlz
IHBhdGNoJ3MgU3RyaW5nU2xpY2Ugbm9kZSBvcHRpbWl6ZXMgdGhlIGZvbGxvd2luZyB0aGluZ3Mu
CisKKyAgICAgICAgMS4gRW1wdHkgc3RyaW5nIGdlbmVyYXRpb24gaXMgYWNjZWxlcmF0ZWQuIEl0
IGlzIGZ1bGx5IGV4ZWN1dGVkIGlubGluZWx5LgorICAgICAgICAyLiBPbmUgY2hhciBzdHJpbmcg
Z2VuZXJhdGlvbiBpcyBhY2NlbGVyYXRlZC4gYDwgMHgxMDBgIGNoYXJhY3RlciBpcyBzdXBwb3J0
ZWQgcmlnaHQgbm93LgorICAgICAgICBJdCBpcyB0aGUgc2FtZSB0byBjaGFyQXQgYWNjZWxlcmF0
aW9uLgorICAgICAgICAzLiBXZSBjYWxjdWxhdGUgc3RhcnQgYW5kIGVuZCBpbmRleCBpbiBERkcv
RlRMIHdpdGggSW50MzJVc2UgaW5mb3JtYXRpb24gYW5kIGNhbGwgb3B0aW1pemVkCisgICAgICAg
IG9wZXJhdGlvbi4KKworICAgICAgICBXZSBkbyBub3QgaW5saW5lICgzKSdzIG9wZXJhdGlvbiBy
aWdodCBub3cgc2luY2Ugd2UgZG8gbm90IGhhdmUgYSB3YXkgdG8gY2FsbCBibWFsbG9jIGFsbG9j
YXRpb24gZnJvbSBERkcgLyBGVEwuCisgICAgICAgIEFuZCB3ZSBkbyBub3Qgb3B0aW1pemUgU3Ry
aW5nLnByb3RvdHlwZS57c3Vic3RyaW5nLHN1YnN0cn0gcmlnaHQgbm93LiBCdXQgdGhleSBjYW4g
YmUgb3B0aW1pemVkIGJhc2VkIG9uIHRoaXMgY2hhbmdlCisgICAgICAgIGluIHN1YnNlcXVlbnQg
Y2hhbmdlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIEFSRVMtNi9CYWJ5bG9uIHBl
cmZvcm1hbmNlIGJ5IDMlIGluIHN0ZWFkeSBzdGF0ZS4KKworICAgICAgICBCYXNlbGluZToKKyAg
ICAgICAgICAgIFJ1bm5pbmcuLi4gQmFieWxvbiAoIDEgIHRvIGdvKQorICAgICAgICAgICAgZmly
c3RJdGVyYXRpb246ICAgICA1MC4wNSArLSAxMy42OCBtcworICAgICAgICAgICAgYXZlcmFnZVdv
cnN0Q2FzZTogICAxNi44MCArLSAxLjI3IG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAg
ICAgIDcuNTMgKy0gMC4yMiBtcworCisgICAgICAgIFBhdGNoZWQ6CisgICAgICAgICAgICBSdW5u
aW5nLi4uIEJhYnlsb24gKCAxICB0byBnbykKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9uOiAg
ICAgNTAuOTEgKy0gMTMuNDEgbXMKKyAgICAgICAgICAgIGF2ZXJhZ2VXb3JzdENhc2U6ICAgMTYu
MTIgKy0gMC45OSBtcworICAgICAgICAgICAgc3RlYWR5U3RhdGU6ICAgICAgICA3LjMwICstIDAu
MjkgbXMKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6
OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAg
ICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXpl
KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2Vz
R0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
YWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nU2xpY2UpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0UG9wdWxhdGVTbGljZUluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnBvcHVsYXRlU2xpY2VSYW5nZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVN0cmluZ1NsaWNlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50
cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDE3LTEwLTI1ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRA
ZGV2aW5yb3Vzc28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgYSB3YXkg
dG8gZW5hYmxlL2Rpc2FibGUgZXZlbnQgbGlzdGVuZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXgg
Y2I1OGJmMDZkMWI4MDQ4NGQzNDAxMzJmNTY0ZWZhZDZkMGEyZGE5Ni4uNDUyMjg1MjM4MDkzNDc1
ODY5OGYzNTU2YzYzOWNkNGNhZDIzNGNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTA5OSw2
ICsxMDk5LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgU3RyaW5nU2xpY2U6IHsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKG1fZ3JhcGgsIFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIFRvTG93ZXJDYXNlOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCBTcGVjU3RyaW5nKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBl
Nzc5NmZiNDk4MWI1Mzk5NTU4ZWI5OTRhMjJkOWMzYWNkOTZiZjVkLi4zZDJiZThjZmYyY2Q5NWU2
OTdkNDdkYWE5MWRiN2MzZWUwYjZjMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTIyNiw2
ICsyMjYsMjcgQEAgY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICBub2RlLT5jaGlsZDIoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVV
c2VzQXNWYWx1ZSB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCB8IE5vZGVCeXRlY29kZVVzZXNBc0Fy
cmF5SW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNl
IFN0cmluZ1NsaWNlOiB7CisgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhO
b2RlQnl0ZWNvZGVVc2VzQXNWYWx1ZSk7CisgICAgICAgICAgICBub2RlLT5jaGlsZDIoKS0+bWVy
Z2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhl
ciB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCB8IE5vZGVCeXRlY29kZVVzZXNBc0FycmF5SW5kZXgp
OworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkMygpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRl
Y29kZVVzZXNBc090aGVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50IHwgTm9kZUJ5dGVjb2RlVXNl
c0FzQXJyYXlJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgQXJyYXlTbGljZTogeworICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNWYWx1ZSk7CisgICAgICAgICAgICBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNB
c051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNBc090aGVyIHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50
IHwgTm9kZUJ5dGVjb2RlVXNlc0FzQXJyYXlJbmRleCk7CisgICAgICAgICAgICBpZiAobm9kZS0+
bnVtQ2hpbGRyZW4oKSA9PSAzKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMiktPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKS0+
bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNP
dGhlciB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCB8IE5vZGVCeXRlY29kZVVzZXNBc0FycmF5SW5k
ZXgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMyktPm1lcmdl
RmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVUludDMy
VG9OdW1iZXI6IHsKICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKGZsYWdz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggOWI5N2JmNjc0N2Y2ZTlhN2Q3ODgwMjllYmEyZWM3YTIwZTQzMmQxMi4uMzZmMjQ5NTE3
YTc2OGE1ZmI4YzM5MWMwMWE3ZTJjZWQzYTBiMWQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI5MDUsNiArMjkwNSwyNCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50
IHJlc3VsdE9wZXJhbmQsIEludHJpbgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAg
ICBjYXNlIFN0cmluZ1Byb3RvdHlwZVNsaWNlSW50cmluc2ljOiB7CisgICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGluc2VydENoZWNrcygpOworICAgICAgICBOb2RlKiB0aGlzU3RyaW5nID0gZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgIE5v
ZGUqIHN0YXJ0ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zm
c2V0KSk7CisgICAgICAgIE5vZGUqIGVuZCA9IG51bGxwdHI7CisgICAgICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQorICAgICAgICAgICAgZW5kID0gZ2V0KHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgIE5vZGUqIHJl
c3VsdCA9IGFkZFRvR3JhcGgoU3RyaW5nU2xpY2UsIHRoaXNTdHJpbmcsIHN0YXJ0LCBlbmQpOwor
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVRvTG93
ZXJDYXNlSW50cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAwMDY0MWRkZjYwYzYwYmNkY2E5NTU0Yzk4Yzg4MGYw
YmQ0ODI3NWFjLi40MjhlM2NhMGI0YmJjNmYyY2I1ZTRmYjk0N2I1MWNhMGRiZjFiMDMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTYyMSw2ICsxNjIx
LDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBjYXNlIFN0cmluZ1NsaWNlOgorICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICAgICAgZGVmKFB1cmVW
YWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAppbmRleCBiM2M2MjNmZDAyMzA0NTBkNjU4N2Y1N2Y3YTcxZTQ4NmNhZDk1Y2Vk
Li5iNGM5ZDUyNmFmZWM1MmY4M2QwOTVkNDU3Y2M3NmNiM2RmMTdjZjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMzIsNiArMzMyLDcgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgU3RyQ2F0OgogICAgIGNhc2Ug
U3RyaW5nUmVwbGFjZToKICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CisgICAgY2FzZSBT
dHJpbmdTbGljZToKICAgICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToK
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCBkYTEwY2YwOWU3Y2MyZmVkMDkyMzMxNDYwYTM2NDgxMTZjZmE3
MDc3Li45N2FlYWFlOWIwN2M5ODExNDdkZTNjNjc5MzhjMzg0YzJmZmRhODZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE5NTYsNiArMTk1Niwx
NCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTdHJpbmdTbGljZTogeworICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMo
KSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDMoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgVG9Mb3dlckNhc2U6
IHsKICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSBvbmx5IHN1cHBvcnQgU3RyaW5nVXNlIHNp
bmNlIHRoYXQgd2lsbCBlbnN1cmUgdGhhdAogICAgICAgICAgICAgLy8gVG9Mb3dlckNhc2UgaXMg
YSBwdXJlIG9wZXJhdGlvbi4gSWYgd2UgZGVjaWRlIHRvIHVwZGF0ZSB0aGlzIHdpdGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAwZDYzZTlmNzk0MGFiZDUwYjlj
ODE2OGEyNzRmN2FhMjU4OGM3NjkyLi4wMTgzYWU5ODM2NTZlYWUxODQ1MmJhY2RlZDUxYTJmODdj
NmYwN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC00NDQs
NiArNDQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIE5vZGVz
IGZvciBKU1dlYWtNYXAgYW5kIEpTV2Vha1NldCAqLyBcCiAgICAgbWFjcm8oV2Vha01hcEdldCwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgXAorICAgIG1hY3JvKFN0cmluZ1NsaWNlLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhUb0xvd2VyQ2FzZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgLyogTm9k
ZXMgZm9yIERPTSBKSVQgKi9cCiAgICAgbWFjcm8oQ2FsbERPTUdldHRlciwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKaW5kZXggM2EwZDE5NWYwNmE2NTI0NzQ5MWIyMmNkNWMyMTRlMjg2NTBlYmUx
My4uMzllZmFhNmFlYzk5ZmYwODZkNzg1YWZlMGE3ZDg2MzE4NzQ0M2I0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNzk2LDYgKzE3OTYsMTcg
QEAgU3RyaW5nSW1wbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlUm9wZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcKICAgICByZXR1cm4gc3RyaW5nLT52YWx1ZShleGVj
KS5pbXBsKCk7CiB9CiAKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdTdWJz
dHIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwsIGludDMyX3QgZnJvbSwgaW50MzJfdCBz
cGFuKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGF1dG8gc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCktPnZh
bHVlKGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAg
IHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBzdHJpbmcsIGZyb20sIHNwYW4pOworfQorCiBKU1N0
cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBzdHJpbmcsIHVpbnQzMl90IGZhaWxpbmdJbmRleCkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApp
bmRleCA3MDI1OTliZTNmNGRhNDEyNDM2NDEyZmI0OTJhMGM5NWE3NGI4MDI2Li45ZjU3ODhjMDVj
OTA4NTVmMGU0NTJjMjMxMGM0Zjc2MjViNzBlNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTc2LDYgKzE3Niw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogU3Ry
aW5nSW1wbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlUm9wZShFeGVjU3RhdGUqLCBK
U1N0cmluZyopOwogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU3RyaW5nU3Vic3RyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QsIGludDMy
X3QpOwogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Mb3dlckNhc2UoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqLCB1aW50MzJfdCk7CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW50MzJUb1N0cmluZyhFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggNjIyMGRlMWQxODZjZmU5MzMyMjE4ZjJlY2MyNzcyMGNjZDU3YWY2
MS4uNmQ4MmZmOGZjMzA3ZWRlZmJlOWUyZjlhNGNjZmM0MTRiOTU1NjQyZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKQEAgLTc4NCw2ICs3ODQsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CisgICAgICAgIGNhc2UgU3RyaW5nU2xpY2U6CiAgICAgICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAg
ICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGMw
NGI3MDI0ZTIxOWM5ZDI4MmEwMWQ1YzM5OWMxN2QxZDVhMDVmNjEuLjI1MjViMGVmZWY2NTQyNmYy
ZjEyM2YyOTZkZjQ4N2ExM2IwMWVmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCkBAIC00MTIsNiArNDEyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICBjYXNlIFJl
c29sdmVTY29wZToKICAgICBjYXNlIE1hcEhhc2g6CisgICAgY2FzZSBTdHJpbmdTbGljZToKICAg
ICBjYXNlIFRvTG93ZXJDYXNlOgogICAgIGNhc2UgR2V0TWFwQnVja2V0OgogICAgIGNhc2UgR2V0
TWFwQnVja2V0SGVhZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggMTQ2ZTczMjI4YjE0YTk0MjA1M2VhNjEyMzAyZmI0ZmFiOWE1MjY1
MS4uNGFmZjI2ZDVhODJlOWM2M2ZhNTA1YzM4MjhlZDE0MTQ0NTNkNTk0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE1MTYsNiAr
MTUxNiw3NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCb29sZWFuQnJh
bmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAganVtcChub3RUYWtlbik7CiB9
CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdTbGljZShOb2RlKiBub2RlKQor
eworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgR1BSVGVtcG9yYXJ5IHN0YXJ0SW5kZXgodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworCisgICAgR1BSUmVnIHN0
cmluZ0dQUiA9IHN0cmluZy5ncHIoKTsKKyAgICBHUFJSZWcgc3RhcnRJbmRleEdQUiA9IHN0YXJ0
SW5kZXguZ3ByKCk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgIEdQUlJl
ZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCisgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNo
aWxkMSgpLCBzdHJpbmdHUFIpOworCisgICAgeworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OkFkZHJlc3Moc3RyaW5nR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHRl
bXAyR1BSKTsKKworICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG5vZGUtPmNoaWxkMigp
LCB0ZW1wMkdQUiwgc3RhcnRJbmRleEdQUik7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkK
KyAgICAgICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgobm9kZS0+Y2hpbGQzKCksIHRlbXAy
R1BSLCB0ZW1wR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQubW92ZSh0ZW1w
MkdQUiwgdGVtcEdQUik7CisgICAgfQorCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25l
Q2FzZXM7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBhdXRv
IG5vbkVtcHR5Q2FzZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgc3Rh
cnRJbmRleEdQUiwgdGVtcEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKCZ2bSgpKSksIHRlbXBHUFIpOwor
ICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKworICAgIG5vbkVtcHR5Q2FzZS5s
aW5rKCZtX2ppdCk7CisgICAgbV9qaXQuc3ViMzIoc3RhcnRJbmRleEdQUiwgdGVtcEdQUik7IC8v
IHRoZSBzaXplIG9mIHRoZSBzbGljZWQgc3RyaW5nLgorICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1t
MzIoMSkpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
aW5nR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgdGVtcDJHUFIpOworICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVt
cDJHUFIpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVt
cDJHUFIsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHRlbXBHUFIpOworCisgICAgLy8gTG9h
ZCB0aGUgY2hhcmFjdGVyIGludG8gc2NyYXRjaFJlZworICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
UHRyKHN0YXJ0SW5kZXhHUFIsIHN0YXJ0SW5kZXhHUFIpOworICAgIGF1dG8gaXMxNkJpdCA9IG1f
aml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcDJHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
U3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSk7CisKKyAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KHRlbXBHUFIsIHN0YXJ0SW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc09uZSwgMCksIHRlbXBHUFIpOworICAgIGF1dG8gY29udDhCaXQgPSBtX2ppdC5qdW1wKCk7
CisKKyAgICBpczE2Qml0LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5sb2FkMTYoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleCh0ZW1wR1BSLCBzdGFydEluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNUd28sIDApLCB0ZW1wR1BSKTsKKworICAgIGF1dG8gYmlnQ2hhcmFjdGVyID0gbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZElt
bTMyKDB4MTAwKSk7CisKKyAgICAvLyA4IGJpdCBzdHJpbmcgdmFsdWVzIGRvbid0IG5lZWQgdGhl
IGlzQVNDSUkgY2hlY2suCisgICAgY29udDhCaXQubGluaygmbV9qaXQpOworCisgICAgbV9qaXQu
bHNoaWZ0MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzaXplb2Yodm9pZCopID09IDQg
PyAyIDogMyksIHRlbXBHUFIpOworICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCB0ZW1wR1BSKTsK
KyAgICBtX2ppdC5sb2FkUHRyKHRlbXBHUFIsIHRlbXBHUFIpOworCisgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCisgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIGJpZ0NoYXJhY3Rl
ciwgdGhpcywgb3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5nLCB0ZW1wR1BSLCB0ZW1wR1BS
KSk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTdWJzdHIsIHRlbXBH
UFIsIHN0cmluZ0dQUiwgc3RhcnRJbmRleEdQUiwgdGVtcEdQUikpOworCisgICAgZG9uZUNhc2Vz
LmxpbmsoJm1faml0KTsKKyAgICBjZWxsUmVzdWx0KHRlbXBHUFIsIG5vZGUpOworfQorCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Mb3dlckNhc2UoTm9kZSogbm9kZSkKIHsKICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBUb0xvd2VyQ2FzZSk7CkBAIC03NDkzLDYgKzc1NjQsMjUgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFJlc3RMZW5ndGgoTm9kZSogbm9kZSkKICAg
ICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0UG9wdWxhdGVTbGljZUluZGV4KEVkZ2UmIHRhcmdldCwgR1BSUmVnIGxlbmd0aCwgR1BS
UmVnIHJlc3VsdCkKK3sKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgdGFy
Z2V0KTsKKyAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QgZG9uZTsKKyAgICBhdXRvIGlzUG9zaXRpdmUgPSBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBpbmRleEdQUiwgVHJ1c3RlZElt
bTMyKDApKTsKKyAgICBtX2ppdC5tb3ZlKGxlbmd0aCwgcmVzdWx0KTsKKyAgICBkb25lLmFwcGVu
ZChtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6UG9zaXRpdmVPclplcm8sIGluZGV4
R1BSLCByZXN1bHQpKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsK
KyAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgaXNQb3NpdGl2ZS5saW5rKCZt
X2ppdCk7CisgICAgbV9qaXQubW92ZShpbmRleEdQUiwgcmVzdWx0KTsKKyAgICBkb25lLmFwcGVu
ZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCByZXN1bHQsIGxl
bmd0aCkpOworICAgIG1faml0Lm1vdmUobGVuZ3RoLCByZXN1bHQpOworCisgICAgZG9uZS5saW5r
KCZtX2ppdCk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5v
ZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQXJyYXlTbGljZSk7CkBAIC03
NTA3LDM3ICs3NTk3LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNl
KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBH
UFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAKLSAgICBhdXRvIHBvcHVsYXRlSW5kZXggPSBb
Jl0gKHVuc2lnbmVkIGNoaWxkSW5kZXgsIEdQUlJlZyBsZW5ndGgsIEdQUlJlZyByZXN1bHQpIHsK
LSAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCkpOwotICAgICAgICBHUFJSZWcgaW5kZXhHUFIg
PSBpbmRleC5ncHIoKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmU7Ci0g
ICAgICAgIGF1dG8gaXNQb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpH
cmVhdGVyVGhhbk9yRXF1YWwsIGluZGV4R1BSLCBUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICBt
X2ppdC5tb3ZlKGxlbmd0aCwgcmVzdWx0KTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJh
bmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlBvc2l0aXZlT3JaZXJvLCBpbmRleEdQUiwgcmVzdWx0
KSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwotICAgICAg
ICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotCi0gICAgICAgIGlzUG9zaXRpdmUubGluaygm
bV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKGluZGV4R1BSLCByZXN1bHQpOwotICAgICAgICBk
b25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBy
ZXN1bHQsIGxlbmd0aCkpOwotICAgICAgICBtX2ppdC5tb3ZlKGxlbmd0aCwgcmVzdWx0KTsKLQot
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICB9OwotCiAgICAgewogICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcExlbmd0aCh0aGlzKTsKICAgICAgICAgR1BSUmVnIGxlbmd0aEdQUiA9IHRl
bXBMZW5ndGguZ3ByKCk7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBsZW5n
dGhHUFIpOwogCiAgICAgICAgIGlmIChub2RlLT5udW1DaGlsZHJlbigpID09IDQpCi0gICAgICAg
ICAgICBwb3B1bGF0ZUluZGV4KDIsIGxlbmd0aEdQUiwgdGVtcEdQUik7CisgICAgICAgICAgICBl
bWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMiks
IGxlbmd0aEdQUiwgdGVtcEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faml0Lm1v
dmUobGVuZ3RoR1BSLCB0ZW1wR1BSKTsKIAogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcFN0YXJ0
SW5kZXgodGhpcyk7CiAgICAgICAgIEdQUlJlZyBzdGFydEdQUiA9IHRlbXBTdGFydEluZGV4Lmdw
cigpOwotICAgICAgICBwb3B1bGF0ZUluZGV4KDEsIGxlbmd0aEdQUiwgc3RhcnRHUFIpOworICAg
ICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMSksIGxlbmd0aEdQUiwgc3RhcnRHUFIpOwogCiAgICAgICAgIGF1dG8gdG9vQmlnID0gbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzdGFydEdQUiwgdGVtcEdQUik7CiAg
ICAgICAgIG1faml0LnN1YjMyKHN0YXJ0R1BSLCB0ZW1wR1BSKTsgLy8gdGhlIHNpemUgb2YgdGhl
IGFycmF5IHdlJ2xsIG1ha2UuCkBAIC03NjI4LDEwICs3NzAwLDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1
YmxpY0xlbmd0aCgpKSwgdGVtcFZhbHVlKTsKICAgICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4oKSA9
PSA0KQotICAgICAgICBwb3B1bGF0ZUluZGV4KDIsIHRlbXBWYWx1ZSwgdGVtcEdQUik7CisgICAg
ICAgIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2Rl
LCAyKSwgdGVtcFZhbHVlLCB0ZW1wR1BSKTsKICAgICBlbHNlCiAgICAgICAgIG1faml0Lm1vdmUo
dGVtcFZhbHVlLCB0ZW1wR1BSKTsKLSAgICBwb3B1bGF0ZUluZGV4KDEsIHRlbXBWYWx1ZSwgbG9h
ZEluZGV4KTsKKyAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMSksIHRlbXBWYWx1ZSwgbG9hZEluZGV4KTsKIAogICAgIEdQUlRlbXBvcmFy
eSB0ZW1wNSh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmVJbmRleCA9IHRlbXA1LmdwcigpOwpAQCAt
NzY4NCwyMyArNzc1Niw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4
T2YoTm9kZSogbm9kZSkKIAogICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBsZW5ndGhH
UFIpOwogCi0gICAgaWYgKG5vZGUtPm51bUNoaWxkcmVuKCkgPT0gNCkgewotICAgICAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgc3RhcnRJbmRleCh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0No
aWxkKG5vZGUsIDIpKTsKLSAgICAgICAgR1BSUmVnIHN0YXJ0SW5kZXhHUFIgPSBzdGFydEluZGV4
LmdwcigpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKLSAgICAgICAg
YXV0byBpc1Bvc2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJU
aGFuT3JFcXVhbCwgc3RhcnRJbmRleEdQUiwgVHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgbV9q
aXQubW92ZShsZW5ndGhHUFIsIGluZGV4R1BSKTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQu
YnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlBvc2l0aXZlT3JaZXJvLCBzdGFydEluZGV4R1BS
LCBpbmRleEdQUikpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgaW5kZXhH
UFIpOwotICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotCi0gICAgICAgIGlzUG9z
aXRpdmUubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKHN0YXJ0SW5kZXhHUFIsIGlu
ZGV4R1BSKTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkJlbG93T3JFcXVhbCwgaW5kZXhHUFIsIGxlbmd0aEdQUikpOwotICAgICAgICBtX2ppdC5t
b3ZlKGxlbmd0aEdQUiwgaW5kZXhHUFIpOwotCi0gICAgICAgIGRvbmUubGluaygmbV9qaXQpOwot
ICAgIH0gZWxzZQorICAgIGlmIChub2RlLT5udW1DaGlsZHJlbigpID09IDQpCisgICAgICAgIGVt
aXRQb3B1bGF0ZVNsaWNlSW5kZXgobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSwg
bGVuZ3RoR1BSLCBpbmRleEdQUik7CisgICAgZWxzZQogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMigwKSwgaW5kZXhHUFIpOwogCiAgICAgRWRnZSYgc2VhcmNoRWxlbWVudEVkZ2UgPSBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGIwZTAzYjI3YTgwMDJkMTcxZmNhM2Jm
MDgwNzFjMTVjZjhhOThjNDEuLmQxNjkwODBlNmRkMDRjZTdjYWRlZTk5ZTRiNjgxMTQ5MjNkNjJl
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
QEAgLTExMzEsNiArMTEzMSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSks
IFRydXN0ZWRJbW0zMihrbm93bkxlbmd0aCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUNaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9F
U3RaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCwgdW5zaWduZWQgbWluQ2FwYWNpdHkpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpLCBUcnVzdGVkSW1tMzIobWluQ2Fw
YWNpdHkpKTsKQEAgLTI5NzgsNiArMjk4Myw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICB2b2lkIGNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZURlZmlu
ZURhdGFQcm9wZXJ0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlU3RyaW5nU2xpY2UoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZVRvTG93ZXJDYXNlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUaHJvdyhOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlVGhyb3dTdGF0aWNFcnJvcihOb2RlKik7CkBAIC0zMDQwLDYg
KzMwNDYsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBlbWl0R2V0TGVuZ3Ro
KENvZGVPcmlnaW4sIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7
CiAgICAgdm9pZCBlbWl0R2V0Q2FsbGVlKENvZGVPcmlnaW4sIEdQUlJlZyBjYWxsZWVHUFIpOwog
ICAgIHZvaWQgZW1pdEdldEFyZ3VtZW50U3RhcnQoQ29kZU9yaWdpbiwgR1BSUmVnIHN0YXJ0R1BS
KTsKKyAgICB2b2lkIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgoRWRnZSYsIEdQUlJlZyBsZW5ndGgs
IEdQUlJlZyByZXN1bHQpOwogICAgIAogICAgIC8vIEdlbmVyYXRlIGFuIE9TUiBleGl0IGZ1enog
Y2hlY2suIFJldHVybnMgSnVtcCgpIGlmIE9TUiBleGl0IGZ1enogaXMgbm90IGVuYWJsZWQsIG9y
IGlmCiAgICAgLy8gaXQncyBpbiB0cmFpbmluZyBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMjQwYTU3MjEx
YjJlMzczODA4YjQwOTY2MDE0YzZhYWIzYTg4YzEzOS4uMTI5ZjE1YjRiNGQwMGQ5MDMwMDAwNjg3
YTRjMThkMjc5ZjNiZDllMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yODUzLDYgKzI4NTMsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgCisgICAgY2FzZSBTdHJpbmdTbGljZTogeworICAgICAgICBjb21waWxlU3RyaW5nU2xp
Y2Uobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgVG9Mb3dlckNhc2U6
IHsKICAgICAgICAgY29tcGlsZVRvTG93ZXJDYXNlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IGU0ZmE4NmEyOTAwNzFkNjQ5MWM2NWFjYzI3Y2E5OGE2MWU1OWRiN2UuLmE4Yjg1ZTFjYTU3
YzI5YzczZTMwYmUxNGRhZjI2ODYwY2JhNzFhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTI2NCw2ICs1MjY0LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGls
ZVdlYWtNYXBHZXQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTdHJpbmdTbGlj
ZTogeworICAgICAgICBjb21waWxlU3RyaW5nU2xpY2Uobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgVG9Mb3dlckNhc2U6IHsKICAgICAgICAgY29tcGlsZVRvTG93ZXJD
YXNlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5OGFiZjM5NDlmZDUzN2YyZTBhNmU2OTIxODlmOTM3
NTA4MDc5YWVkLi43MTAyOTVhYzhhYzljMGJmYzQ1OGVlMzdkODEyZWVmZDI5NmNhZTg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTEs
NiArMjkxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6
CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgorICAgIGNhc2UgU3RyaW5nU2xpY2U6
CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4
OgogICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGVjODVlZTdl
YzBlYjMyMWQxMzg3MWE0YTUzZWVmNmY2YTMzYzg3ZTguLjY1OWJiNDA3OWE0MzEwYjliNWQxZmRl
MDE2NDIzYjFhMmMzMTNlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTExNzUsNiArMTE3NSw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgICAgICBjb21waWxlVW5yZWFjaGFi
bGUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0cmluZ1NsaWNlOgorICAg
ICAgICAgICAgY29tcGlsZVN0cmluZ1NsaWNlKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICAgICAgICAgIGNvbXBpbGVUb0xvd2VyQ2FzZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC00MzAxLDI3ICs0MzA0LDQwIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzdGQ6OnBhaXI8TFZhbHVlLCBMVmFsdWU+
IHBvcHVsYXRlU2xpY2VSYW5nZShMVmFsdWUgc3RhcnQsIExWYWx1ZSBlbmQsIExWYWx1ZSBsZW5n
dGgpCisgICAgeworICAgICAgICAvLyBlbmQgd291bGQgYmUgbnVsbHB0ci4KKyAgICAgICAgQVNT
RVJUKHN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCk7CisKKyAgICAgICAgTFZhbHVlIGVu
ZEJvdW5kYXJ5ID0gbGVuZ3RoOworICAgICAgICBpZiAoZW5kKSB7CisgICAgICAgICAgICBlbmRC
b3VuZGFyeSA9IG1fb3V0LnNlbGVjdChtX291dC5ncmVhdGVyVGhhbk9yRXF1YWwoZW5kLCBtX291
dC5pbnQzMlplcm8pLAorICAgICAgICAgICAgICAgIG1fb3V0LnNlbGVjdChtX291dC5hYm92ZShl
bmQsIGxlbmd0aCksIGxlbmd0aCwgZW5kKSwKKyAgICAgICAgICAgICAgICBtX291dC5zZWxlY3Qo
bV9vdXQubGVzc1RoYW4obV9vdXQuYWRkKGxlbmd0aCwgZW5kKSwgbV9vdXQuaW50MzJaZXJvKSwg
bV9vdXQuaW50MzJaZXJvLCBtX291dC5hZGQobGVuZ3RoLCBlbmQpKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBMVmFsdWUgc3RhcnRJbmRleCA9IG1fb3V0LnNlbGVjdChtX291dC5ncmVhdGVyVGhh
bk9yRXF1YWwoc3RhcnQsIG1fb3V0LmludDMyWmVybyksCisgICAgICAgICAgICBtX291dC5zZWxl
Y3QobV9vdXQuYWJvdmUoc3RhcnQsIGxlbmd0aCksIGxlbmd0aCwgc3RhcnQpLAorICAgICAgICAg
ICAgbV9vdXQuc2VsZWN0KG1fb3V0Lmxlc3NUaGFuKG1fb3V0LmFkZChsZW5ndGgsIHN0YXJ0KSwg
bV9vdXQuaW50MzJaZXJvKSwgbV9vdXQuaW50MzJaZXJvLCBtX291dC5hZGQobGVuZ3RoLCBzdGFy
dCkpKTsKKworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RhcnRJbmRleCwgZW5kQm91
bmRhcnkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUFycmF5U2xpY2UoKQogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgc291cmNlU3Rv
cmFnZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5udW1DaGlsZHJlbigpID09IDMgPyBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMikgOiBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwog
ICAgICAgICBMVmFsdWUgaW5wdXRMZW5ndGggPSBtX291dC5sb2FkMzIoc291cmNlU3RvcmFnZSwg
bV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKyAgICAgICAgTFZhbHVlIHN0YXJ0ID0g
bG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKyAgICAgICAgTFZhbHVl
IGVuZCA9IG51bGxwdHI7CisgICAgICAgIGlmIChtX25vZGUtPm51bUNoaWxkcmVuKCkgIT0gMykK
KyAgICAgICAgICAgIGVuZCA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAy
KSk7CiAKLSAgICAgICAgTFZhbHVlIGVuZEJvdW5kYXJ5OwotICAgICAgICBpZiAobV9ub2RlLT5u
dW1DaGlsZHJlbigpID09IDMpCi0gICAgICAgICAgICBlbmRCb3VuZGFyeSA9IG1fb3V0LmxvYWQz
Mihzb3VyY2VTdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGVuZEJvdW5kYXJ5ID0gbG93SW50MzIobV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDIpKTsKLSAgICAgICAgICAgIGVuZEJvdW5kYXJ5ID0gbV9vdXQuc2Vs
ZWN0KG1fb3V0LmdyZWF0ZXJUaGFuT3JFcXVhbChlbmRCb3VuZGFyeSwgbV9vdXQuY29uc3RJbnQz
MigwKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuc2VsZWN0KG1fb3V0LmFib3ZlKGVuZEJvdW5k
YXJ5LCBpbnB1dExlbmd0aCksIGlucHV0TGVuZ3RoLCBlbmRCb3VuZGFyeSksCi0gICAgICAgICAg
ICAgICAgbV9vdXQuc2VsZWN0KG1fb3V0Lmxlc3NUaGFuKG1fb3V0LmFkZChpbnB1dExlbmd0aCwg
ZW5kQm91bmRhcnkpLCBtX291dC5jb25zdEludDMyKDApKSwgbV9vdXQuY29uc3RJbnQzMigwKSwg
bV9vdXQuYWRkKGlucHV0TGVuZ3RoLCBlbmRCb3VuZGFyeSkpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIExWYWx1ZSBzdGFydEluZGV4ID0gbG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDEpKTsKLSAgICAgICAgc3RhcnRJbmRleCA9IG1fb3V0LnNlbGVjdChtX291dC5ncmVhdGVy
VGhhbk9yRXF1YWwoc3RhcnRJbmRleCwgbV9vdXQuY29uc3RJbnQzMigwKSksCi0gICAgICAgICAg
ICBtX291dC5zZWxlY3QobV9vdXQuYWJvdmUoc3RhcnRJbmRleCwgaW5wdXRMZW5ndGgpLCBpbnB1
dExlbmd0aCwgc3RhcnRJbmRleCksCi0gICAgICAgICAgICBtX291dC5zZWxlY3QobV9vdXQubGVz
c1RoYW4obV9vdXQuYWRkKGlucHV0TGVuZ3RoLCBzdGFydEluZGV4KSwgbV9vdXQuY29uc3RJbnQz
MigwKSksIG1fb3V0LmNvbnN0SW50MzIoMCksIG1fb3V0LmFkZChpbnB1dExlbmd0aCwgc3RhcnRJ
bmRleCkpKTsKKyAgICAgICAgYXV0byByYW5nZSA9IHBvcHVsYXRlU2xpY2VSYW5nZShzdGFydCwg
ZW5kLCBpbnB1dExlbmd0aCk7CisgICAgICAgIExWYWx1ZSBzdGFydEluZGV4ID0gcmFuZ2UuZmly
c3Q7CisgICAgICAgIExWYWx1ZSBlbmRCb3VuZGFyeSA9IHJhbmdlLnNlY29uZDsKIAogICAgICAg
ICBMVmFsdWUgcmVzdWx0TGVuZ3RoID0gbV9vdXQuc2VsZWN0KG1fb3V0LmJlbG93KHN0YXJ0SW5k
ZXgsIGVuZEJvdW5kYXJ5KSwKICAgICAgICAgICAgIG1fb3V0LnN1YihlbmRCb3VuZGFyeSwgc3Rh
cnRJbmRleCksCkBAIC0xMDcwMyw2ICsxMDcxOSw4OCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBub25TcGVjdWxhdGl2ZUNvbXBhcmUoaW50RnVuY3RvciwgZmFsbGJhY2tGdW5jdGlv
bik7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlU3RyaW5nU2xpY2UoKQorICAgIHsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgZW1wdHlDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgbm90RW1wdHlDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgb25lQ2hhckNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayBiaXRDaGVja0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBp
czhCaXQgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpczE2Qml0ID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgYml0c0NvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0NoYXJhY3RlciA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICBMVmFsdWUgc3RyaW5nID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3Ry
aW5nLCBtX2hlYXBzLkpTU3RyaW5nX2xlbmd0aCk7CisgICAgICAgIExWYWx1ZSBzdGFydCA9IGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFsdWUgZW5kID0gbnVsbHB0cjsK
KyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAgICBlbmQgPSBsb3dJbnQz
MihtX25vZGUtPmNoaWxkMygpKTsKKworICAgICAgICBhdXRvIHJhbmdlID0gcG9wdWxhdGVTbGlj
ZVJhbmdlKHN0YXJ0LCBlbmQsIGxlbmd0aCk7CisgICAgICAgIExWYWx1ZSBmcm9tID0gcmFuZ2Uu
Zmlyc3Q7CisgICAgICAgIExWYWx1ZSB0byA9IHJhbmdlLnNlY29uZDsKKworICAgICAgICBMVmFs
dWUgc3BhbiA9IG1fb3V0LnN1Yih0bywgZnJvbSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291
dC5sZXNzVGhhbk9yRXF1YWwoc3BhbiwgbV9vdXQuaW50MzJaZXJvKSwgdW5zdXJlKGVtcHR5Q2Fz
ZSksIHVuc3VyZShub3RFbXB0eUNhc2UpKTsKKworICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxv
Y2ssIDQ+IHJlc3VsdHM7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhlbXB0eUNhc2UsIG5vdEVtcHR5Q2FzZSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fb3V0LmFuY2hvcihtX291dC53ZWFrUG9pbnRlcihtX2dyYXBoLCBqc0VtcHR5U3RyaW5nKCZ2
bSgpKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdEVtcHR5Q2FzZSwgb25lQ2hhckNhc2UpOworICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuZXF1YWwoc3BhbiwgbV9vdXQuaW50MzJPbmUpLCB1bnN1cmUob25lQ2hhckNh
c2UpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhvbmVDaGFy
Q2FzZSwgYml0Q2hlY2tDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5s
b2FkUHRyKHN0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CisgICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5pc051bGwoc3RyaW5nSW1wbCksIHVuc3VyZShzbG93Q2FzZSksIHVuc3VyZShi
aXRDaGVja0Nhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhiaXRDaGVja0Nhc2UsIGlz
OEJpdCk7CisgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gbV9vdXQubG9hZFB0cihzdHJpbmdJbXBs
LCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAg
ICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIo
c3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksCisgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSwKKyAgICAg
ICAgICAgIHVuc3VyZShpczE2Qml0KSwgdW5zdXJlKGlzOEJpdCkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGlzOEJpdCwgaXMxNkJpdCk7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGNh
Z2Ugc3RyaW5ncyEKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDkyNAorICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFyOEJpdCA9IG1fb3V0LmFu
Y2hvcihtX291dC5sb2FkOFplcm9FeHQzMihtX291dC5iYXNlSW5kZXgobV9oZWFwcy5jaGFyYWN0
ZXJzOCwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihmcm9tKSkpKTsKKyAgICAgICAgbV9vdXQu
anVtcChiaXRzQ29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpczE2Qml0
LCBiaWdDaGFyYWN0ZXIpOworICAgICAgICBMVmFsdWUgY2hhcjE2Qml0VmFsdWUgPSBtX291dC5s
b2FkMTZaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4KG1faGVhcHMuY2hhcmFjdGVyczE2LCBzdG9y
YWdlLCBtX291dC56ZXJvRXh0UHRyKGZyb20pKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNo
YXIxNkJpdCA9IG1fb3V0LmFuY2hvcihjaGFyMTZCaXRWYWx1ZSk7CisgICAgICAgIG1fb3V0LmJy
YW5jaCgKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbChjaGFyMTZCaXRWYWx1ZSwgbV9v
dXQuY29uc3RJbnQzMigweDEwMCkpLAorICAgICAgICAgICAgcmFyZWx5KGJpZ0NoYXJhY3Rlciks
IHVzdWFsbHkoYml0c0NvbnRpbnVhdGlvbikpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJp
Z0NoYXJhY3RlciwgYml0c0NvbnRpbnVhdGlvbik7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1f
b3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyksCisgICAgICAgICAgICBtX2NhbGxGcmFtZSwg
Y2hhcjE2Qml0VmFsdWUpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhiaXRzQ29udGludWF0aW9uLCBzbG93Q2FzZSk7CisgICAg
ICAgIExWYWx1ZSBjaGFyYWN0ZXIgPSBtX291dC5waGkoSW50MzIsIGNoYXI4Qml0LCBjaGFyMTZC
aXQpOworICAgICAgICBMVmFsdWUgc21hbGxTdHJpbmdzID0gbV9vdXQuY29uc3RJbnRQdHIodm0o
KS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpKTsKKyAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmxvYWRQdHIobV9vdXQuYmFzZUluZGV4KAorICAg
ICAgICAgICAgbV9oZWFwcy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzLCBzbWFsbFN0cmluZ3MsIG1f
b3V0Lnplcm9FeHRQdHIoY2hhcmFjdGVyKSkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9u
KTsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nU3Vic3RyKSwgbV9jYWxsRnJhbWUs
IHN0cmluZywgZnJvbSwgc3BhbikpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCByZXN1bHRzKSk7CisgICAg
fQorCiAgICAgdm9pZCBjb21waWxlVG9Mb3dlckNhc2UoKQogICAgIHsKICAgICAgICAgTEJhc2lj
QmxvY2sgbm90Um9wZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGIwNGJlMTUyZWQ0M2M0MWY3YjIzMzQ4MDEyN2ZhN2U0
N2YxZGM5YzUuLmMyMWQ5YThjMDFlYmFkNWZhN2QwODlkNTA5MDE5NTIzYWYzOGY0NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yMTIsNiArMjEyLDcg
QEAgdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FU3RSWkpz
ZkwpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSoKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElP
TiAqQ19KSVRPcGVyYXRpb25fRVN0UlpKc2YpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lz
dGVyKiwgaW50MzJfdCwgSlNGdW5jdGlvbiopOwogdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFU
SU9OICpDX0pJVE9wZXJhdGlvbl9FU3RaKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
KTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRVN0Wlop
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QsIGludDMyX3QpOwordHlwZWRlZiBKU0Nl
bGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FQ1paKShFeGVjU3RhdGUqLCBKU0Nl
bGwqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAq
Q19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwq
IChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FSnNjSSkoRXhlY1N0YXRlKiwgSlNTY29w
ZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEpTQ2VsbCogKEpJVF9PUEVSQVRJT04g
KkNfSklUT3BlcmF0aW9uX0VDSlopKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3Bw
CmluZGV4IDliNWJkMDgwOGQ2MjJlZDY1NDkzMDA5MDE4NGNiZjYzYjFiMTEwNTYuLmY3MzFjMzcw
MWY5Njk2N2FlZWZhYjFlMzhiN2YyNTE0MjU5NDhjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMTIxLDYgKzEyMSw4IEBAIGNvbnN0IGNoYXIq
IGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJTdHJp
bmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljIjsKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVJl
cGxhY2VSZWdFeHBJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiU3RyaW5nUHJvdG90eXBlUmVw
bGFjZVJlZ0V4cEludHJpbnNpYyI7CisgICAgY2FzZSBTdHJpbmdQcm90b3R5cGVTbGljZUludHJp
bnNpYzoKKyAgICAgICAgcmV0dXJuICJTdHJpbmdQcm90b3R5cGVTbGljZUludHJpbnNpYyI7CiAg
ICAgY2FzZSBTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZUludHJpbnNpYzoKICAgICAgICAgcmV0
dXJuICJTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZUludHJpbnNpYyI7CiAgICAgY2FzZSBOdW1i
ZXJQcm90b3R5cGVUb1N0cmluZ0ludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmgKaW5kZXggMDZjYjI4YTQyZWJhMWYwOTg2OGJlNDkyZjExYjI1ZjM5ZjJi
OTM1OC4uZWM3NzEzMmE3OGVkMTcxNmIwZGEyZTBiOTRiYzM3NGE3ZWY2ZDU5YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTczLDYgKzczLDcgQEAgZW51
bSBJbnRyaW5zaWMgewogICAgIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMsCiAgICAg
U3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVSZXBs
YWNlUmVnRXhwSW50cmluc2ljLAorICAgIFN0cmluZ1Byb3RvdHlwZVNsaWNlSW50cmluc2ljLAog
ICAgIFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlSW50cmluc2ljLAogICAgIE51bWJlclByb3Rv
dHlwZVRvU3RyaW5nSW50cmluc2ljLAogICAgIElNdWxJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCBhNTU0ODZh
YmY4YmZhZGQxODFhNGEzZTcyNzlhM2E4M2FlMDJkNzdhLi5kYTM1MjZjOWFhMDEwNTAwMTcyN2M5
ZTI4NzQ3YTFhN2ExZjA0ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFN0cmluZ1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJs
YXN0SW5kZXhPZiIsIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnJlcGxhY2VVc2luZ1JlZ0V4cFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3Rv
RnVuY1JlcGxhY2VVc2luZ1JlZ0V4cCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDIsIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VSZWdFeHBJbnRyaW5z
aWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaFByaXZhdGVO
YW1lKCksIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwotICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzbGljZSIsIHN0cmluZ1Byb3RvRnVu
Y1NsaWNlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMik7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKCJzbGljZSIsIHN0cmluZ1Byb3RvRnVuY1NsaWNlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgU3RyaW5nUHJvdG90eXBlU2xpY2VJbnRy
aW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzdWJz
dHIiLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTigic3Vic3RyaW5nIiwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiAgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b0xvd2Vy
Q2FzZSIsIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgU3RyaW5nUHJvdG90eXBlVG9Mb3dlckNh
c2VJbnRyaW5zaWMpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBhYmNiYWYyMmVhN2QwNjk1Zjk0MTc2NDhmOTkzNTQxYTAyNTY2NmIzLi41
OGZiMGRjMmNiMzNmODllYTI2ZDExNzE1ZjFmZTI2YjBkNzZhMWI4IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE3LTEwLTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtERkddW0ZUTF0gSW50cm9kdWNlIFN0cmluZ1NsaWNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5MzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9zdHJpbmctc2xp
Y2UtZW1wdHkuanM6IEFkZGVkLgorICAgICAgICAoc2xpY2UpOgorICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9zdHJpbmctc2xpY2Utb25lLWNoYXIuanM6IEFkZGVkLgorICAgICAgICAoc2xpY2Up
OgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9zdHJpbmctc2xpY2UuanM6IEFkZGVkLgorICAg
ICAgICAoc2xpY2UpOgorCiAyMDE3LTEwLTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIzNjkxIGFu
ZCByMjIzNzI5LgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3RyaW5nLXNs
aWNlLWVtcHR5LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3RyaW5nLXNsaWNlLWVtcHR5
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMGQ4ZWQ4YThjMDFkYzVhYTM0NzllYzA1OGVkOTZlN2M1OTU4MTgK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zdHJpbmctc2xpY2Ut
ZW1wdHkuanMKQEAgLTAsMCArMSw4IEBACitmdW5jdGlvbiBzbGljZShzdHJpbmcsIHN0YXJ0LCBl
bmQpCit7CisgICAgcmV0dXJuIHN0cmluZy5zbGljZShzdGFydCwgZW5kKTsKK30KK25vSW5saW5l
KHNsaWNlKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzbGljZSgiQ29j
b2EiLCAzLCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N0cmluZy1z
bGljZS1vbmUtY2hhci5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N0cmluZy1zbGljZS1v
bmUtY2hhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzhlYTRlYTg4MjU2ZDAyMWI5Nzg1ZWRiMGIzOTQwMjZi
M2U4ZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3RyaW5n
LXNsaWNlLW9uZS1jaGFyLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2xpY2Uoc3RyaW5n
LCBzdGFydCwgZW5kKQoreworICAgIHJldHVybiBzdHJpbmcuc2xpY2Uoc3RhcnQsIGVuZCk7Cit9
Citub0lubGluZShzbGljZSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAg
c2xpY2UoIkNvY29hIiwgMiwgMyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9zdHJpbmctc2xpY2UuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zdHJpbmctc2xpY2Uu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOThkN2JkYmJkMGMwMzUwNTQ1ODJhOTI5NGUyZjU0N2ZlMWZmODZjMgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N0cmluZy1zbGljZS5q
cwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHNsaWNlKHN0cmluZywgc3RhcnQsIGVuZCkKK3sK
KyAgICByZXR1cm4gc3RyaW5nLnNsaWNlKHN0YXJ0LCBlbmQpOworfQorbm9JbmxpbmUoc2xpY2Up
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNsaWNlKCJDb2NvYSIsIDIs
IDQpOwo=
</data>
<flag name="review"
          id="344665"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>