<?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>53061</bug_id>
          
          <creation_ts>2011-01-24 21:37:47 -0800</creation_ts>
          <short_desc>REGRESSION: Leak in JSParser::Scope::copyCapturedVariablesToVector()</short_desc>
          <delta_ts>2011-01-25 10:59:16 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>koivisto</cc>
    
    <cc>oliver</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>339475</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-24 21:37:47 -0800</bug_when>
    <thetext>Running &apos;leaks&apos; on DumpRenderTree for some CSS tests is showing lots of leaks in:


	| WebCore::JSMainThreadExecState::evaluate(JSC::ExecState*, JSC::ScopeChain&amp;, JSC::SourceCode const&amp;, JSC::JSValue)
	| JSC::evaluate(JSC::ExecState*, JSC::ScopeChain&amp;, JSC::SourceCode const&amp;, JSC::JSValue)
	| JSC::ProgramExecutable::compile(JSC::ExecState*, JSC::ScopeChainNode*)
	| JSC::ProgramExecutable::compileInternal(JSC::ExecState*, JSC::ScopeChainNode*)
	| WTF::PassRefPtr&lt;JSC::ProgramNode&gt; JSC::Parser::parse&lt;JSC::ProgramNode&gt;(JSC::JSGlobalObject*, JSC::Debugger*, JSC::ExecState*, JSC::SourceCode const&amp;, JSC::FunctionParameters*, JSC::JSParserStrictness, JSC::JSObject**)
	| JSC::Parser::parse(JSC::JSGlobalData*, JSC::FunctionParameters*, JSC::JSParserStrictness, JSC::JSParserMode, int*, JSC::UString*)
	| JSC::jsParse(JSC::JSGlobalData*, JSC::FunctionParameters*, JSC::JSParserStrictness, JSC::JSParserMode, JSC::SourceCode const*)
	| JSC::JSParser::parseProgram()
	| JSC::ASTBuilder::SourceElements JSC::JSParser::parseSourceElements&lt;(JSC::JSParser::SourceElementsMode)0, JSC::ASTBuilder&gt;(JSC::ASTBuilder&amp;)
	| JSC::ASTBuilder::Statement JSC::JSParser::parseStatement&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder&amp;, JSC::Identifier const*&amp;)
	| JSC::ASTBuilder::Statement JSC::JSParser::parseFunctionDeclaration&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder&amp;)
	| bool JSC::JSParser::parseFunctionInfo&lt;(JSC::JSParser::FunctionRequirements)1, true, JSC::ASTBuilder&gt;(JSC::ASTBuilder&amp;, JSC::Identifier const*&amp;, JSC::ASTBuilder::FormalParameterList&amp;, JSC::ASTBuilder::FunctionBody&amp;, int&amp;, int&amp;, int&amp;)
	| JSC::JSParser::Scope::saveFunctionInfo(JSC::JSParser::CachedFunctionInfo*)
	| JSC::JSParser::Scope::copyCapturedVariablesToVector(WTF::HashSet&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, JSC::IdentifierRepHash, WTF::HashTraits&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt; &gt; const&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, 0ul&gt;&amp;)
	| WTF::Vector&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, 0ul&gt;::shrinkToFit()
	| WTF::Vector&lt;WTF::RefPtr&lt;WTF::StringImpl&gt;, 0ul&gt;::shrinkCapacity(unsigned long)
	| WTF::VectorBufferBase&lt;WTF::RefPtr&lt;WTF::StringImpl&gt; &gt;::allocateBuffer(unsigned long)
	| WTF::fastMalloc(unsigned long)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339476</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-24 21:40:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/8911590&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339477</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-24 21:40:59 -0800</bug_when>
    <thetext>On SnowLeopard, at r76568.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339495</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-24 22:07:57 -0800</bug_when>
    <thetext>Regressed in http://trac.webkit.org/changeset/76177.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339672</commentid>
    <comment_count>4</comment_count>
      <attachid>80069</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-25 09:12:19 -0800</bug_when>
    <thetext>Created attachment 80069
patch

Cache did not know about the subclass so failed to fully delete the items. Got rid of the subclass and moved the classes to separate files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339676</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-25 09:15:32 -0800</bug_when>
    <thetext>Attachment 80069 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/parser/SourceProviderCache.h:39:  The parameter name &quot;item&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/parser/SourceProvider.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339677</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-25 09:18:29 -0800</bug_when>
    <thetext>Attachment 80069 did not build on gtk:
Build output: http://queues.webkit.org/results/7513332</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339682</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-25 09:24:09 -0800</bug_when>
    <thetext>Attachment 80069 did not build on qt:
Build output: http://queues.webkit.org/results/7493340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339687</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-25 09:34:13 -0800</bug_when>
    <thetext>Attachment 80069 did not build on win:
Build output: http://queues.webkit.org/results/7507325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339741</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-25 10:45:21 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76611 

(with some non-mac build fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339758</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-25 10:59:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76611 might have broken Windows Release (Build) and Windows Debug (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80069</attachid>
            <date>2011-01-25 09:12:19 -0800</date>
            <delta_ts>2011-01-25 09:13:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>sourceprovider-leak-1.patch</filename>
            <type>text/plain</type>
            <size>22403</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzY1OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTEtMDEtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT046IExlYWsg
aW4gSlNQYXJzZXI6OlNjb3BlOjpjb3B5Q2FwdHVyZWRWYXJpYWJsZXNUb1ZlY3RvcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzA2MQorICAgICAg
ICAgCisgICAgICAgIENhY2hlIGRpZCBub3Qga25vdyBhYm91dCB0aGUgc3ViY2xhc3Mgc28gZmFp
bGVkIHRvIGZ1bGx5IGRlbGV0ZSB0aGUgaXRlbXMuIAorICAgICAgICBHb3QgcmlkIG9mIHRoZSBz
dWJjbGFzcyBhbmQgbW92ZWQgdGhlIGNsYXNzZXMgdG8gc2VwYXJhdGUgZmlsZXMuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaToK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcm86CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhcnNl
ci9KU1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6c2F2ZUZ1bmN0
aW9uSW5mbyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6cmVzdG9yZUZ1bmN0aW9u
SW5mbyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKiBw
YXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJD
YWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlOjp+U291
cmNlUHJvdmlkZXJDYWNoZSk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGU6OmJ5
dGVTaXplKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNoZTo6U291cmNlUHJvdmlkZXJDYWNoZSk6
CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGU6OmFkZCk6CisgICAgICAgIChKU0M6
OlNvdXJjZVByb3ZpZGVyQ2FjaGU6OmdldCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hl
SXRlbTo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0pOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92
aWRlckNhY2hlSXRlbTo6YXBwcm94aW1hdGVCeXRlU2l6ZSk6CisgICAgICAgIChKU0M6OlNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtOjpjbG9zZUJyYWNlVG9rZW4pOgorCiAyMDExLTAxLTI1ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCShyZXZpc2lvbiA3NjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsNyBAQCBfX1pOM0pTQzE4UHJv
cGVydHlEZXNjcmlwdG9yMTdkZWZhdWx0QXR0CiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9y
MjFzZXRBY2Nlc3NvckRlc2NyaXB0b3JFTlNfN0pTVmFsdWVFUzFfagogX19aTjNKU0MxOFByb3Bl
cnR5RGVzY3JpcHRvcjlzZXRHZXR0ZXJFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzE4UHJvcGVydHlE
ZXNjcmlwdG9yOXNldFNldHRlckVOU183SlNWYWx1ZUUKK19fWk4zSlNDMTlTb3VyY2VQcm92aWRl
ckNhY2hlRDFFdgogX19aTjNKU0MxOWluaXRpYWxpemVUaHJlYWRpbmdFdgogX19aTjNKU0MyME1h
cmtlZEFyZ3VtZW50QnVmZmVyMTBzbG93QXBwZW5kRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MyMGNy
ZWF0ZVJlZmVyZW5jZUVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gNzY1NjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMTQ0LDYgKzE0NCw5IEBACiAgICAgICAgICAgICAncGFyc2VyL1Jlc3VsdFR5cGUu
aCcsCiAgICAgICAgICAgICAncGFyc2VyL1NvdXJjZUNvZGUuaCcsCiAgICAgICAgICAgICAncGFy
c2VyL1NvdXJjZVByb3ZpZGVyLmgnLAorICAgICAgICAgICAgJ3BhcnNlci9Tb3VyY2VQcm92aWRl
ckNhY2hlLmNwcCcsCisgICAgICAgICAgICAncGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaCcs
CisgICAgICAgICAgICAncGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgnLAogICAgICAg
ICAgICAgJ3BhcnNlci9TeW50YXhDaGVja2VyLmgnLAogICAgICAgICAgICAgJ3BjcmUvcGNyZS5o
JywKICAgICAgICAgICAgICdwY3JlL3BjcmVfY29tcGlsZS5jcHAnLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCShyZXZpc2lvbiA3NjU2NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw2ICsxMTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYXJzZXIvTm9kZXMuY3BwIFwKICAgICBw
YXJzZXIvUGFyc2VyQXJlbmEuY3BwIFwKICAgICBwYXJzZXIvUGFyc2VyLmNwcCBcCisgICAgcGFy
c2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIFwKICAgICBwcm9maWxlci9Qcm9maWxlLmNwcCBc
CiAgICAgcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2Zp
bGVOb2RlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gNzY1NjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk1NCw2ICsxOTU0LDE4IEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHBhcnNlclxT
b3VyY2VQcm92aWRlckNhY2hlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccGFyc2VyXFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHBhcnNlclxTeW50YXhDaGVja2VyLmgiCiAJCQkJPgogCQkJ
PC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc2NTY1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3MSw2ICs1NzEsOSBAQAogCQlFMUVFNzkz
RDBENkM5QjkyMDBGRUEzQkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTc5M0MwRDZDOUI5MjAwRkVBM0JB
IC8qIFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLzsgfTsKIAkJRTFFRjc5QUEwQ0U5N0JBNjAwODhE
NTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICovOyB9OwogCQlFNDhF
MEYyRDBGODIxNTE3MDBBOENBMzcgLyogRmFzdEFsbG9jQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4RTBGMkMwRjgyMTUxNzAwQThDQTM3IC8q
IEZhc3RBbGxvY0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlE
QzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CisJ
CUU0OURDMTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEyRUYyNzIy
MDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBT
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtLmggKi87IH07CiAJCUYzQkQzMUVEMTI2NzM1NzcwMDY1NDY3RiAvKiBUZXh0UG9z
aXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYz
QkQzMUQwMTI2NzMwMTgwMDY1NDY3RiAvKiBUZXh0UG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGREExNUMxRTEyQjAzMDVDMDAzQTU4
M0EgLyogQ29tcGxleC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkRBMTVDMTYxMkIwMzAyODAwM0E1ODNBIC8qIENvbXBsZXguaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTFCNDQ3QTBFQ0NENzNCMDA0
RjRERDEgLyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTFCNDQ3OTBFQ0NENzNCMDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODMs
NiArMTE4Niw5IEBACiAJCUUxRUY3OUE4MENFOTdCQTYwMDg4RDUwMCAvKiBVVEY4LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVURjguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUVGNzlBOTBDRTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVEY4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0OEUwRjJDMEY4MjE1MTcwMEE4Q0EzNyAvKiBGYXN0QWxsb2NCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RBbGxvY0Jhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0OURD
MTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3Zp
ZGVyQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNl
UHJvdmlkZXJDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzQkQzMUQw
MTI2NzMwMTgwMDY1NDY3RiAvKiBUZXh0UG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gVGV4dFBvc2l0aW9uLmg7IHBhdGggPSB0ZXh0L1RleHRQb3NpdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNUJCMkJDNTAzMEY3NzIxMDFGQ0ZFMUQgLyog
Q29tcGxldGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb21wbGV0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEph
dmFTY3JpcHRDb3JlUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKQEAgLTE2NzgsNiArMTY4NCw5IEBACiAJCQkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMz
IC8qIFBhcnNlckFyZW5hLmggKi8sCiAJCQkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJl
c3VsdFR5cGUuaCAqLywKIAkJCQk2NUU4NjZFRTBERDU5QUZBMDBBMkIyQTEgLyogU291cmNlQ29k
ZS5oICovLAorCQkJCUU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNh
Y2hlLmNwcCAqLywKKwkJCQlFNDlEQzE1MTEyRUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZS5oICovLAorCQkJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oICovLAogCQkJCTY1RTg2NkVEMERENTlBRkEwMEEyQjJBMSAvKiBTb3Vy
Y2VQcm92aWRlci5oICovLAogCQkJCUE3QTdFRTc3MTFCOThCOEQwMDY1QTE0RiAvKiBTeW50YXhD
aGVja2VyLmggKi8sCiAJCQkpOwpAQCAtMjQxOCw2ICsyNDI3LDggQEAKIAkJCQk4NjcwNEI0MzEy
REI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVERTZFNUIzMEUxNzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFzaF90YWJsZSBpbiBIZWFkZXJz
ICovLAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4ODUsNiArMjg5Niw3IEBACiAJ
CQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291
cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCShyZXZpc2lvbiA3NjU2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNp
bmNsdWRlICJBU1RCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx1dGlsaXR5
PgpAQCAtOTYsMzkgKzk3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtX2lzTG9vcDsKICAg
ICB9OwogICAgIAotICAgIHN0cnVjdCBDYWNoZWRGdW5jdGlvbkluZm8gOiBwdWJsaWMgU291cmNl
UHJvdmlkZXJDYWNoZTo6SXRlbSB7Ci0gICAgICAgIENhY2hlZEZ1bmN0aW9uSW5mbyhpbnQgY2xv
c2VCcmFjZUxpbmUsIGludCBjbG9zZUJyYWNlUG9zKQotICAgICAgICAgICAgOiBjbG9zZUJyYWNl
TGluZShjbG9zZUJyYWNlTGluZSkgCi0gICAgICAgICAgICAsIGNsb3NlQnJhY2VQb3MoY2xvc2VC
cmFjZVBvcykKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIGFwcHJveGlt
YXRlQnl0ZVNpemUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgaWRlbnRp
ZmllcnMgYXJlIHVuaXF1ZWQgc3RyaW5ncyBzbyBtb3N0IGxpa2VseSB0aGVyZSBhcmUgZmV3IG5h
bWVzIHRoYXQgYWN0dWFsbHkgdXNlIGFueSBhZGRpdGlvbmFsIG1lbW9yeS4KLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhc3N1bW1lZEF2ZXJhZ2VJZGVudGlmaWVyU2l6ZSA9IHNp
emVvZihSZWZQdHI8U3RyaW5nSW1wbD4pICsgMjsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemUg
PSBzaXplb2YoKnRoaXMpOwotICAgICAgICAgICAgc2l6ZSArPSB1c2VkVmFyaWFibGVzLnNpemUo
KSAqIGFzc3VtbWVkQXZlcmFnZUlkZW50aWZpZXJTaXplOwotICAgICAgICAgICAgc2l6ZSArPSB3
cml0dGVuVmFyaWFibGVzLnNpemUoKSAqIGFzc3VtbWVkQXZlcmFnZUlkZW50aWZpZXJTaXplOwot
ICAgICAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgICAgIH0KLSAgICAgICAgSlNUb2tlbiBjbG9z
ZUJyYWNlVG9rZW4oKSBjb25zdCAKLSAgICAgICAgewotICAgICAgICAgICAgSlNUb2tlbiB0b2tl
bjsKLSAgICAgICAgICAgIHRva2VuLm1fdHlwZSA9IENMT1NFQlJBQ0U7Ci0gICAgICAgICAgICB0
b2tlbi5tX2RhdGEuaW50VmFsdWUgPSBjbG9zZUJyYWNlUG9zOwotICAgICAgICAgICAgdG9rZW4u
bV9pbmZvLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZVBvczsKLSAgICAgICAgICAgIHRva2VuLm1f
aW5mby5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsgMTsKLSAgICAgICAgICAgIHRva2VuLm1f
aW5mby5saW5lID0gY2xvc2VCcmFjZUxpbmU7IAotICAgICAgICAgICAgcmV0dXJuIHRva2VuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaW50IGNsb3NlQnJhY2VMaW5lOwotICAgICAgICBpbnQgY2xv
c2VCcmFjZVBvczsKLSAgICAgICAgYm9vbCB1c2VzRXZhbDsKLSAgICAgICAgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPiA+IHVzZWRWYXJpYWJsZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4gPiB3cml0dGVuVmFyaWFibGVzOwotICAgIH07Ci0KICAgICB2b2lkIG5leHQoTGV4
ZXI6OkxleFR5cGUgbGV4VHlwZSA9IExleGVyOjpJZGVudGlmeVJlc2VydmVkV29yZHMpCiAgICAg
ewogICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2luZm8ubGluZTsKQEAgLTQ2Myw3ICs0
MzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdmVjdG9yLnNocmlua1RvRml0KCk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHNhdmVGdW5jdGlvbkluZm8oQ2FjaGVkRnVuY3Rpb25JbmZv
KiBpbmZvKQorICAgICAgICB2b2lkIHNhdmVGdW5jdGlvbkluZm8oU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0qIGluZm8pCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2lzRnVuY3Rpb24p
OwogICAgICAgICAgICAgaW5mby0+dXNlc0V2YWwgPSBtX3VzZXNFdmFsOwpAQCAtNDcxLDcgKzQz
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb3B5Q2FwdHVyZWRWYXJpYWJsZXNUb1ZlY3Rv
cihtX3VzZWRWYXJpYWJsZXMsIGluZm8tPnVzZWRWYXJpYWJsZXMpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCByZXN0b3JlRnVuY3Rpb25JbmZvKGNvbnN0IENhY2hlZEZ1bmN0aW9uSW5mbyog
aW5mbykKKyAgICAgICAgdm9pZCByZXN0b3JlRnVuY3Rpb25JbmZvKGNvbnN0IFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtKiBpbmZvKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pc0Z1
bmN0aW9uKTsKICAgICAgICAgICAgIG1fdXNlc0V2YWwgPSBpbmZvLT51c2VzRXZhbDsKQEAgLTYw
OSw5ICs1NzcsOSBAQCBwcml2YXRlOgogCiAgICAgU2NvcGVTdGFjayBtX3Njb3BlU3RhY2s7CiAK
LSAgICBjb25zdCBDYWNoZWRGdW5jdGlvbkluZm8qIGZpbmRDYWNoZWRGdW5jdGlvbkluZm8oaW50
IG9wZW5CcmFjZVBvcykgCisgICAgY29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGZpbmRD
YWNoZWRGdW5jdGlvbkluZm8oaW50IG9wZW5CcmFjZVBvcykgCiAgICAgewotICAgICAgICByZXR1
cm4gbV9mdW5jdGlvbkNhY2hlID8gc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkRnVuY3Rpb25JbmZv
Kj4obV9mdW5jdGlvbkNhY2hlLT5nZXQob3BlbkJyYWNlUG9zKSkgOiAwOworICAgICAgICByZXR1
cm4gbV9mdW5jdGlvbkNhY2hlID8gbV9mdW5jdGlvbkNhY2hlLT5nZXQob3BlbkJyYWNlUG9zKSA6
IDA7CiAgICAgfQogCiAgICAgU291cmNlUHJvdmlkZXJDYWNoZSogbV9mdW5jdGlvbkNhY2hlOwpA
QCAtMTMxOCw3ICsxMjg2LDcgQEAgdGVtcGxhdGUgPEpTUGFyc2VyOjpGdW5jdGlvblJlcXVpcmVt
ZW50cwogICAgIG9wZW5CcmFjZVBvcyA9IG1fdG9rZW4ubV9kYXRhLmludFZhbHVlOwogICAgIGJv
ZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKIAotICAgIGlmIChjb25zdCBDYWNoZWRGdW5jdGlv
bkluZm8qIGNhY2hlZEluZm8gPSBUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSA/IGZp
bmRDYWNoZWRGdW5jdGlvbkluZm8ob3BlbkJyYWNlUG9zKSA6IDApIHsKKyAgICBpZiAoY29uc3Qg
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGNhY2hlZEluZm8gPSBUcmVlQnVpbGRlcjo6Q2FuVXNl
RnVuY3Rpb25DYWNoZSA/IGZpbmRDYWNoZWRGdW5jdGlvbkluZm8ob3BlbkJyYWNlUG9zKSA6IDAp
IHsKICAgICAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdl
IGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBv
ZiB0aGUgZnVuY3Rpb24uCiAgICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9k
eShzdHJpY3RNb2RlKCkpOwogCkBAIC0xMzQ3LDEwICsxMzE1LDEwIEBAIHRlbXBsYXRlIDxKU1Bh
cnNlcjo6RnVuY3Rpb25SZXF1aXJlbWVudHMKICAgICAvLyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0
YXRlIGFuZCB0aGUgZnVuY3Rpb24gc2NvcGUgdGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlz
IHBhcnNlZC4KICAgICAvLyBBbnkgZnV0dXJlIHJlcGFyc2luZyBjYW4gdGhlbiBza2lwIHRoZSBm
dW5jdGlvbi4KICAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2Fj
aGUgPSA2NDsKLSAgICBPd25QdHI8Q2FjaGVkRnVuY3Rpb25JbmZvPiBuZXdJbmZvOworICAgIE93
blB0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKICAgICBpbnQgZnVuY3Rpb25M
ZW5ndGggPSBjbG9zZUJyYWNlUG9zIC0gb3BlbkJyYWNlUG9zOwogICAgIGlmIChUcmVlQnVpbGRl
cjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5n
dGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7Ci0gICAgICAgIG5ld0luZm8gPSBh
ZG9wdFB0cihuZXcgQ2FjaGVkRnVuY3Rpb25JbmZvKG1fdG9rZW4ubV9pbmZvLmxpbmUsIGNsb3Nl
QnJhY2VQb3MpKTsKKyAgICAgICAgbmV3SW5mbyA9IGFkb3B0UHRyKG5ldyBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbShtX3Rva2VuLm1faW5mby5saW5lLCBjbG9zZUJyYWNlUG9zKSk7CiAgICAgICAg
IGZ1bmN0aW9uU2NvcGUtPnNhdmVGdW5jdGlvbkluZm8obmV3SW5mby5nZXQoKSk7CiAgICAgfQog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXIuaAkocmV2aXNpb24gNzY1NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDMxICszMCwxNSBAQAogI2RlZmlu
ZSBTb3VyY2VQcm92aWRlcl9oCiAKICNpbmNsdWRlICJVU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCisKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+
CiAKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHN0cnVjdCBJdGVtIHt9OwotCi0gICAgICAgIFNvdXJjZVBy
b3ZpZGVyQ2FjaGUoKSA6IG1fY29udGVudEJ5dGVTaXplKDApIHt9Ci0gICAgICAgIH5Tb3VyY2VQ
cm92aWRlckNhY2hlKCkgeyBkZWxldGVBbGxWYWx1ZXMobV9tYXApOyB9Ci0gICAgICAgIAotICAg
ICAgICB1bnNpZ25lZCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEJ5dGVTaXpl
ICsgc2l6ZW9mKCp0aGlzKSArIG1fbWFwLmNhcGFjaXR5KCkgKiBzaXplb2YoSXRlbSopOyB9IAot
ICAgICAgICB2b2lkIGFkZChpbnQgc291cmNlUG9zaXRpb24sIFBhc3NPd25QdHI8SXRlbT4gaXRl
bSwgdW5zaWduZWQgc2l6ZSkgeyBtX21hcC5hZGQoc291cmNlUG9zaXRpb24sIGl0ZW0ubGVha1B0
cigpKTsgbV9jb250ZW50Qnl0ZVNpemUgKz0gc2l6ZTsgfQotICAgICAgICBjb25zdCBJdGVtKiBn
ZXQoaW50IHNvdXJjZVBvc2l0aW9uKSBjb25zdCB7IHJldHVybiBtX21hcC5nZXQoc291cmNlUG9z
aXRpb24pOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBIYXNoTWFwPGludCwgSXRlbSo+IG1f
bWFwOwotICAgICAgICB1bnNpZ25lZCBtX2NvbnRlbnRCeXRlU2l6ZTsKLSAgICB9OwotCiAgICAg
Y2xhc3MgU291cmNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTb3VyY2VQcm92aWRlcj4g
ewogICAgIHB1YmxpYzoKICAgICAgICAgU291cmNlUHJvdmlkZXIoY29uc3QgVVN0cmluZyYgdXJs
LCBTb3VyY2VQcm92aWRlckNhY2hlKiBjYWNoZSA9IDApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCisKKyNpbmNsdWRl
ICJTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU291cmNl
UHJvdmlkZXJDYWNoZTo6flNvdXJjZVByb3ZpZGVyQ2FjaGUoKQoreworICAgIGRlbGV0ZUFsbFZh
bHVlcyhtX21hcCk7Cit9CisgICAgCit1bnNpZ25lZCBTb3VyY2VQcm92aWRlckNhY2hlOjpieXRl
U2l6ZSgpIGNvbnN0Cit7IAorICAgIHJldHVybiBtX2NvbnRlbnRCeXRlU2l6ZSArIHNpemVvZigq
dGhpcykgKyBtX21hcC5jYXBhY2l0eSgpICogc2l6ZW9mKFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
Kik7IAorfQorCit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtOworCitjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlIHsKK3B1YmxpYzoKKyAg
ICBTb3VyY2VQcm92aWRlckNhY2hlKCkgOiBtX2NvbnRlbnRCeXRlU2l6ZSgwKSB7fQorICAgIH5T
b3VyY2VQcm92aWRlckNhY2hlKCk7CisgICAgCisgICAgdW5zaWduZWQgYnl0ZVNpemUoKSBjb25z
dDsKKyAgICB2b2lkIGFkZChpbnQgc291cmNlUG9zaXRpb24sIFBhc3NPd25QdHI8U291cmNlUHJv
dmlkZXJDYWNoZUl0ZW0+IGl0ZW0sIHVuc2lnbmVkIHNpemUpOworICAgIGNvbnN0IFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtKiBnZXQoaW50IHNvdXJjZVBvc2l0aW9uKSBjb25zdCB7IHJldHVybiBt
X21hcC5nZXQoc291cmNlUG9zaXRpb24pOyB9CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxpbnQs
IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKj4gbV9tYXA7CisgICAgdW5zaWduZWQgbV9jb250ZW50
Qnl0ZVNpemU7Cit9OworCitpbmxpbmUgdm9pZCBTb3VyY2VQcm92aWRlckNhY2hlOjphZGQoaW50
IHNvdXJjZVBvc2l0aW9uLCBQYXNzT3duUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiBpdGVt
LCB1bnNpZ25lZCBzaXplKQoreworICAgIG1fbWFwLmFkZChzb3VyY2VQb3NpdGlvbiwgaXRlbS5s
ZWFrUHRyKCkpOyAKKyAgICBtX2NvbnRlbnRCeXRlU2l6ZSArPSBzaXplOyAKK30KKworfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJKU1BhcnNlci5oIgorI2luY2x1ZGUgIldURlN0cmlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtIHsKK3B1YmxpYzoKKyAgICBTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbShpbnQgY2xvc2VCcmFjZUxpbmUsIGludCBjbG9zZUJyYWNlUG9zKQorICAgICAgICA6
IGNsb3NlQnJhY2VMaW5lKGNsb3NlQnJhY2VMaW5lKSAKKyAgICAgICAgLCBjbG9zZUJyYWNlUG9z
KGNsb3NlQnJhY2VQb3MpCisgICAgeworICAgIH0KKyAgICB1bnNpZ25lZCBhcHByb3hpbWF0ZUJ5
dGVTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFRoZSBpZGVudGlmaWVycyBhcmUgdW5p
cXVlZCBzdHJpbmdzIHNvIG1vc3QgbGlrZWx5IHRoZXJlIGFyZSBmZXcgbmFtZXMgdGhhdCBhY3R1
YWxseSB1c2UgYW55IGFkZGl0aW9uYWwgbWVtb3J5LgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgYXNzdW1tZWRBdmVyYWdlSWRlbnRpZmllclNpemUgPSBzaXplb2YoUmVmUHRyPFN0cmlu
Z0ltcGw+KSArIDI7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzaXplb2YoKnRoaXMpOworICAg
ICAgICBzaXplICs9IHVzZWRWYXJpYWJsZXMuc2l6ZSgpICogYXNzdW1tZWRBdmVyYWdlSWRlbnRp
ZmllclNpemU7CisgICAgICAgIHNpemUgKz0gd3JpdHRlblZhcmlhYmxlcy5zaXplKCkgKiBhc3N1
bW1lZEF2ZXJhZ2VJZGVudGlmaWVyU2l6ZTsKKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgfQor
ICAgIEpTVG9rZW4gY2xvc2VCcmFjZVRva2VuKCkgY29uc3QgCisgICAgeworICAgICAgICBKU1Rv
a2VuIHRva2VuOworICAgICAgICB0b2tlbi5tX3R5cGUgPSBDTE9TRUJSQUNFOworICAgICAgICB0
b2tlbi5tX2RhdGEuaW50VmFsdWUgPSBjbG9zZUJyYWNlUG9zOworICAgICAgICB0b2tlbi5tX2lu
Zm8uc3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zOworICAgICAgICB0b2tlbi5tX2luZm8uZW5k
T2Zmc2V0ID0gY2xvc2VCcmFjZVBvcyArIDE7CisgICAgICAgIHRva2VuLm1faW5mby5saW5lID0g
Y2xvc2VCcmFjZUxpbmU7IAorICAgICAgICByZXR1cm4gdG9rZW47CisgICAgfQorICAgIAorICAg
IGludCBjbG9zZUJyYWNlTGluZTsKKyAgICBpbnQgY2xvc2VCcmFjZVBvczsKKyAgICBib29sIHVz
ZXNFdmFsOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4gPiB1c2VkVmFyaWFibGVzOwor
ICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4gPiB3cml0dGVuVmFyaWFibGVzOworfTsKKwor
fQo=
</data>
<flag name="review"
          id="71536"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>