<?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>125252</bug_id>
          
          <creation_ts>2013-12-04 13:59:44 -0800</creation_ts>
          <short_desc>Fold typedArray.length if typedArray is constant</short_desc>
          <delta_ts>2013-12-08 10:58:30 -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>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>125205</dependson>
          <blocked>125253</blocked>
    
    <blocked>125395</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>956591</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-04 13:59:44 -0800</bug_when>
    <thetext>This requires introducing a NodeType for watchpointing typed array neutering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957473</commentid>
    <comment_count>1</comment_count>
      <attachid>218647</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-06 21:00:38 -0800</bug_when>
    <thetext>Created attachment 218647
it starts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957536</commentid>
    <comment_count>2</comment_count>
      <attachid>218661</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-07 12:49:45 -0800</bug_when>
    <thetext>Created attachment 218661
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957537</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-07 12:51:35 -0800</bug_when>
    <thetext>Attachment 218661 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ArrayBufferView.h&apos;, u&apos;Source/JavaScriptCore/tests/stress/fold-typed-array-properties.js&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/run-javascriptcore-tests&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 28 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>957538</commentid>
    <comment_count>4</comment_count>
      <attachid>218662</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-07 13:08:08 -0800</bug_when>
    <thetext>Created attachment 218662
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957539</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-07 13:08:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 218661 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ArrayBufferView.h&apos;, u&apos;Source/JavaScriptCore/tests/stress/fold-typed-array-properties.js&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/run-javascriptcore-tests&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
&gt; ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]

Umm no.

&gt; Total errors found: 1 in 28 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957540</commentid>
    <comment_count>6</comment_count>
      <attachid>218663</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-07 13:09:51 -0800</bug_when>
    <thetext>Created attachment 218663
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957542</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-07 13:13:03 -0800</bug_when>
    <thetext>Attachment 218663 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ArrayBufferView.h&apos;, u&apos;Source/JavaScriptCore/tests/stress/fold-typed-array-properties.js&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/run-javascriptcore-tests&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 28 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>957556</commentid>
    <comment_count>8</comment_count>
      <attachid>218663</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-07 17:28:20 -0800</bug_when>
    <thetext>Comment on attachment 218663
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:126
&gt; +    SamplingRegion samplingRegion(&quot;DFG Strength Reduction Phase&quot;);
&gt; +    return runPhase&lt;StrengthReductionPhase&gt;(graph);

Given how often these two lines of code go together, perhaps we should make runPhase&lt;&gt; make the SamplingRegion at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957664</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 10:55:56 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 218663 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=218663&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:126
&gt; &gt; +    SamplingRegion samplingRegion(&quot;DFG Strength Reduction Phase&quot;);
&gt; &gt; +    return runPhase&lt;StrengthReductionPhase&gt;(graph);
&gt; 
&gt; Given how often these two lines of code go together, perhaps we should make runPhase&lt;&gt; make the SamplingRegion at some point.

Yeah, I know! :-)  https://bugs.webkit.org/show_bug.cgi?id=125419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957665</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 10:58:30 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/160292</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218647</attachid>
            <date>2013-12-06 21:00:38 -0800</date>
            <delta_ts>2013-12-07 12:49:45 -0800</delta_ts>
            <desc>it starts</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20884</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjAyNjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSw4IEBACiAJCTBGQzA5NzkyMTQ2QTZG
NzMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlci5jcHAgKi87IH07CiAJCTBGQzA5N0ExMTQ2QjI4Q0EwMENGMjQ0MiAv
KiBERkdUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgKi87IH07CiAJ
CTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAv
KiBERkdUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkMyMENCNTE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkMyMENCMzE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAg
Ki87IH07CisJCTBGQzIwQ0I2MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkMyMENCNDE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzMxNDEy
MTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMzE0MTAxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lz
dGVyU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZDMzE0MTMxODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzMTQxMTE4MTQ1NTkx
MDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNwcCAqLzsgfTsKIAkJMEZDMzE0MTUxODE0NkQ3
MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzMxNDE0MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNl
dC5jcHAgKi87IH07CkBAIC01NDEsOSArNTQzLDkgQEAKIAkJMEZGQjkyMUUxNkQwMkY0NzAwNTVB
NURCIC8qIERGR1ZhcmlhZGljRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGODVBMzFFMTZBQjc2QUUwMDc3NTcxRSAvKiBERkdWYXJpYWRp
Y0Z1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZGQjkyMUYxNkQwMzMwNTAwNTVBNURCIC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9ycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwREFEMDMw
RkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkZDOTlEMTE4NEVDOEFEMDA5QzEwQUIg
LyogQ29uc3RhbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQzk5RDQxODRF
RTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMjE4NEVFMzE4
MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCAqLzsgfTsKIAkJ
MEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5
RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRkM5OUQx
MTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25z
dGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZGQzk1OTE0
RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NT
RVBoYXNlLmNwcCAqLzsgfTsKQEAgLTE3MDEsNiArMTcwMyw4IEBACiAJCTBGQzA5NzhGMTQ2QTZG
NjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc5
RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1RodW5rcy5jcHA7IHBhdGggPSBkZmcvREZHVGh1bmtzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8q
IERGR1RodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUaHVua3Mu
aDsgcGF0aCA9IGRmZy9ERkdUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0I0MTg1MkUyQzYwMEM5RTk1NCAvKiBE
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzMxNDEwMTgx
NDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWdpc3RlclNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMz
MTQxMTE4MTQ1NTkxMDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBSZWdpc3RlclNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQzMxNDE0MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpc3RlclNldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ4LDkgKzE4NTIsOSBAQAogCQkw
RkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlck9yaWdpblN0YWNrLmNwcDsg
cGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5T
dGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlck9yaWdpblN0
YWNrLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudE1vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0YW50TW9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3Bw
OyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEQxNEVGOTA5NTAwQzcy
NTMyIC8qIERGR0NTRVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0NTRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDU0VQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTYyLDYgKzM5NjYsOCBAQAogCQkJCUE3RDg5Q0YxMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCAqLywKIAkJCQkwRjlGQjRG
MjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgKi8sCiAJCQkJMEY5
RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLywKKwkJCQkw
RkMyMENCMzE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAg
Ki8sCisJCQkJMEZDMjBDQjQxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuaCAqLywKIAkJCQkwRjYzOTQ3NjE1RENFMzQ3MDA2QTU5N0MgLyogREZHU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZS5oICovLAogCQkJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdU
aHVua3MuY3BwICovLAogCQkJCTBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3Mu
aCAqLywKQEAgLTQ1ODQsNiArNDU5MCw3IEBACiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1
IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCQTE1RjAxODIzNDVB
RjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkMyMENCNjE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8q
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkNDODVBMTBF
RTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1
NEQxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAt
NTQ4MCw2ICs1NDg3LDcgQEAKIAkJCQkwRjIzNUJFQjE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NS
RXhpdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3OTIxNDZBNkY3MzAwQ0YyNDQy
IC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc3NjE0
Njk0M0IwMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEZDMjBDQjUxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzIxNDY5M0FGOTAwQ0YyNDQyIC8q
IERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzAyNUE5MTcx
NEIwRkEwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFRkM5QUExNjgxQTNCMzAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vo
b2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAxNjAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNDgsNiArMTE0OCw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIAogICAgIGNhc2UgRnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVk
QXJyYXlXYXRjaHBvaW50OgogICAgICAgICBicmVhazsKICAgICAKICAgICBjYXNlIENyZWF0ZUFy
Z3VtZW50czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CShyZXZpc2lvbiAxNjAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAg
ICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50
OgogICAgICAgICByZWFkKFdhdGNocG9pbnRfZmlyZSk7CisgICAgICAgIHdyaXRlKFNpZGVTdGF0
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBOb3RpZnlXcml0ZToKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNp
b24gMTYwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTcgKzk1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0T3I6IHsKLSAgICAgICAgICAgIC8vIE9wdGlt
aXplIFh8MCAtPiBYLgotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5pc0NvbnN0YW50
KCkpIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlIEMyID0gbV9ncmFwaC52YWx1ZU9mSlNDb25z
dGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpOwotICAgICAgICAgICAgICAgIGlmIChDMi5pc0lu
dDMyKCkgJiYgIUMyLmFzSW50MzIoKSkgewotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+
Y29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQyKCku
bm9kZSgpLCBLbm93bkludDMyVXNlKSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxk
cmVuLnJlbW92ZUVkZ2UoMSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lk
ZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpeEludEVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgZml4SW50RWRnZShub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTk1MSw2ICs5NDAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIEZ1bmN0aW9u
UmVlbnRyeVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVdhdGNocG9pbnQ6CiAg
ICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTYwMjY0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3Miw2ICs5NzIsMTYg
QEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
VmFyaWFibGVXYXRjaHBvaW50U2V0Kj4obV9vcEluZm8pOwogICAgIH0KKyAgICAKKyAgICBib29s
IGhhc1R5cGVkQXJyYXkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gVHlwZWRBcnJh
eVdhdGNocG9pbnQ7CisgICAgfQorICAgIAorICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0eXBlZEFy
cmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQXJyYXlCdWZm
ZXJWaWV3Kj4obV9vcEluZm8pOworICAgIH0KIAogICAgIGJvb2wgaGFzU3RydWN0dXJlVHJhbnNp
dGlvbkRhdGEoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHJldmlzaW9uIDE2MDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhBcnJheWlmeSwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKEFycmF5aWZ5VG9TdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlLCBOb2RlUmVzdWx0U3RvcmFnZSkg
XAorICAgIG1hY3JvKFR5cGVkQXJyYXlXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0QnlPZmZzZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dEJ5T2Zm
c2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVS
ZXN1bHRJbnQzMikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShy
ZXZpc2lvbiAxNjAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRo
IFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKICAg
ICAgICAgICAgIHZhbGlkYXRlKGRmZyk7CiAgICAgICAgIAorICAgICAgICBjaGFuZ2VkIHw9IHBl
cmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ0ZBKGRmZyk7CiAg
ICAgICAgIGNoYW5nZWQgfD0gcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwogICAgICAgICBj
aGFuZ2VkIHw9IHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihkZmcpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NzcsNiArNTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb29wSGludDoKICAg
ICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlXYXRj
aHBvaW50OgorICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVz
ZSBpdCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTYwMjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0NCw2ICsyNDQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0
CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAg
IGNhc2UgRnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJyYXlXYXRj
aHBvaW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZh
bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkocmV2aXNpb24gMTYwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg5NSw3ICszODk1
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50OiB7CisgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CisgICAgY2FzZSBU
eXBlZEFycmF5V2F0Y2hwb2ludDogewogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNs
dWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2luY2x1ZGUg
IkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIK
KyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCisjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIFN0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIFN0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFBoYXNlKGdyYXBoLCAic3Ry
ZW5ndGggcmVkdWN0aW9uIikKKyAgICAgICAgLCBtX2luc2VydGlvblNldChncmFwaCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fZml4cG9pbnRTdGF0ZSA9PSBGaXhwb2ludE5vdENvbnZlcmdlZCk7CisgICAgICAgIAor
ICAgICAgICBtX2NoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJ
bmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewor
ICAgICAgICAgICAgbV9ibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAg
ICAgICBpZiAoIW1fYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBmb3IgKG1fbm9kZUluZGV4ID0gMDsgbV9ub2RlSW5kZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsr
bV9ub2RlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBtX25vZGUgPSBtX2Jsb2NrLT5hdChub2Rl
SW5kZXgpOworICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9ibG9jayk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZvaWQgaGFuZGxlTm9kZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkg
eworICAgICAgICBjYXNlIEJpdE9yOgorICAgICAgICAgICAgLy8gT3B0aW1pemUgWHwwIC0+IFgu
CisgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS0+aXNDb25zdGFudCgpKSB7CisgICAg
ICAgICAgICAgICAgSlNWYWx1ZSBDMiA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobV9ub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgIGlmIChDMi5pc0ludDMyKCkgJiYg
IUMyLmFzSW50MzIoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQ
aGFudG9tLCBtX25vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3Zl
RWRnZSgxKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNl
dDsKKyAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOworICAgIHVuc2lnbmVkIG1fbm9kZUluZGV4Owor
ICAgIE5vZGUqIG1fbm9kZTsKKyAgICBib29sIG1fY2hhbmdlZDsKK307CisgICAgCitib29sIHBl
cmZvcm1TdHJlbmd0aFJlZHVjdGlvbihHcmFwaCYgZ3JhcGgpCit7CisgICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oIkRGRyBTdHJlbmd0aCBSZWR1Y3Rpb24gUGhhc2UiKTsKKyAgICBy
ZXR1cm4gcnVuUGhhc2U8U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
REZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZV9oCisjZGVmaW5lIERGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2VfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKKy8vIFBlcmZvcm1zIHNpbXBsaWZpY2F0aW9ucyB0
aGF0IGRvbid0IGRlcGVuZCBvbiBDRkEgb3IgQ1NFIGJ1dCB0aGF0IHNob3VsZCBiZQorLy8gZml4
cG9pbnRlZCB3aXRoIENGQSBhbmQgQ1NFLgorCitib29sIHBlcmZvcm1TdHJlbmdodFJlZHVjdGlv
bihHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2VfaAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw2ICsxNTUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVHlwZWRBcnJheVdhdGNo
cG9pbnQ6CisgICAgICAgICAgICBhZGRMYXppbHkobV9ub2RlLT50eXBlZEFycmF5KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218661</attachid>
            <date>2013-12-07 12:49:45 -0800</date>
            <delta_ts>2013-12-07 13:08:08 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>43072</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDEzLTEyLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rm9sZCB0eXBlZEFycmF5Lmxlbmd0aCBpZiB0eXBlZEFycmF5IGlzIGNvbnN0YW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUyNTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgd2Fz
IG1lYW50IHRvIGJlIGVhc3kuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUgd2FzIG5vIGdvb2Qg
cGxhY2UgZm9yIHB1dHRpbmcKKyAgICAgICAgdGhlIGZvbGRpbmcgb2YgdHlwZWRBcnJheS5sZW5n
dGggdG8gYSBjb25zdGFudC4gWW91IGNhbid0IHF1aXRlIGRvIGl0IGluIHRoZQorICAgICAgICBi
eXRlY29kZSBwYXJzZXIgYmVjYXVzZSBhdCB0aGF0IHBvaW50IHlvdSBkb24ndCB5ZXQga25vdyBp
ZiB0eXBlZEFycmF5IGlzIHJlYWxseQorICAgICAgICBhIHR5cGVkIGFycmF5LiBZb3UgY2FuJ3Qg
ZG8gaXQgYXMgcGFydCBvZiBjb25zdGFudCBmb2xkaW5nIGJlY2F1c2UgdGhlIGZvbGRlcgorICAg
ICAgICBhc3N1bWVzIHRoYXQgaXQgY2FuIG9wcG9ydHVuaXN0aWNhbGx5IGZvcndhcmQtZmxvdyBh
IGNvbnN0YW50IHZhbHVlIHdpdGhvdXQgY2hhbmdpbmcKKyAgICAgICAgdGhlIElSOyB0aGlzIGRv
ZXNuJ3Qgd29yayBzaW5jZSB3ZSBuZWVkIHRvIGZpcnN0IGNoYW5nZSB0aGUgSVIgdG8gcmVnaXN0
ZXIgYQorICAgICAgICBkZXNpcmVkIHdhdGNocG9pbnQgYW5kIG9ubHkgYWZ0ZXIgdGhhdCBjYW4g
d2UgaW50cm9kdWNlIHRoYXQgY29uc3RhbnQuIFdlIGNvdWxkIGhhdmUKKyAgICAgICAgZG9uZSBp
dCBpbiBGaXh1cCBidXQgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYXdrd2FyZCBzaW5jZSBGaXh1cCdz
IGNvZGUgZm9yIHR1cm5pbmcgYQorICAgICAgICBHZXRCeUlkIG9mICJsZW5ndGgiIGludG8gR2V0
QXJyYXlMZW5ndGggaXMgYWxyZWFkeSBzb21ld2hhdCBjb21wbGV4LiBXZSBjb3VsZCBoYXZlCisg
ICAgICAgIGRvbmUgaXQgaW4gQ1NFIGJ1dCBDU0UgaXMgYWxyZWFkeSBmYWlybHkgZ25hcmx5IGFu
ZCB3aWxsIHByb2JhYmx5IGdldCByZXdyaXR0ZW4uCisgICAgICAgIAorICAgICAgICBTbyBJIGlu
dHJvZHVjZWQgYSBuZXcgcGhhc2UsIGNhbGxlZCBTdHJlbmd0aFJlZHVjdGlvbi4gVGhpcyBwaGFz
ZSBzaG91bGQgaGF2ZSBhbnkKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIHRoYXQgZG9uJ3QgcmVx
dWl0ZSBDRkEgb3IgQ1NFIGFuZCB0aGF0IGl0IHdvdWxkIGJlIHdlaXJkIHRvIHB1dCBpbnRvCisg
ICAgICAgIHRob3NlIG90aGVyIHBoYXNlcy4KKyAgICAgICAgCisgICAgICAgIEkgYWxzbyB0b29r
IHRoZSBvcHBvcnR1bml0eSB0byByZWZhY3RvciBzb21lIG9mIHRoZSBvdGhlciBmb2xkaW5nIGNv
ZGUuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gYWRkcyBhIHRlc3QsIGJ1dCB0aGUgdGVz
dCBjb3VsZG4ndCBxdWl0ZSBiZSBhIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mgc28gSQorICAgICAg
ICBpbnRyb2R1Y2VkIHRoZSBub3Rpb24gb2YgSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzLgor
ICAgICAgICAKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpc24ndCByZWFsbHkgdG8g
aW1wcm92ZSBwZXJmb3JtYW5jZSBvciBhbnl0aGluZyBsaWtlIHRoYXQuCisgICAgICAgIEl0IGFk
ZHMgYW4gb3B0aW1pemF0aW9uIGZvciBjb21wbGV0ZW5lc3MsIGFuZCBpbiBkb2luZyBzbyBpdCB1
bmxvY2tzIGEgYnVuY2ggb2YgbmV3CisgICAgICAgIHBvc3NpYmlsaXRpZXMuIFRoZSBvbmUgdGhh
dCBJJ20gbW9zdCBleGNpdGVkIGFib3V0IGlzIHJldmVhbGluZyBhcnJheSBsZW5ndGggY2hlY2tz
CisgICAgICAgIGluIERGRyBJUiwgd2hpY2ggd2lsbCBhbGxvdyBmb3IgYXJyYXkgYm91bmRzIGNo
ZWNrIGhvaXN0aW5nIGFuZCBlbGltaW5hdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGgu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXcpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGlsZDEpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6dHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnN0
YW50SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZTo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpmb2xkVHlwZWRBcnJheVByb3BlcnR5VG9Db25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBkZmcvREZH
V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6dHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25UcmFuc2ZlckFy
cmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2ZvbGQtdHlw
ZWQtYXJyYXktcHJvcGVydGllcy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDEzLTEy
LTA3ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtX
aW5dWzY0LWJpdF0gSGl0dGluZyBicmVha3BvaW50IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBpbiBj
YWxsVG9KYXZhU2NyaXB0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKICAgICBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKICAgICBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKKyAgICBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAog
ICAgIGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDb252ZXJzaW9uUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFj
a0xheW91dFBoYXNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUFic3RyYWN0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rp
b24oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbk51bWJlck9mREZHQ29tcGlsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7
CiBzdGF0aWMgTk9fUkVUVVJOX1dJVEhfVkFMVUUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblF1aXQoRXhlY1N0YXRlKik7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1Mp
CkBAIC0yMzUsNiArMjM3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
Im5ldmVySW5saW5lRnVuY3Rpb24iLCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24sIDEpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm5vSW5saW5lIiwgZnVuY3Rpb25OZXZlcklubGluZUZ1
bmN0aW9uLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZkRGR0NvbXBpbGVz
IiwgZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzLCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJ0cmFuc2ZlckFycmF5QnVmZmVyIiwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyLCAx
KTsKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
c2V0U2FtcGxpbmdGbGFncyIsIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncywgMSk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25DbGVhclNhbXBs
aW5nRmxhZ3MsIDEpOwpAQCAtNTA1LDYgKzUwOCwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTnVtCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJPZkRG
R0NvbXBpbGVzKGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vdCBlbm91
Z2ggYXJndW1lbnRzIikpKTsKKyAgICAKKyAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYW4gYXJyYXkgYnVmZmVy
IikpKTsKKyAgICAKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CisgICAg
YnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15Q29udGVudHMpOworICAgIAorICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSopCiB7CiAgICAgZXhpdChFWElUX1NV
Q0NFU1MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTIsNiArNDEy
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0YWNrTGF5
b3V0UGhhc2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR1RodW5rcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHVGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIiAvPgpAQCAtOTE4
LDYgKzkxOSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU3BlY3VsYXRp
dmVKSVQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTU0FDb252ZXJz
aW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdGFja0xh
eW91dFBoYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdUaHVua3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3
OSw2ICszNzksOCBAQAogCQkwRkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzA5NzhGMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovOyB9
OwogCQkwRkMwOTdBMTE0NkIyOENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlGMTQ2QjI4QzcwMENG
MjQ0MiAvKiBERkdUaHVua3MuY3BwICovOyB9OwogCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIg
LyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDMjBDQjUxODUyRTJDNjAw
QzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovOyB9OworCQkwRkMyMENCNjE4NTJFMkM2
MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjQxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0
ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIz
MiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNl
dC5jcHAgKi87IH07CiAJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovOyB9OwpAQCAtNTQxLDkgKzU0
Myw5IEBACiAJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1QTMx
RTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkI5MjFGMTZEMDMzMDUwMDU1
QTVEQiAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMjAxNkQwMzNC
NzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29u
c3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDAxODRFQzhBRDAw
OUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRkM5OUQ0MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAv
KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZDOTlEMTE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3Rh
bnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTcxNEVGOTBBMDAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAg
Ki87IH07CiAJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBo
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi87IH07CkBAIC0xNzAx
LDYgKzE3MDMsOCBAQAogCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4
aXRDb21waWxlci5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1Ro
dW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdUaHVua3Mu
Y3BwOyBwYXRoID0gZGZnL0RGR1RodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVGh1bmtzLmg7IHBhdGggPSBkZmcvREZHVGh1bmtzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0IzMTg1MkUyQzYwMEM5RTk1NCAv
KiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkMyMENCNDE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmg7IHBhdGggPSBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQxMDE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJT
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRl
bXBSZWdpc3RlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZW1wUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTg0OCw5ICsxODUyLDkgQEAKIAkJMEZGNzI5QTExNjZBRDM0NzAwMEY1QkEzIC8q
IFByb2ZpbGVyT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9y
aWdpblN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNzI5QTIxNjZB
RDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBwYXRoID0gcHJvZmlsZXIvUHJv
ZmlsZXJPcmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJD
RjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4
ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGRkM5OUQwMTg0
RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29uc3RhbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
RkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5
RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZGQzk5RDAxODRFQzhBRDAw
OUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb25zdGFudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIx
NEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdD
RkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHQ1NFUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk2
Miw2ICszOTY2LDggQEAKIAkJCQlBN0Q4OUNGMTE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29u
dmVyc2lvblBoYXNlLmggKi8sCiAJCQkJMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0
YWNrTGF5b3V0UGhhc2UuY3BwICovLAogCQkJCTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBE
RkdTdGFja0xheW91dFBoYXNlLmggKi8sCisJCQkJMEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovLAorCQkJCTBGQzIwQ0I0MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmggKi8sCiAJCQkJMEY2Mzk0NzYx
NURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkw
RkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLywKIAkJCQkwRkMwOTdB
MDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8sCkBAIC00NTg0LDYgKzQ1OTAsNyBA
QAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMjBDQjYxODUyRTJD
NjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRP
cGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTU0ODAsNiArNTQ4Nyw3IEBACiAJCQkJMEYy
MzVCRUIxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzA5NzkyMTQ2QTZGNzMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzIwQ0I1MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMw
MDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEZ1bmN0aW9uUmVl
bnRyeVdhdGNocG9pbnQ6CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDoKICAgICAgICAg
YnJlYWs7CiAgICAgCiAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTYwMjY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0NCw3ICsxNDQsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6
CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDoKICAgICAgICAgcmVhZChXYXRjaHBvaW50
X2ZpcmUpOworICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIGNhc2UgTm90aWZ5V3JpdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDE3
ICs5NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEJpdE9yOiB7Ci0gICAgICAgICAgICAvLyBPcHRpbWl6ZSBYfDAgLT4gWC4KLSAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDIoKS0+aXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNW
YWx1ZSBDMiA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgp
KTsKLSAgICAgICAgICAgICAgICBpZiAoQzIuaXNJbnQzMigpICYmICFDMi5hc0ludDMyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSwgS25vd25JbnQzMlVzZSkpOwot
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKDEpOwotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CiAgICAgICAgICAg
ICBmaXhJbnRFZGdlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEludEVkZ2Uobm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NTEsNiArOTQwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICAgICAgY2FzZSBM
b29wSGludDoKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50OgorICAgICAg
ICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQog
ICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDAsMTAgKzc0MCw4IEBAIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIEdyYXBoOjp0cnlHZXQKICAgICByZXR1cm4gYWN0aXZhdGlvbi0+cmVnaXN0
ZXJzKCk7CiB9CiAKLUpTQXJyYXlCdWZmZXJWaWV3KiBHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3
KE5vZGUqIG5vZGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCitKU0FycmF5QnVmZmVyVmlldyogR3Jh
cGg6OnRyeUdldEZvbGRhYmxlVmlldyhOb2RlKiBub2RlKQogewotICAgIGlmIChhcnJheU1vZGUu
dHlwZWRBcnJheVR5cGUoKSA9PSBOb3RUeXBlZEFycmF5KQotICAgICAgICByZXR1cm4gMDsKICAg
ICBpZiAoIW5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZh
bHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsKQEAgLTc1NCw2ICs3NTIsMTggQEAgSlNBcnJheUJ1ZmZl
clZpZXcqIEdyYXBoOjp0cnlHZXRGb2xkYWJsZQogICAgIHJldHVybiB2aWV3OwogfQogCitKU0Fy
cmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyhOb2RlKiBub2RlLCBBcnJh
eU1vZGUgYXJyYXlNb2RlKQoreworICAgIGlmIChhcnJheU1vZGUudHlwZWRBcnJheVR5cGUoKSA9
PSBOb3RUeXBlZEFycmF5KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ5R2V0Rm9s
ZGFibGVWaWV3KG5vZGUpOworfQorCitKU0FycmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZv
bGRhYmxlVmlld0ZvckNoaWxkMShOb2RlKiBub2RlKQoreworICAgIHJldHVybiB0cnlHZXRGb2xk
YWJsZVZpZXcoY2hpbGQobm9kZSwgMCkubm9kZSgpLCBub2RlLT5hcnJheU1vZGUoKSk7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw3ICs4MDYsOSBAQCBw
dWJsaWM6CiAgICAgSlNBY3RpdmF0aW9uKiB0cnlHZXRBY3RpdmF0aW9uKE5vZGUqKTsKICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiB0cnlHZXRSZWdpc3RlcnMoTm9kZSopOwogICAgIAor
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSopOwogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSosIEFycmF5TW9kZSk7Cisg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRyeUdldEZvbGRhYmxlVmlld0ZvckNoaWxkMShOb2RlKik7
CiAgICAgCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NzIsNiArOTcyLDE2IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZh
cmlhYmxlV2F0Y2hwb2ludFNldCo+KG1fb3BJbmZvKTsKICAgICB9CisgICAgCisgICAgYm9vbCBo
YXNUeXBlZEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IFR5cGVkQXJyYXlX
YXRjaHBvaW50OworICAgIH0KKyAgICAKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdHlwZWRBcnJh
eSgpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KG1fb3BJbmZvKTsKKyAgICB9CiAKICAgICBib29sIGhhc1N0cnVjdHVyZVRyYW5zaXRp
b25EYXRhKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCShyZXZpc2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQXJyYXlpZnksIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhBcnJheWlmeVRvU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwK
KyAgICBtYWNybyhUeXBlZEFycmF5V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRCeU9mZnNl
dCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVz
dWx0SW50MzIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2
aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1NTQUNvbnZlcnNpb25QaGFzZS5o
IgogI2luY2x1ZGUgIkRGR1N0YWNrTGF5b3V0UGhhc2UuaCIKKyNpbmNsdWRlICJERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCIKICNpbmNsdWRlICJE
RkdVbmlmaWNhdGlvblBoYXNlLmgiCkBAIC0yMDMsNiArMjA0LDcgQEAgUGxhbjo6Q29tcGlsYXRp
b25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKICAgICAgICAgICAgIHZhbGlkYXRlKGRmZyk7CiAgICAgICAgIAorICAgICAgICBjaGFuZ2Vk
IHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ0ZBKGRm
Zyk7CiAgICAgICAgIGNoYW5nZWQgfD0gcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwogICAg
ICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihkZmcpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsNiArNTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb29wSGlu
dDoKICAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50
cnlXYXRjaHBvaW50OgorICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQg
YmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTYwMjY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCw2ICsyNDQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIE5vdGlmeVdyaXRl
OgogICAgIGNhc2UgRnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJy
YXlXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBH
ZXRCeVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzU5MSw3ICszNTkxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDogeworICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgorICAg
IGNhc2UgVHlwZWRBcnJheVdhdGNocG9pbnQ6IHsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzg5NSw3ICszODk1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50OiB7CisgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ6CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDogewogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzI5LDcgKzIzMjksNyBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2
ZUpJVDo6anVtcEZvCiB7CiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxBbGlhcykKICAg
ICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpKdW1wKCk7Ci0gICAgaWYgKEpTQXJyYXlCdWZmZXJW
aWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcobV9qaXQuZ3JhcGgo
KS5jaGlsZChub2RlLCAwKS5ub2RlKCksIG5vZGUtPmFycmF5TW9kZSgpKSkgeworICAgIGlmIChK
U0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3
Rm9yQ2hpbGQxKG5vZGUpKSB7CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXctPmxlbmd0
aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUs
IDEpLm5vZGUoKTsKICAgICAgICAgaWYgKG1faml0LmdyYXBoKCkuaXNJbnQzMkNvbnN0YW50KGlu
ZGV4Tm9kZSkgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faml0LmdyYXBoKCkudmFsdWVPZklu
dDMyQ29uc3RhbnQoaW5kZXhOb2RlKSkgPCBsZW5ndGgpCkBAIC00MDQ0LDggKzQwNDQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nWmVyb0xlCiAKIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDb25zdGFudEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkK
IHsKLSAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9s
ZGFibGVWaWV3KAotICAgICAgICBub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmFycmF5TW9k
ZSgpKTsKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0
Rm9sZGFibGVWaWV3Rm9yQ2hpbGQxKG5vZGUpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICh2aWV3LT5tb2RlKCkgPT0gRmFzdFR5cGVkQXJyYXkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisj
aW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZHUGhhc2UuaCIKKyNpbmNs
dWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgorI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlQWNjZXNzRGF0YUR1bXAuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZShHcmFw
aCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJzdHJlbmd0aCByZWR1Y3Rpb24iKQor
ICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KGdyYXBoKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBydW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9maXhwb2ludFN0YXRl
ID09IEZpeHBvaW50Tm90Q29udmVyZ2VkKTsKKyAgICAgICAgCisgICAgICAgIG1fY2hhbmdlZCA9
IGZhbHNlOworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBt
X2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBtX2Jsb2Nr
ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghbV9ibG9jaykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZvciAobV9ub2RlSW5kZXgg
PSAwOyBtX25vZGVJbmRleCA8IG1fYmxvY2stPnNpemUoKTsgKyttX25vZGVJbmRleCkgeworICAg
ICAgICAgICAgICAgIG1fbm9kZSA9IG1fYmxvY2stPmF0KG1fbm9kZUluZGV4KTsKKyAgICAgICAg
ICAgICAgICBoYW5kbGVOb2RlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5leGVjdXRlKG1fYmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gbV9jaGFuZ2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZU5vZGUo
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBC
aXRPcjoKKyAgICAgICAgICAgIC8vIE9wdGltaXplIFh8MCAtPiBYLgorICAgICAgICAgICAgaWYg
KG1fbm9kZS0+Y2hpbGQyKCktPmlzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgICAgIEpTVmFs
dWUgQzIgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoQzIuaXNJbnQzMigpICYmICFDMi5hc0ludDMyKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5j
b2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZSgxKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgaWYgKEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGls
ZDEobV9ub2RlKSkKKyAgICAgICAgICAgICAgICBmb2xkVHlwZWRBcnJheVByb3BlcnR5VG9Db25z
dGFudCh2aWV3LCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICAgICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9s
ZGFibGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKKyAgICAgICAgICAgICAgICBmb2xk
VHlwZWRBcnJheVByb3BlcnR5VG9Db25zdGFudCh2aWV3LCBqc051bWJlcih2aWV3LT5ieXRlT2Zm
c2V0KCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIC8vIEZJ
WE1FOiBUaGUgY29uc3RhbnQtZm9sZGluZyBvZiBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlIHNo
b3VsZCBiZSBleHByZXNzZWQKKyAgICAgICAgLy8gYXMgYW4gSVIgdHJhbnNmb3JtYXRpb24gaW4g
dGhpcyBwaGFzZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNTM5NQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGZvbGRUeXBlZEFycmF5
UHJvcGVydHlUb0NvbnN0YW50KEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3LCBKU1ZhbHVlIGNvbnN0
YW50KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgVHlwZWRBcnJheVdhdGNocG9pbnQsIG1fbm9kZS0+
Y29kZU9yaWdpbiwKKyAgICAgICAgICAgIE9wSW5mbyh2aWV3KSk7CisgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBjb25zdGFudCk7CisgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgfQorICAgIAorICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAg
ICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOworICAgIHVuc2lnbmVkIG1fbm9kZUluZGV4OworICAgIE5v
ZGUqIG1fbm9kZTsKKyAgICBib29sIG1fY2hhbmdlZDsKK307CisgICAgCitib29sIHBlcmZvcm1T
dHJlbmd0aFJlZHVjdGlvbihHcmFwaCYgZ3JhcGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIkRGRyBTdHJlbmd0aCBSZWR1Y3Rpb24gUGhhc2UiKTsKKyAgICByZXR1cm4g
cnVuUGhhc2U8U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZV9oCisjZGVmaW5lIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Vf
aAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKKworY2xhc3MgR3JhcGg7CisKKy8vIFBlcmZvcm1zIHNpbXBsaWZpY2F0aW9ucyB0aGF0IGRv
bid0IGRlcGVuZCBvbiBDRkEgb3IgQ1NFIGJ1dCB0aGF0IHNob3VsZCBiZQorLy8gZml4cG9pbnRl
ZCB3aXRoIENGQSBhbmQgQ1NFLgorCitib29sIHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihHcmFw
aCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKKworI2VuZGlmIC8vIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2VfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDE3ICs5NSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJy
YXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpTdHJpbmcpCiAgICAgICAgICAgICAgICAgaGFuZGxl
U3RyaW5nR2V0QnlWYWwoKTsKIAotICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG1fbm9kZS0+YXJyYXlNb2RlKCkpKQorICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGlsZDEobV9ub2RlKSkKICAg
ICAgICAgICAgICAgICBhZGRMYXppbHkodmlldyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAgICAgICAgICAgaWYgKEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDApLm5vZGUoKSwgbV9ub2RlLT5hcnJheU1vZGUoKSkpCi0gICAgICAg
ICAgICAgICAgYWRkTGF6aWx5KHZpZXcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKLSAgICAgICAgICAgIGlmIChKU0FycmF5
QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KG1fbm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBtX25vZGUtPmFycmF5TW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChKU0Fy
cmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3Rm9yQ2hpbGQx
KG1fbm9kZSkpCiAgICAgICAgICAgICAgICAgYWRkTGF6aWx5KHZpZXcpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE0NCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlOgotICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksIG1fbm9kZS0+
YXJyYXlNb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcg
PSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlld0ZvckNoaWxkMShtX25vZGUpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGF3ZXNvbWUgdG8gYmUgYWJsZSB0byBmb2xk
IHRoZSBwcm9wZXJ0eSBzdG9yYWdlIGZvcgogICAgICAgICAgICAgICAgIC8vIHRoZXNlIEdDLWFs
bG9jYXRlZCB0eXBlZCBhcnJheXMuIEZvciBub3cgaXQgZG9lc24ndCBtYXR0ZXIgYmVjYXVzZSB0
aGUKICAgICAgICAgICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UtY2FzZXMgZm9yIGNvbnN0YW50
IHR5cGVkIGFycmF5cyBpbnZvbHZlIGxhcmdlIGFycmF5cyB3aXRoCkBAIC0xNTUsNiArMTUwLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgorICAgICAgICAgICAgYWRk
TGF6aWx5KG1fbm9kZS0+dHlwZWRBcnJheSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
ICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgRnVuY3Rpb25SZWVu
dHJ5V2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgIGNhc2Ug
VmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBWYWx1
ZVRvSW50MzI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMSArMjY2
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY29tcGls
ZVBoYW50b20oKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoOgotICAg
ICAgICBjYXNlIFBoYW50b21Mb2NhbDoKLSAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKLSAgICAg
ICAgY2FzZSBMb29wSGludDoKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRo
QWRkOgogICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICAgICAgY29tcGlsZUFkZFN1Yigp
OwpAQCAtMzk4LDEwICszOTMsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRl
OgogICAgICAgICAgICAgY29tcGlsZU5vdGlmeVdyaXRlKCk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50OgotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgR2V0TXlTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVHZXRNeVNjb3Bl
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3Miw2ICs0NjMsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgICAgICAgICBjb21waWxlSW50NTJUb1ZhbHVl
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGbHVzaDoKKyAgICAgICAgY2Fz
ZSBQaGFudG9tTG9jYWw6CisgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2Ug
TG9vcEhpbnQ6CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgorICAgICAgICBjYXNl
IEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVdhdGNo
cG9pbnQ6CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0
MjQsNyArMTQyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgu
dHJ5R2V0Rm9sZGFibGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBtX25vZGUtPmFycmF5
TW9kZSgpKSkgeworICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhtX25vZGUpKSB7CiAgICAgICAgICAgICBpZiAodmlldy0+bW9k
ZSgpICE9IEZhc3RUeXBlZEFycmF5KSB7CiAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZShtX291
dC5jb25zdEludFB0cih2aWV3LT52ZWN0b3IoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTE3OTcsNyArMTc5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBP
dXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
YWJvdmVPckVxdWFsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVkQXJyYXlMZW5ndGgoY2hpbGQxLm5vZGUoKSwgbV9u
b2RlLT5hcnJheU1vZGUoKSwgYmFzZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlZEFycmF5TGVuZ3RoKGNoaWxkMSwgbV9ub2RlLT5hcnJheU1vZGUoKSwgYmFzZSkpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVHlwZWRQ
b2ludGVyIHBvaW50ZXIgPSBUeXBlZFBvaW50ZXIoCkBAIC0yOTQzLDkgKzI5NDIsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwg
c2xvd0J1dHRlcmZseSkpOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgdHlwZWRBcnJheUxlbmd0
aChOb2RlKiBiYXNlTm9kZSwgQXJyYXlNb2RlIGFycmF5TW9kZSwgTFZhbHVlIGJhc2UpCisgICAg
TFZhbHVlIHR5cGVkQXJyYXlMZW5ndGgoRWRnZSBiYXNlRWRnZSwgQXJyYXlNb2RlIGFycmF5TW9k
ZSwgTFZhbHVlIGJhc2UpCiAgICAgewotICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZp
ZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldyhiYXNlTm9kZSwgYXJyYXlNb2RlKSkKKyAg
ICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJs
ZVZpZXcoYmFzZUVkZ2Uubm9kZSgpLCBhcnJheU1vZGUpKQogICAgICAgICAgICAgcmV0dXJuIG1f
b3V0LmNvbnN0SW50MzIodmlldy0+bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gbV9vdXQubG9h
ZDMyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAko
cmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogCiAg
ICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5
QnVmZmVyIGlzCiAgICAgLy8gd2l0aGluIHJhbmdlLgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGFsaWdubWVudCBlcnJvcnMgYW5kIGJvdW5kcyBlcnJvcnMu
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM5MQog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdl
KAogICAgICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtdHlwZWQtYXJyYXktcHJvcGVydGllcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQt
dHlwZWQtYXJyYXktcHJvcGVydGllcy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZm9sZC10eXBlZC1hcnJheS1wcm9wZXJ0aWVzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKK3ZhciBhID0gbmV3IEludDMyQXJyYXkobmV3IEFy
cmF5QnVmZmVyKDEwMCksIDQsIDEpOworCitpZiAoYS5sZW5ndGggIT0gMSkKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCBsZW5ndGg6ICIgKyBhLmxlbmd0aDsKK2lmIChhLmJ5dGVPZmZzZXQgIT0gNCkK
KyAgICB0aHJvdyAiRXJyb3I6IGJhZCBvZmZzZXQ6ICIgKyBhLmJ5dGVPZmZzZXQ7CitpZiAoYS5i
eXRlTGVuZ3RoICE9IDQpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgYnl0ZSBsZW5ndGg6ICIgKyBh
LmJ5dGVMZW5ndGg7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBpZiAoYS5sZW5ndGggIT0gMSkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgbGVuZ3RoOiAiICsgYS5sZW5ndGg7CisgICAgaWYg
KGEuYnl0ZU9mZnNldCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBvZmZzZXQ6ICIg
KyBhLmJ5dGVPZmZzZXQ7CisgICAgaWYgKGEuYnl0ZUxlbmd0aCAhPSA0KQorICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCBieXRlIGxlbmd0aDogIiArIGEuYnl0ZUxlbmd0aDsKK30KKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgZm9vKCk7CisKK3RyYW5zZmVyQXJyYXlC
dWZmZXIoYS5idWZmZXIpOworCit0cnkgeworICAgIGZvbygpOworICAgIHRocm93ICJTaG91bGQg
aGF2ZSB0aHJvd24uIjsKK30gY2F0Y2ggKGUpIHsgfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjc0KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTItMDcgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBGb2xkIHR5cGVkQXJyYXku
bGVuZ3RoIGlmIHR5cGVkQXJyYXkgaXMgY29uc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTI1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MgdG8gdGhlIHNldCBvZiBKUyB0ZXN0cy4gVGhpcyBpcyB3aGVyZSB5b3UK
KyAgICAgICAgc2hvdWxkIHB1dCB0ZXN0cyB0aGF0IHJ1biBqdXN0IGxpa2UgSlNSZWdyZXNzIGJ1
dCBkb24ndCBydW4gYXMgcGFydCBvZiBMYXlvdXRUZXN0cy4KKyAgICAgICAgQ3VycmVudGx5IEkn
bSB1c2luZyBpdCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIHNvbWUgc3VyZ2ljYWwgc3VwcG9ydCBm
cm9tIGpzYy5jcHAuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0
czoKKwogMjAxMy0xMi0wNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLXSBSdW4gZWFjaCBndGVzdCBzdWJ0ZXN0IHNlcGFyYXRlbHkgaW5zdGVh
ZCBvZiBpbiBvbmUgZ28KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRl
c3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3Rz
CShyZXZpc2lvbiAxNjAyNjgpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMjM5LDYgKzIzOSw3IEBAIGlmICgkcnVuSlNDU3RyZXNz
KSB7CiAgICAgICAgICJQZXJmb3JtYW5jZVRlc3RzL1N1blNwaWRlci90ZXN0cy9zdW5zcGlkZXIt
MS4wIiwKICAgICAgICAgIlBlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2IiwK
ICAgICAgICAgIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVz
dHMueWFtbCIsCisgICAgICAgICJTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzIiwK
ICAgICAgICAgIkxheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzIiwKICAgICAgICAg
IlBlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL3Byb2ZpbGVyLXRlc3QueWFtbCIsCiAgICAgICAg
ICJMYXlvdXRUZXN0cy9qc2MtbGF5b3V0LXRlc3RzLnlhbWwiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218662</attachid>
            <date>2013-12-07 13:08:08 -0800</date>
            <delta_ts>2013-12-07 13:09:51 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>43633</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDEzLTEyLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rm9sZCB0eXBlZEFycmF5Lmxlbmd0aCBpZiB0eXBlZEFycmF5IGlzIGNvbnN0YW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUyNTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgd2Fz
IG1lYW50IHRvIGJlIGVhc3kuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUgd2FzIG5vIGdvb2Qg
cGxhY2UgZm9yIHB1dHRpbmcKKyAgICAgICAgdGhlIGZvbGRpbmcgb2YgdHlwZWRBcnJheS5sZW5n
dGggdG8gYSBjb25zdGFudC4gWW91IGNhbid0IHF1aXRlIGRvIGl0IGluIHRoZQorICAgICAgICBi
eXRlY29kZSBwYXJzZXIgYmVjYXVzZSBhdCB0aGF0IHBvaW50IHlvdSBkb24ndCB5ZXQga25vdyBp
ZiB0eXBlZEFycmF5IGlzIHJlYWxseQorICAgICAgICBhIHR5cGVkIGFycmF5LiBZb3UgY2FuJ3Qg
ZG8gaXQgYXMgcGFydCBvZiBjb25zdGFudCBmb2xkaW5nIGJlY2F1c2UgdGhlIGZvbGRlcgorICAg
ICAgICBhc3N1bWVzIHRoYXQgaXQgY2FuIG9wcG9ydHVuaXN0aWNhbGx5IGZvcndhcmQtZmxvdyBh
IGNvbnN0YW50IHZhbHVlIHdpdGhvdXQgY2hhbmdpbmcKKyAgICAgICAgdGhlIElSOyB0aGlzIGRv
ZXNuJ3Qgd29yayBzaW5jZSB3ZSBuZWVkIHRvIGZpcnN0IGNoYW5nZSB0aGUgSVIgdG8gcmVnaXN0
ZXIgYQorICAgICAgICBkZXNpcmVkIHdhdGNocG9pbnQgYW5kIG9ubHkgYWZ0ZXIgdGhhdCBjYW4g
d2UgaW50cm9kdWNlIHRoYXQgY29uc3RhbnQuIFdlIGNvdWxkIGhhdmUKKyAgICAgICAgZG9uZSBp
dCBpbiBGaXh1cCBidXQgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYXdrd2FyZCBzaW5jZSBGaXh1cCdz
IGNvZGUgZm9yIHR1cm5pbmcgYQorICAgICAgICBHZXRCeUlkIG9mICJsZW5ndGgiIGludG8gR2V0
QXJyYXlMZW5ndGggaXMgYWxyZWFkeSBzb21ld2hhdCBjb21wbGV4LiBXZSBjb3VsZCBoYXZlCisg
ICAgICAgIGRvbmUgaXQgaW4gQ1NFIGJ1dCBDU0UgaXMgYWxyZWFkeSBmYWlybHkgZ25hcmx5IGFu
ZCB3aWxsIHByb2JhYmx5IGdldCByZXdyaXR0ZW4uCisgICAgICAgIAorICAgICAgICBTbyBJIGlu
dHJvZHVjZWQgYSBuZXcgcGhhc2UsIGNhbGxlZCBTdHJlbmd0aFJlZHVjdGlvbi4gVGhpcyBwaGFz
ZSBzaG91bGQgaGF2ZSBhbnkKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIHRoYXQgZG9uJ3QgcmVx
dWl0ZSBDRkEgb3IgQ1NFIGFuZCB0aGF0IGl0IHdvdWxkIGJlIHdlaXJkIHRvIHB1dCBpbnRvCisg
ICAgICAgIHRob3NlIG90aGVyIHBoYXNlcy4KKyAgICAgICAgCisgICAgICAgIEkgYWxzbyB0b29r
IHRoZSBvcHBvcnR1bml0eSB0byByZWZhY3RvciBzb21lIG9mIHRoZSBvdGhlciBmb2xkaW5nIGNv
ZGUuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gYWRkcyBhIHRlc3QsIGJ1dCB0aGUgdGVz
dCBjb3VsZG4ndCBxdWl0ZSBiZSBhIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mgc28gSQorICAgICAg
ICBpbnRyb2R1Y2VkIHRoZSBub3Rpb24gb2YgSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzLgor
ICAgICAgICAKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpc24ndCByZWFsbHkgdG8g
aW1wcm92ZSBwZXJmb3JtYW5jZSBvciBhbnl0aGluZyBsaWtlIHRoYXQuCisgICAgICAgIEl0IGFk
ZHMgYW4gb3B0aW1pemF0aW9uIGZvciBjb21wbGV0ZW5lc3MsIGFuZCBpbiBkb2luZyBzbyBpdCB1
bmxvY2tzIGEgYnVuY2ggb2YgbmV3CisgICAgICAgIHBvc3NpYmlsaXRpZXMuIFRoZSBvbmUgdGhh
dCBJJ20gbW9zdCBleGNpdGVkIGFib3V0IGlzIHJldmVhbGluZyBhcnJheSBsZW5ndGggY2hlY2tz
CisgICAgICAgIGluIERGRyBJUiwgd2hpY2ggd2lsbCBhbGxvdyBmb3IgYXJyYXkgYm91bmRzIGNo
ZWNrIGhvaXN0aW5nIGFuZCBlbGltaW5hdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGgu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXcpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGlsZDEpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6dHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnN0
YW50SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZTo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpmb2xkVHlwZWRBcnJheVByb3BlcnR5VG9Db25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBkZmcvREZH
V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6dHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25UcmFuc2ZlckFy
cmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2ZvbGQtdHlw
ZWQtYXJyYXktcHJvcGVydGllcy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDEzLTEy
LTA3ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtX
aW5dWzY0LWJpdF0gSGl0dGluZyBicmVha3BvaW50IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBpbiBj
YWxsVG9KYXZhU2NyaXB0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKICAgICBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKICAgICBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKKyAgICBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAog
ICAgIGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDb252ZXJzaW9uUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFj
a0xheW91dFBoYXNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUFic3RyYWN0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rp
b24oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbk51bWJlck9mREZHQ29tcGlsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7
CiBzdGF0aWMgTk9fUkVUVVJOX1dJVEhfVkFMVUUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblF1aXQoRXhlY1N0YXRlKik7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1Mp
CkBAIC0yMzUsNiArMjM3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
Im5ldmVySW5saW5lRnVuY3Rpb24iLCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24sIDEpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm5vSW5saW5lIiwgZnVuY3Rpb25OZXZlcklubGluZUZ1
bmN0aW9uLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZkRGR0NvbXBpbGVz
IiwgZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzLCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJ0cmFuc2ZlckFycmF5QnVmZmVyIiwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyLCAx
KTsKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
c2V0U2FtcGxpbmdGbGFncyIsIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncywgMSk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25DbGVhclNhbXBs
aW5nRmxhZ3MsIDEpOwpAQCAtNTA1LDYgKzUwOCwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTnVtCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJPZkRG
R0NvbXBpbGVzKGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vdCBlbm91
Z2ggYXJndW1lbnRzIikpKTsKKyAgICAKKyAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYW4gYXJyYXkgYnVmZmVy
IikpKTsKKyAgICAKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CisgICAg
YnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15Q29udGVudHMpOworICAgIAorICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSopCiB7CiAgICAgZXhpdChFWElUX1NV
Q0NFU1MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTIsNiArNDEy
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0YWNrTGF5
b3V0UGhhc2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR1RodW5rcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHVGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIiAvPgpAQCAtOTE4
LDYgKzkxOSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU3BlY3VsYXRp
dmVKSVQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTU0FDb252ZXJz
aW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdGFja0xh
eW91dFBoYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdUaHVua3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3
OSw2ICszNzksOCBAQAogCQkwRkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzA5NzhGMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovOyB9
OwogCQkwRkMwOTdBMTE0NkIyOENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlGMTQ2QjI4QzcwMENG
MjQ0MiAvKiBERkdUaHVua3MuY3BwICovOyB9OwogCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIg
LyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDMjBDQjUxODUyRTJDNjAw
QzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovOyB9OworCQkwRkMyMENCNjE4NTJFMkM2
MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjQxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0
ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIz
MiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNl
dC5jcHAgKi87IH07CiAJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovOyB9OwpAQCAtNTQxLDkgKzU0
Myw5IEBACiAJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1QTMx
RTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkI5MjFGMTZEMDMzMDUwMDU1
QTVEQiAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMjAxNkQwMzNC
NzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29u
c3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDAxODRFQzhBRDAw
OUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRkM5OUQ0MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAv
KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZDOTlEMTE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3Rh
bnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTcxNEVGOTBBMDAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAg
Ki87IH07CiAJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBo
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi87IH07CkBAIC0xNzAx
LDYgKzE3MDMsOCBAQAogCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4
aXRDb21waWxlci5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1Ro
dW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdUaHVua3Mu
Y3BwOyBwYXRoID0gZGZnL0RGR1RodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVGh1bmtzLmg7IHBhdGggPSBkZmcvREZHVGh1bmtzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0IzMTg1MkUyQzYwMEM5RTk1NCAv
KiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkMyMENCNDE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmg7IHBhdGggPSBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQxMDE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJT
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRl
bXBSZWdpc3RlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZW1wUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTg0OCw5ICsxODUyLDkgQEAKIAkJMEZGNzI5QTExNjZBRDM0NzAwMEY1QkEzIC8q
IFByb2ZpbGVyT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9y
aWdpblN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNzI5QTIxNjZB
RDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBwYXRoID0gcHJvZmlsZXIvUHJv
ZmlsZXJPcmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJD
RjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4
ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGRkM5OUQwMTg0
RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29uc3RhbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
RkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5
RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZGQzk5RDAxODRFQzhBRDAw
OUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb25zdGFudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIx
NEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdD
RkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHQ1NFUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk2
Miw2ICszOTY2LDggQEAKIAkJCQlBN0Q4OUNGMTE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29u
dmVyc2lvblBoYXNlLmggKi8sCiAJCQkJMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0
YWNrTGF5b3V0UGhhc2UuY3BwICovLAogCQkJCTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBE
RkdTdGFja0xheW91dFBoYXNlLmggKi8sCisJCQkJMEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovLAorCQkJCTBGQzIwQ0I0MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmggKi8sCiAJCQkJMEY2Mzk0NzYx
NURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkw
RkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLywKIAkJCQkwRkMwOTdB
MDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8sCkBAIC00NTg0LDYgKzQ1OTAsNyBA
QAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMjBDQjYxODUyRTJD
NjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRP
cGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTU0ODAsNiArNTQ4Nyw3IEBACiAJCQkJMEYy
MzVCRUIxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzA5NzkyMTQ2QTZGNzMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzIwQ0I1MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMw
MDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEZ1bmN0aW9uUmVl
bnRyeVdhdGNocG9pbnQ6CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDoKICAgICAgICAg
YnJlYWs7CiAgICAgCiAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTYwMjY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0NCw3ICsxNDQsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6
CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDoKICAgICAgICAgcmVhZChXYXRjaHBvaW50
X2ZpcmUpOworICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIGNhc2UgTm90aWZ5V3JpdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDE3
ICs5NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEJpdE9yOiB7Ci0gICAgICAgICAgICAvLyBPcHRpbWl6ZSBYfDAgLT4gWC4KLSAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDIoKS0+aXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNW
YWx1ZSBDMiA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgp
KTsKLSAgICAgICAgICAgICAgICBpZiAoQzIuaXNJbnQzMigpICYmICFDMi5hc0ludDMyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSwgS25vd25JbnQzMlVzZSkpOwot
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKDEpOwotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CiAgICAgICAgICAg
ICBmaXhJbnRFZGdlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEludEVkZ2Uobm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NTEsNiArOTQwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICAgICAgY2FzZSBM
b29wSGludDoKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50OgorICAgICAg
ICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQog
ICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDAsMTAgKzc0MCw4IEBAIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIEdyYXBoOjp0cnlHZXQKICAgICByZXR1cm4gYWN0aXZhdGlvbi0+cmVnaXN0
ZXJzKCk7CiB9CiAKLUpTQXJyYXlCdWZmZXJWaWV3KiBHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3
KE5vZGUqIG5vZGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCitKU0FycmF5QnVmZmVyVmlldyogR3Jh
cGg6OnRyeUdldEZvbGRhYmxlVmlldyhOb2RlKiBub2RlKQogewotICAgIGlmIChhcnJheU1vZGUu
dHlwZWRBcnJheVR5cGUoKSA9PSBOb3RUeXBlZEFycmF5KQotICAgICAgICByZXR1cm4gMDsKICAg
ICBpZiAoIW5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZh
bHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsKQEAgLTc1NCw2ICs3NTIsMTggQEAgSlNBcnJheUJ1ZmZl
clZpZXcqIEdyYXBoOjp0cnlHZXRGb2xkYWJsZQogICAgIHJldHVybiB2aWV3OwogfQogCitKU0Fy
cmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyhOb2RlKiBub2RlLCBBcnJh
eU1vZGUgYXJyYXlNb2RlKQoreworICAgIGlmIChhcnJheU1vZGUudHlwZWRBcnJheVR5cGUoKSA9
PSBOb3RUeXBlZEFycmF5KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ5R2V0Rm9s
ZGFibGVWaWV3KG5vZGUpOworfQorCitKU0FycmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZv
bGRhYmxlVmlld0ZvckNoaWxkMShOb2RlKiBub2RlKQoreworICAgIHJldHVybiB0cnlHZXRGb2xk
YWJsZVZpZXcoY2hpbGQobm9kZSwgMCkubm9kZSgpLCBub2RlLT5hcnJheU1vZGUoKSk7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw3ICs4MDYsOSBAQCBw
dWJsaWM6CiAgICAgSlNBY3RpdmF0aW9uKiB0cnlHZXRBY3RpdmF0aW9uKE5vZGUqKTsKICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiB0cnlHZXRSZWdpc3RlcnMoTm9kZSopOwogICAgIAor
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSopOwogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSosIEFycmF5TW9kZSk7Cisg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRyeUdldEZvbGRhYmxlVmlld0ZvckNoaWxkMShOb2RlKik7
CiAgICAgCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NzIsNiArOTcyLDE2IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZh
cmlhYmxlV2F0Y2hwb2ludFNldCo+KG1fb3BJbmZvKTsKICAgICB9CisgICAgCisgICAgYm9vbCBo
YXNUeXBlZEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IFR5cGVkQXJyYXlX
YXRjaHBvaW50OworICAgIH0KKyAgICAKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdHlwZWRBcnJh
eSgpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KG1fb3BJbmZvKTsKKyAgICB9CiAKICAgICBib29sIGhhc1N0cnVjdHVyZVRyYW5zaXRp
b25EYXRhKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCShyZXZpc2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQXJyYXlpZnksIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhBcnJheWlmeVRvU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwK
KyAgICBtYWNybyhUeXBlZEFycmF5V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRCeU9mZnNl
dCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVz
dWx0SW50MzIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2
aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1NTQUNvbnZlcnNpb25QaGFzZS5o
IgogI2luY2x1ZGUgIkRGR1N0YWNrTGF5b3V0UGhhc2UuaCIKKyNpbmNsdWRlICJERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCIKICNpbmNsdWRlICJE
RkdVbmlmaWNhdGlvblBoYXNlLmgiCkBAIC0yMDMsNiArMjA0LDcgQEAgUGxhbjo6Q29tcGlsYXRp
b25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKICAgICAgICAgICAgIHZhbGlkYXRlKGRmZyk7CiAgICAgICAgIAorICAgICAgICBjaGFuZ2Vk
IHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ0ZBKGRm
Zyk7CiAgICAgICAgIGNoYW5nZWQgfD0gcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwogICAg
ICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihkZmcpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsNiArNTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb29wSGlu
dDoKICAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50
cnlXYXRjaHBvaW50OgorICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQg
YmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTYwMjY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCw2ICsyNDQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIE5vdGlmeVdyaXRl
OgogICAgIGNhc2UgRnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJy
YXlXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBH
ZXRCeVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzU5MSw3ICszNTkxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDogeworICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgorICAg
IGNhc2UgVHlwZWRBcnJheVdhdGNocG9pbnQ6IHsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzg5NSw3ICszODk1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50OiB7CisgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ6CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDogewogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzI5LDcgKzIzMjksNyBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2
ZUpJVDo6anVtcEZvCiB7CiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxBbGlhcykKICAg
ICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpKdW1wKCk7Ci0gICAgaWYgKEpTQXJyYXlCdWZmZXJW
aWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcobV9qaXQuZ3JhcGgo
KS5jaGlsZChub2RlLCAwKS5ub2RlKCksIG5vZGUtPmFycmF5TW9kZSgpKSkgeworICAgIGlmIChK
U0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3
Rm9yQ2hpbGQxKG5vZGUpKSB7CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXctPmxlbmd0
aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUs
IDEpLm5vZGUoKTsKICAgICAgICAgaWYgKG1faml0LmdyYXBoKCkuaXNJbnQzMkNvbnN0YW50KGlu
ZGV4Tm9kZSkgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faml0LmdyYXBoKCkudmFsdWVPZklu
dDMyQ29uc3RhbnQoaW5kZXhOb2RlKSkgPCBsZW5ndGgpCkBAIC00MDQ0LDggKzQwNDQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nWmVyb0xlCiAKIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDb25zdGFudEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkK
IHsKLSAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9s
ZGFibGVWaWV3KAotICAgICAgICBub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmFycmF5TW9k
ZSgpKTsKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0
Rm9sZGFibGVWaWV3Rm9yQ2hpbGQxKG5vZGUpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICh2aWV3LT5tb2RlKCkgPT0gRmFzdFR5cGVkQXJyYXkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisj
aW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZHUGhhc2UuaCIKKyNpbmNs
dWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgorI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlQWNjZXNzRGF0YUR1bXAuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZShHcmFw
aCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJzdHJlbmd0aCByZWR1Y3Rpb24iKQor
ICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KGdyYXBoKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBydW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9maXhwb2ludFN0YXRl
ID09IEZpeHBvaW50Tm90Q29udmVyZ2VkKTsKKyAgICAgICAgCisgICAgICAgIG1fY2hhbmdlZCA9
IGZhbHNlOworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBt
X2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBtX2Jsb2Nr
ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghbV9ibG9jaykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZvciAobV9ub2RlSW5kZXgg
PSAwOyBtX25vZGVJbmRleCA8IG1fYmxvY2stPnNpemUoKTsgKyttX25vZGVJbmRleCkgeworICAg
ICAgICAgICAgICAgIG1fbm9kZSA9IG1fYmxvY2stPmF0KG1fbm9kZUluZGV4KTsKKyAgICAgICAg
ICAgICAgICBoYW5kbGVOb2RlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5leGVjdXRlKG1fYmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gbV9jaGFuZ2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZU5vZGUo
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBC
aXRPcjoKKyAgICAgICAgICAgIC8vIE9wdGltaXplIFh8MCAtPiBYLgorICAgICAgICAgICAgaWYg
KG1fbm9kZS0+Y2hpbGQyKCktPmlzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgICAgIEpTVmFs
dWUgQzIgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoQzIuaXNJbnQzMigpICYmICFDMi5hc0ludDMyKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5j
b2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZSgxKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgaWYgKEpT
QXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGls
ZDEobV9ub2RlKSkKKyAgICAgICAgICAgICAgICBmb2xkVHlwZWRBcnJheVByb3BlcnR5VG9Db25z
dGFudCh2aWV3LCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAg
ICAgICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9s
ZGFibGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKKyAgICAgICAgICAgICAgICBmb2xk
VHlwZWRBcnJheVByb3BlcnR5VG9Db25zdGFudCh2aWV3LCBqc051bWJlcih2aWV3LT5ieXRlT2Zm
c2V0KCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIC8vIEZJ
WE1FOiBUaGUgY29uc3RhbnQtZm9sZGluZyBvZiBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlIHNo
b3VsZCBiZSBleHByZXNzZWQKKyAgICAgICAgLy8gYXMgYW4gSVIgdHJhbnNmb3JtYXRpb24gaW4g
dGhpcyBwaGFzZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNTM5NQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGZvbGRUeXBlZEFycmF5
UHJvcGVydHlUb0NvbnN0YW50KEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3LCBKU1ZhbHVlIGNvbnN0
YW50KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgVHlwZWRBcnJheVdhdGNocG9pbnQsIG1fbm9kZS0+
Y29kZU9yaWdpbiwKKyAgICAgICAgICAgIE9wSW5mbyh2aWV3KSk7CisgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBjb25zdGFudCk7CisgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgfQorICAgIAorICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAg
ICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOworICAgIHVuc2lnbmVkIG1fbm9kZUluZGV4OworICAgIE5v
ZGUqIG1fbm9kZTsKKyAgICBib29sIG1fY2hhbmdlZDsKK307CisgICAgCitib29sIHBlcmZvcm1T
dHJlbmd0aFJlZHVjdGlvbihHcmFwaCYgZ3JhcGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIkRGRyBTdHJlbmd0aCBSZWR1Y3Rpb24gUGhhc2UiKTsKKyAgICByZXR1cm4g
cnVuUGhhc2U8U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZV9oCisjZGVmaW5lIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Vf
aAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKKworY2xhc3MgR3JhcGg7CisKKy8vIFBlcmZvcm1zIHNpbXBsaWZpY2F0aW9ucyB0aGF0IGRv
bid0IGRlcGVuZCBvbiBDRkEgb3IgQ1NFIGJ1dCB0aGF0IHNob3VsZCBiZQorLy8gZml4cG9pbnRl
ZCB3aXRoIENGQSBhbmQgQ1NFLgorCitib29sIHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihHcmFw
aCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKKworI2VuZGlmIC8vIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2VfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDE3ICs5NSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJy
YXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpTdHJpbmcpCiAgICAgICAgICAgICAgICAgaGFuZGxl
U3RyaW5nR2V0QnlWYWwoKTsKIAotICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG1fbm9kZS0+YXJyYXlNb2RlKCkpKQorICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGlsZDEobV9ub2RlKSkKICAg
ICAgICAgICAgICAgICBhZGRMYXppbHkodmlldyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAgICAgICAgICAgaWYgKEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDApLm5vZGUoKSwgbV9ub2RlLT5hcnJheU1vZGUoKSkpCi0gICAgICAg
ICAgICAgICAgYWRkTGF6aWx5KHZpZXcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKLSAgICAgICAgICAgIGlmIChKU0FycmF5
QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KG1fbm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBtX25vZGUtPmFycmF5TW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChKU0Fy
cmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3Rm9yQ2hpbGQx
KG1fbm9kZSkpCiAgICAgICAgICAgICAgICAgYWRkTGF6aWx5KHZpZXcpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE0NCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlOgotICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksIG1fbm9kZS0+
YXJyYXlNb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcg
PSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlld0ZvckNoaWxkMShtX25vZGUpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGF3ZXNvbWUgdG8gYmUgYWJsZSB0byBmb2xk
IHRoZSBwcm9wZXJ0eSBzdG9yYWdlIGZvcgogICAgICAgICAgICAgICAgIC8vIHRoZXNlIEdDLWFs
bG9jYXRlZCB0eXBlZCBhcnJheXMuIEZvciBub3cgaXQgZG9lc24ndCBtYXR0ZXIgYmVjYXVzZSB0
aGUKICAgICAgICAgICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UtY2FzZXMgZm9yIGNvbnN0YW50
IHR5cGVkIGFycmF5cyBpbnZvbHZlIGxhcmdlIGFycmF5cyB3aXRoCkBAIC0xNTUsNiArMTUwLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgorICAgICAgICAgICAgYWRk
TGF6aWx5KG1fbm9kZS0+dHlwZWRBcnJheSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
ICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgRnVuY3Rpb25SZWVu
dHJ5V2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgIGNhc2Ug
VmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBWYWx1
ZVRvSW50MzI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMSArMjY2
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY29tcGls
ZVBoYW50b20oKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoOgotICAg
ICAgICBjYXNlIFBoYW50b21Mb2NhbDoKLSAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKLSAgICAg
ICAgY2FzZSBMb29wSGludDoKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRo
QWRkOgogICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICAgICAgY29tcGlsZUFkZFN1Yigp
OwpAQCAtMzk4LDEwICszOTMsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRl
OgogICAgICAgICAgICAgY29tcGlsZU5vdGlmeVdyaXRlKCk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50OgotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgR2V0TXlTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVHZXRNeVNjb3Bl
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3Miw2ICs0NjMsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgICAgICAgICBjb21waWxlSW50NTJUb1ZhbHVl
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGbHVzaDoKKyAgICAgICAgY2Fz
ZSBQaGFudG9tTG9jYWw6CisgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2Ug
TG9vcEhpbnQ6CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgorICAgICAgICBjYXNl
IEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVdhdGNo
cG9pbnQ6CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0
MjQsNyArMTQyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgu
dHJ5R2V0Rm9sZGFibGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBtX25vZGUtPmFycmF5
TW9kZSgpKSkgeworICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBo
LnRyeUdldEZvbGRhYmxlVmlldyhtX25vZGUpKSB7CiAgICAgICAgICAgICBpZiAodmlldy0+bW9k
ZSgpICE9IEZhc3RUeXBlZEFycmF5KSB7CiAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZShtX291
dC5jb25zdEludFB0cih2aWV3LT52ZWN0b3IoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTE3OTcsNyArMTc5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBP
dXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
YWJvdmVPckVxdWFsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVkQXJyYXlMZW5ndGgoY2hpbGQxLm5vZGUoKSwgbV9u
b2RlLT5hcnJheU1vZGUoKSwgYmFzZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlZEFycmF5TGVuZ3RoKGNoaWxkMSwgbV9ub2RlLT5hcnJheU1vZGUoKSwgYmFzZSkpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVHlwZWRQ
b2ludGVyIHBvaW50ZXIgPSBUeXBlZFBvaW50ZXIoCkBAIC0yOTQzLDE2ICsyOTQyLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5
LCBzbG93QnV0dGVyZmx5KSk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSB0eXBlZEFycmF5TGVu
Z3RoKE5vZGUqIGJhc2VOb2RlLCBBcnJheU1vZGUgYXJyYXlNb2RlLCBMVmFsdWUgYmFzZSkKKyAg
ICBMVmFsdWUgdHlwZWRBcnJheUxlbmd0aChFZGdlIGJhc2VFZGdlLCBBcnJheU1vZGUgYXJyYXlN
b2RlLCBMVmFsdWUgYmFzZSkKICAgICB7Ci0gICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyog
dmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGJhc2VOb2RlLCBhcnJheU1vZGUpKQor
ICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRh
YmxlVmlldyhiYXNlRWRnZS5ub2RlKCksIGFycmF5TW9kZSkpCiAgICAgICAgICAgICByZXR1cm4g
bV9vdXQuY29uc3RJbnQzMih2aWV3LT5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBtX291dC5s
b2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgIH0KICAg
ICAKICAgICBMVmFsdWUgdHlwZWRBcnJheUxlbmd0aChFZGdlIGJhc2VFZGdlLCBBcnJheU1vZGUg
YXJyYXlNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlMZW5ndGgoYmFzZUVk
Z2Uubm9kZSgpLCBhcnJheU1vZGUsIGxvd0NlbGwoYmFzZUVkZ2UpKTsKKyAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlMZW5ndGgoYmFzZUVkZ2UsIGFycmF5TW9kZSwgbG93Q2VsbChiYXNlRWRnZSkp
OwogICAgIH0KICAgICAKICAgICBMVmFsdWUgYm9vbGlmeShFZGdlIGVkZ2UpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAkocmV2aXNp
b24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogCiAgICAgLy8g
SGVscGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVy
IGlzCiAgICAgLy8gd2l0aGluIHJhbmdlLgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkaXN0
aW5ndWlzaCBiZXR3ZWVuIGFsaWdubWVudCBlcnJvcnMgYW5kIGJvdW5kcyBlcnJvcnMuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM5MQogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlKAogICAg
ICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtdHlwZWQtYXJyYXktcHJvcGVydGllcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtdHlwZWQt
YXJyYXktcHJvcGVydGllcy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZm9sZC10eXBlZC1hcnJheS1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciBhID0gbmV3IEludDMyQXJyYXkobmV3IEFycmF5QnVm
ZmVyKDEwMCksIDQsIDEpOworCitpZiAoYS5sZW5ndGggIT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6
IGJhZCBsZW5ndGg6ICIgKyBhLmxlbmd0aDsKK2lmIChhLmJ5dGVPZmZzZXQgIT0gNCkKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCBvZmZzZXQ6ICIgKyBhLmJ5dGVPZmZzZXQ7CitpZiAoYS5ieXRlTGVu
Z3RoICE9IDQpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgYnl0ZSBsZW5ndGg6ICIgKyBhLmJ5dGVM
ZW5ndGg7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBpZiAoYS5sZW5ndGggIT0gMSkKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgbGVuZ3RoOiAiICsgYS5sZW5ndGg7CisgICAgaWYgKGEuYnl0
ZU9mZnNldCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBvZmZzZXQ6ICIgKyBhLmJ5
dGVPZmZzZXQ7CisgICAgaWYgKGEuYnl0ZUxlbmd0aCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCBieXRlIGxlbmd0aDogIiArIGEuYnl0ZUxlbmd0aDsKK30KKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgZm9vKCk7CisKK3RyYW5zZmVyQXJyYXlCdWZmZXIo
YS5idWZmZXIpOworCit2YXIgZGlkVGhyb3cgPSBmYWxzZTsKK3RyeSB7CisgICAgZm9vKCk7Cit9
IGNhdGNoIChlKSB7CisgICAgZGlkVGhyb3cgPSB0cnVlOworfQorCitpZiAoIWRpZFRocm93KQor
ICAgIHRocm93ICJTaG91bGQgaGF2ZSB0aHJvd24uIjsKKworaWYgKGEubGVuZ3RoICE9IDApCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgbGVuZ3RoOiAiICsgYS5sZW5ndGg7CitpZiAoYS5ieXRlT2Zm
c2V0ICE9IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgb2Zmc2V0OiAiICsgYS5ieXRlT2Zmc2V0
OworaWYgKGEuYnl0ZUxlbmd0aCAhPSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIGJ5dGUgbGVu
Z3RoOiAiICsgYS5ieXRlTGVuZ3RoOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjc0KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTItMDcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBGb2xkIHR5cGVkQXJyYXkubGVuZ3RoIGlm
IHR5cGVkQXJyYXkgaXMgY29uc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNTI1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MgdG8gdGhlIHNldCBvZiBKUyB0ZXN0cy4gVGhpcyBpcyB3aGVyZSB5b3UKKyAgICAgICAg
c2hvdWxkIHB1dCB0ZXN0cyB0aGF0IHJ1biBqdXN0IGxpa2UgSlNSZWdyZXNzIGJ1dCBkb24ndCBy
dW4gYXMgcGFydCBvZiBMYXlvdXRUZXN0cy4KKyAgICAgICAgQ3VycmVudGx5IEknbSB1c2luZyBp
dCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIHNvbWUgc3VyZ2ljYWwgc3VwcG9ydCBmcm9tIGpzYy5j
cHAuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czoKKwogMjAx
My0xMi0wNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAg
ICBbR1RLXSBSdW4gZWFjaCBndGVzdCBzdWJ0ZXN0IHNlcGFyYXRlbHkgaW5zdGVhZCBvZiBpbiBv
bmUgZ28KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCShyZXZpc2lv
biAxNjAyNjgpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwkod29y
a2luZyBjb3B5KQpAQCAtMjM5LDYgKzIzOSw3IEBAIGlmICgkcnVuSlNDU3RyZXNzKSB7CiAgICAg
ICAgICJQZXJmb3JtYW5jZVRlc3RzL1N1blNwaWRlci90ZXN0cy9zdW5zcGlkZXItMS4wIiwKICAg
ICAgICAgIlBlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2IiwKICAgICAgICAg
IlNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbCIs
CisgICAgICAgICJTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzIiwKICAgICAgICAg
IkxheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzIiwKICAgICAgICAgIlBlcmZvcm1h
bmNlVGVzdHMvU3VuU3BpZGVyL3Byb2ZpbGVyLXRlc3QueWFtbCIsCiAgICAgICAgICJMYXlvdXRU
ZXN0cy9qc2MtbGF5b3V0LXRlc3RzLnlhbWwiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218663</attachid>
            <date>2013-12-07 13:09:51 -0800</date>
            <delta_ts>2013-12-07 17:28:19 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>43627</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDEzLTEyLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rm9sZCB0eXBlZEFycmF5Lmxlbmd0aCBpZiB0eXBlZEFycmF5IGlzIGNvbnN0YW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUyNTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgd2Fz
IG1lYW50IHRvIGJlIGVhc3kuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUgd2FzIG5vIGdvb2Qg
cGxhY2UgZm9yIHB1dHRpbmcKKyAgICAgICAgdGhlIGZvbGRpbmcgb2YgdHlwZWRBcnJheS5sZW5n
dGggdG8gYSBjb25zdGFudC4gWW91IGNhbid0IHF1aXRlIGRvIGl0IGluIHRoZQorICAgICAgICBi
eXRlY29kZSBwYXJzZXIgYmVjYXVzZSBhdCB0aGF0IHBvaW50IHlvdSBkb24ndCB5ZXQga25vdyBp
ZiB0eXBlZEFycmF5IGlzIHJlYWxseQorICAgICAgICBhIHR5cGVkIGFycmF5LiBZb3UgY2FuJ3Qg
ZG8gaXQgYXMgcGFydCBvZiBjb25zdGFudCBmb2xkaW5nIGJlY2F1c2UgdGhlIGZvbGRlcgorICAg
ICAgICBhc3N1bWVzIHRoYXQgaXQgY2FuIG9wcG9ydHVuaXN0aWNhbGx5IGZvcndhcmQtZmxvdyBh
IGNvbnN0YW50IHZhbHVlIHdpdGhvdXQgY2hhbmdpbmcKKyAgICAgICAgdGhlIElSOyB0aGlzIGRv
ZXNuJ3Qgd29yayBzaW5jZSB3ZSBuZWVkIHRvIGZpcnN0IGNoYW5nZSB0aGUgSVIgdG8gcmVnaXN0
ZXIgYQorICAgICAgICBkZXNpcmVkIHdhdGNocG9pbnQgYW5kIG9ubHkgYWZ0ZXIgdGhhdCBjYW4g
d2UgaW50cm9kdWNlIHRoYXQgY29uc3RhbnQuIFdlIGNvdWxkIGhhdmUKKyAgICAgICAgZG9uZSBp
dCBpbiBGaXh1cCBidXQgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYXdrd2FyZCBzaW5jZSBGaXh1cCdz
IGNvZGUgZm9yIHR1cm5pbmcgYQorICAgICAgICBHZXRCeUlkIG9mICJsZW5ndGgiIGludG8gR2V0
QXJyYXlMZW5ndGggaXMgYWxyZWFkeSBzb21ld2hhdCBjb21wbGV4LiBXZSBjb3VsZCBoYXZlCisg
ICAgICAgIGRvbmUgaXQgaW4gQ1NFIGJ1dCBDU0UgaXMgYWxyZWFkeSBmYWlybHkgZ25hcmx5IGFu
ZCB3aWxsIHByb2JhYmx5IGdldCByZXdyaXR0ZW4uCisgICAgICAgIAorICAgICAgICBTbyBJIGlu
dHJvZHVjZWQgYSBuZXcgcGhhc2UsIGNhbGxlZCBTdHJlbmd0aFJlZHVjdGlvbi4gVGhpcyBwaGFz
ZSBzaG91bGQgaGF2ZSBhbnkKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIHRoYXQgZG9uJ3QgcmVx
dWl0ZSBDRkEgb3IgQ1NFIGFuZCB0aGF0IGl0IHdvdWxkIGJlIHdlaXJkIHRvIHB1dCBpbnRvCisg
ICAgICAgIHRob3NlIG90aGVyIHBoYXNlcy4KKyAgICAgICAgCisgICAgICAgIEkgYWxzbyB0b29r
IHRoZSBvcHBvcnR1bml0eSB0byByZWZhY3RvciBzb21lIG9mIHRoZSBvdGhlciBmb2xkaW5nIGNv
ZGUuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gYWRkcyBhIHRlc3QsIGJ1dCB0aGUgdGVz
dCBjb3VsZG4ndCBxdWl0ZSBiZSBhIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mgc28gSQorICAgICAg
ICBpbnRyb2R1Y2VkIHRoZSBub3Rpb24gb2YgSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzLgor
ICAgICAgICAKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpc24ndCByZWFsbHkgdG8g
aW1wcm92ZSBwZXJmb3JtYW5jZSBvciBhbnl0aGluZyBsaWtlIHRoYXQuCisgICAgICAgIEl0IGFk
ZHMgYW4gb3B0aW1pemF0aW9uIGZvciBjb21wbGV0ZW5lc3MsIGFuZCBpbiBkb2luZyBzbyBpdCB1
bmxvY2tzIGEgYnVuY2ggb2YgbmV3CisgICAgICAgIHBvc3NpYmlsaXRpZXMuIFRoZSBvbmUgdGhh
dCBJJ20gbW9zdCBleGNpdGVkIGFib3V0IGlzIHJldmVhbGluZyBhcnJheSBsZW5ndGggY2hlY2tz
CisgICAgICAgIGluIERGRyBJUiwgd2hpY2ggd2lsbCBhbGxvdyBmb3IgYXJyYXkgYm91bmRzIGNo
ZWNrIGhvaXN0aW5nIGFuZCBlbGltaW5hdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGgu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXcpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGlsZDEpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzVHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6dHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheU91dE9m
Qm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnN0
YW50SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZTo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpmb2xkVHlwZWRBcnJheVByb3BlcnR5VG9Db25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBkZmcvREZH
V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6dHlwZWRBcnJheUxlbmd0aCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25UcmFuc2ZlckFy
cmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2ZvbGQtdHlw
ZWQtYXJyYXktcHJvcGVydGllcy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDEzLTEy
LTA3ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtX
aW5dWzY0LWJpdF0gSGl0dGluZyBicmVha3BvaW50IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBpbiBj
YWxsVG9KYXZhU2NyaXB0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKICAgICBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKICAgICBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKKyAgICBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAog
ICAgIGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDb252ZXJzaW9uUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFj
a0xheW91dFBoYXNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUFic3RyYWN0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgpAQCAtMTE0LDYgKzExNSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rp
b24oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbk51bWJlck9mREZHQ29tcGlsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7
CiBzdGF0aWMgTk9fUkVUVVJOX1dJVEhfVkFMVUUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblF1aXQoRXhlY1N0YXRlKik7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1Mp
CkBAIC0yMzUsNiArMjM3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
Im5ldmVySW5saW5lRnVuY3Rpb24iLCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24sIDEpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm5vSW5saW5lIiwgZnVuY3Rpb25OZXZlcklubGluZUZ1
bmN0aW9uLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZkRGR0NvbXBpbGVz
IiwgZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzLCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJ0cmFuc2ZlckFycmF5QnVmZmVyIiwgZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyLCAx
KTsKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
c2V0U2FtcGxpbmdGbGFncyIsIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncywgMSk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25DbGVhclNhbXBs
aW5nRmxhZ3MsIDEpOwpAQCAtNTA1LDYgKzUwOCwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTnVtCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJPZkRG
R0NvbXBpbGVzKGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vdCBlbm91
Z2ggYXJndW1lbnRzIikpKTsKKyAgICAKKyAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYW4gYXJyYXkgYnVmZmVy
IikpKTsKKyAgICAKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CisgICAg
YnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15Q29udGVudHMpOworICAgIAorICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSopCiB7CiAgICAgZXhpdChFWElUX1NV
Q0NFU1MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTIsNiArNDEy
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0YWNrTGF5
b3V0UGhhc2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR1RodW5rcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHVGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIiAvPgpAQCAtOTE4
LDYgKzkxOSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU3BlY3VsYXRp
dmVKSVQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTU0FDb252ZXJz
aW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdGFja0xh
eW91dFBoYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdUaHVua3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3
OSw2ICszNzksOCBAQAogCQkwRkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzA5NzhGMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovOyB9
OwogCQkwRkMwOTdBMTE0NkIyOENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlGMTQ2QjI4QzcwMENG
MjQ0MiAvKiBERkdUaHVua3MuY3BwICovOyB9OwogCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIg
LyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDMjBDQjUxODUyRTJDNjAw
QzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovOyB9OworCQkwRkMyMENCNjE4NTJFMkM2
MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjQxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0
ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIz
MiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNl
dC5jcHAgKi87IH07CiAJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovOyB9OwpAQCAtNTQxLDkgKzU0
Myw5IEBACiAJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1QTMx
RTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkI5MjFGMTZEMDMzMDUwMDU1
QTVEQiAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMjAxNkQwMzNC
NzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29u
c3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDAxODRFQzhBRDAw
OUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRkM5OUQ0MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGQzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAv
KiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkZDOTlEMTE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3Rh
bnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkZDOTlEMDE4NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTcxNEVGOTBBMDAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAg
Ki87IH07CiAJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBo
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi87IH07CkBAIC0xNzAx
LDYgKzE3MDMsOCBAQAogCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4
aXRDb21waWxlci5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1Ro
dW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdUaHVua3Mu
Y3BwOyBwYXRoID0gZGZnL0RGR1RodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVGh1bmtzLmg7IHBhdGggPSBkZmcvREZHVGh1bmtzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0IzMTg1MkUyQzYwMEM5RTk1NCAv
KiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkMyMENCNDE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmg7IHBhdGggPSBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQxMDE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJT
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRl
bXBSZWdpc3RlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZW1wUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTg0OCw5ICsxODUyLDkgQEAKIAkJMEZGNzI5QTExNjZBRDM0NzAwMEY1QkEzIC8q
IFByb2ZpbGVyT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9y
aWdpblN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNzI5QTIxNjZB
RDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBwYXRoID0gcHJvZmlsZXIvUHJv
ZmlsZXJPcmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJD
RjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4
ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGRkM5OUQwMTg0
RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29uc3RhbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
RkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5
RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZGQzk5RDAxODRFQzhBRDAw
OUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb25zdGFudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIx
NEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdD
RkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHQ1NFUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk2
Miw2ICszOTY2LDggQEAKIAkJCQlBN0Q4OUNGMTE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29u
dmVyc2lvblBoYXNlLmggKi8sCiAJCQkJMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0
YWNrTGF5b3V0UGhhc2UuY3BwICovLAogCQkJCTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBE
RkdTdGFja0xheW91dFBoYXNlLmggKi8sCisJCQkJMEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovLAorCQkJCTBGQzIwQ0I0MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmggKi8sCiAJCQkJMEY2Mzk0NzYx
NURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkw
RkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLywKIAkJCQkwRkMwOTdB
MDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8sCkBAIC00NTg0LDYgKzQ1OTAsNyBA
QAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMjBDQjYxODUyRTJD
NjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRP
cGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTU0ODAsNiArNTQ4Nyw3IEBACiAJCQkJMEYy
MzVCRUIxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzA5NzkyMTQ2QTZGNzMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzIwQ0I1MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMw
MDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTQ4LDYgKzExNDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEZ1bmN0aW9uUmVl
bnRyeVdhdGNocG9pbnQ6CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDoKICAgICAgICAg
YnJlYWs7CiAgICAgCiAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTYwMjY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0NCw3ICsxNDQsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6
CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDoKICAgICAgICAgcmVhZChXYXRjaHBvaW50
X2ZpcmUpOworICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIGNhc2UgTm90aWZ5V3JpdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDE3
ICs5NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEJpdE9yOiB7Ci0gICAgICAgICAgICAvLyBPcHRpbWl6ZSBYfDAgLT4gWC4KLSAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDIoKS0+aXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNW
YWx1ZSBDMiA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgp
KTsKLSAgICAgICAgICAgICAgICBpZiAoQzIuaXNJbnQzMigpICYmICFDMi5hc0ludDMyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSwgS25vd25JbnQzMlVzZSkpOwot
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKDEpOwotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CiAgICAgICAgICAg
ICBmaXhJbnRFZGdlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEludEVkZ2Uobm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NTEsNiArOTQwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICAgICAgY2FzZSBM
b29wSGludDoKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50OgorICAgICAg
ICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQog
ICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDAsMTAgKzc0MCw4IEBAIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIEdyYXBoOjp0cnlHZXQKICAgICByZXR1cm4gYWN0aXZhdGlvbi0+cmVnaXN0
ZXJzKCk7CiB9CiAKLUpTQXJyYXlCdWZmZXJWaWV3KiBHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3
KE5vZGUqIG5vZGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCitKU0FycmF5QnVmZmVyVmlldyogR3Jh
cGg6OnRyeUdldEZvbGRhYmxlVmlldyhOb2RlKiBub2RlKQogewotICAgIGlmIChhcnJheU1vZGUu
dHlwZWRBcnJheVR5cGUoKSA9PSBOb3RUeXBlZEFycmF5KQotICAgICAgICByZXR1cm4gMDsKICAg
ICBpZiAoIW5vZGUtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEpTQXJy
YXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZh
bHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsKQEAgLTc1NCw2ICs3NTIsMTggQEAgSlNBcnJheUJ1ZmZl
clZpZXcqIEdyYXBoOjp0cnlHZXRGb2xkYWJsZQogICAgIHJldHVybiB2aWV3OwogfQogCitKU0Fy
cmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyhOb2RlKiBub2RlLCBBcnJh
eU1vZGUgYXJyYXlNb2RlKQoreworICAgIGlmIChhcnJheU1vZGUudHlwZWRBcnJheVR5cGUoKSA9
PSBOb3RUeXBlZEFycmF5KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ5R2V0Rm9s
ZGFibGVWaWV3KG5vZGUpOworfQorCitKU0FycmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZv
bGRhYmxlVmlld0ZvckNoaWxkMShOb2RlKiBub2RlKQoreworICAgIHJldHVybiB0cnlHZXRGb2xk
YWJsZVZpZXcoY2hpbGQobm9kZSwgMCkubm9kZSgpLCBub2RlLT5hcnJheU1vZGUoKSk7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw3ICs4MDYsOSBAQCBw
dWJsaWM6CiAgICAgSlNBY3RpdmF0aW9uKiB0cnlHZXRBY3RpdmF0aW9uKE5vZGUqKTsKICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiB0cnlHZXRSZWdpc3RlcnMoTm9kZSopOwogICAgIAor
ICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSopOwogICAgIEpT
QXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSosIEFycmF5TW9kZSk7Cisg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRyeUdldEZvbGRhYmxlVmlld0ZvckNoaWxkMShOb2RlKik7
CiAgICAgCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NzIsNiArOTcyLDE2IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZh
cmlhYmxlV2F0Y2hwb2ludFNldCo+KG1fb3BJbmZvKTsKICAgICB9CisgICAgCisgICAgYm9vbCBo
YXNUeXBlZEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IFR5cGVkQXJyYXlX
YXRjaHBvaW50OworICAgIH0KKyAgICAKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdHlwZWRBcnJh
eSgpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KG1fb3BJbmZvKTsKKyAgICB9CiAKICAgICBib29sIGhhc1N0cnVjdHVyZVRyYW5zaXRp
b25EYXRhKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCShyZXZpc2lvbiAxNjAyNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQXJyYXlpZnksIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhBcnJheWlmeVRvU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwK
KyAgICBtYWNybyhUeXBlZEFycmF5V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRCeU9mZnNl
dCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVz
dWx0SW50MzIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2
aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1NTQUNvbnZlcnNpb25QaGFzZS5o
IgogI2luY2x1ZGUgIkRGR1N0YWNrTGF5b3V0UGhhc2UuaCIKKyNpbmNsdWRlICJERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCIKICNpbmNsdWRlICJE
RkdVbmlmaWNhdGlvblBoYXNlLmgiCkBAIC0yMDMsNiArMjA0LDcgQEAgUGxhbjo6Q29tcGlsYXRp
b25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKICAgICAgICAgICAgIHZhbGlkYXRlKGRmZyk7CiAgICAgICAgIAorICAgICAgICBjaGFuZ2Vk
IHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ0ZBKGRm
Zyk7CiAgICAgICAgIGNoYW5nZWQgfD0gcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwogICAg
ICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihkZmcpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsNiArNTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb29wSGlu
dDoKICAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgY2FzZSBGdW5jdGlvblJlZW50
cnlXYXRjaHBvaW50OgorICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQg
YmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTYwMjY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCw2ICsyNDQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICBjYXNlIE5vdGlmeVdyaXRl
OgogICAgIGNhc2UgRnVuY3Rpb25SZWVudHJ5V2F0Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJy
YXlXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBH
ZXRCeVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzU5MSw3ICszNTkxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDogeworICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgorICAg
IGNhc2UgVHlwZWRBcnJheVdhdGNocG9pbnQ6IHsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzg5NSw3ICszODk1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50OiB7CisgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ6CisgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDogewogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzI5LDcgKzIzMjksNyBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2
ZUpJVDo6anVtcEZvCiB7CiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxBbGlhcykKICAg
ICAgICAgcmV0dXJuIEpJVENvbXBpbGVyOjpKdW1wKCk7Ci0gICAgaWYgKEpTQXJyYXlCdWZmZXJW
aWV3KiB2aWV3ID0gbV9qaXQuZ3JhcGgoKS50cnlHZXRGb2xkYWJsZVZpZXcobV9qaXQuZ3JhcGgo
KS5jaGlsZChub2RlLCAwKS5ub2RlKCksIG5vZGUtPmFycmF5TW9kZSgpKSkgeworICAgIGlmIChK
U0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9sZGFibGVWaWV3
Rm9yQ2hpbGQxKG5vZGUpKSB7CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IHZpZXctPmxlbmd0
aCgpOwogICAgICAgICBOb2RlKiBpbmRleE5vZGUgPSBtX2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUs
IDEpLm5vZGUoKTsKICAgICAgICAgaWYgKG1faml0LmdyYXBoKCkuaXNJbnQzMkNvbnN0YW50KGlu
ZGV4Tm9kZSkgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faml0LmdyYXBoKCkudmFsdWVPZklu
dDMyQ29uc3RhbnQoaW5kZXhOb2RlKSkgPCBsZW5ndGgpCkBAIC00MDQ0LDggKzQwNDQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nWmVyb0xlCiAKIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDb25zdGFudEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkK
IHsKLSAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0Rm9s
ZGFibGVWaWV3KAotICAgICAgICBub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmFycmF5TW9k
ZSgpKTsKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCkudHJ5R2V0
Rm9sZGFibGVWaWV3Rm9yQ2hpbGQxKG5vZGUpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICh2aWV3LT5tb2RlKCkgPT0gRmFzdFR5cGVkQXJyYXkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgi
CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVk
ZSAiREZHSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZHUGhhc2UuaCIKKyNpbmNsdWRlICJE
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgorI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CitwdWJsaWM6CisgICAgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZShHcmFwaCYgZ3Jh
cGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJzdHJlbmd0aCByZWR1Y3Rpb24iKQorICAgICAg
ICAsIG1faW5zZXJ0aW9uU2V0KGdyYXBoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBy
dW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9maXhwb2ludFN0YXRlID09IEZp
eHBvaW50Tm90Q29udmVyZ2VkKTsKKyAgICAgICAgCisgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNl
OworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBo
Lm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBtX2Jsb2NrID0gbV9n
cmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghbV9ibG9jaykKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZvciAobV9ub2RlSW5kZXggPSAwOyBt
X25vZGVJbmRleCA8IG1fYmxvY2stPnNpemUoKTsgKyttX25vZGVJbmRleCkgeworICAgICAgICAg
ICAgICAgIG1fbm9kZSA9IG1fYmxvY2stPmF0KG1fbm9kZUluZGV4KTsKKyAgICAgICAgICAgICAg
ICBoYW5kbGVOb2RlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5leGVjdXRlKG1fYmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4g
bV9jaGFuZ2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZU5vZGUoKQorICAg
IHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBCaXRPcjoK
KyAgICAgICAgICAgIC8vIE9wdGltaXplIFh8MCAtPiBYLgorICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+Y2hpbGQyKCktPmlzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgQzIg
PSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoQzIuaXNJbnQzMigpICYmICFDMi5hc0ludDMyKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5jb2RlT3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZSgxKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgICAgICAg
ICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgaWYgKEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGlsZDEobV9u
b2RlKSkKKyAgICAgICAgICAgICAgICBmb2xkVHlwZWRBcnJheVByb3BlcnR5VG9Db25zdGFudCh2
aWV3LCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICAgICAg
ICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVW
aWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKKyAgICAgICAgICAgICAgICBmb2xkVHlwZWRB
cnJheVByb3BlcnR5VG9Db25zdGFudCh2aWV3LCBqc051bWJlcih2aWV3LT5ieXRlT2Zmc2V0KCkp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIC8vIEZJWE1FOiBU
aGUgY29uc3RhbnQtZm9sZGluZyBvZiBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlIHNob3VsZCBi
ZSBleHByZXNzZWQKKyAgICAgICAgLy8gYXMgYW4gSVIgdHJhbnNmb3JtYXRpb24gaW4gdGhpcyBw
aGFzZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNTM5NQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGZvbGRUeXBlZEFycmF5UHJvcGVy
dHlUb0NvbnN0YW50KEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3LCBKU1ZhbHVlIGNvbnN0YW50KQor
ICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBTcGVjTm9uZSwgVHlwZWRBcnJheVdhdGNocG9pbnQsIG1fbm9kZS0+Y29kZU9y
aWdpbiwKKyAgICAgICAgICAgIE9wSW5mbyh2aWV3KSk7CisgICAgICAgIG1fZ3JhcGguY29udmVy
dFRvQ29uc3RhbnQobV9ub2RlLCBjb25zdGFudCk7CisgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisgICAgfQorICAgIAorICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAgICBCYXNp
Y0Jsb2NrKiBtX2Jsb2NrOworICAgIHVuc2lnbmVkIG1fbm9kZUluZGV4OworICAgIE5vZGUqIG1f
bm9kZTsKKyAgICBib29sIG1fY2hhbmdlZDsKK307CisgICAgCitib29sIHBlcmZvcm1TdHJlbmd0
aFJlZHVjdGlvbihHcmFwaCYgZ3JhcGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBTdHJlbmd0aCBSZWR1Y3Rpb24gUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhh
c2U8U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZV9oCisjZGVmaW5lIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2VfaAorCisj
aWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwor
Y2xhc3MgR3JhcGg7CisKKy8vIFBlcmZvcm1zIHNpbXBsaWZpY2F0aW9ucyB0aGF0IGRvbid0IGRl
cGVuZCBvbiBDRkEgb3IgQ1NFIGJ1dCB0aGF0IHNob3VsZCBiZQorLy8gZml4cG9pbnRlZCB3aXRo
IENGQSBhbmQgQ1NFLgorCitib29sIHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihHcmFwaCYpOwor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
KworI2VuZGlmIC8vIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2VfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDE3ICs5NSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2Rl
KCkudHlwZSgpID09IEFycmF5OjpTdHJpbmcpCiAgICAgICAgICAgICAgICAgaGFuZGxlU3RyaW5n
R2V0QnlWYWwoKTsKIAotICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
bV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksIG1fbm9k
ZS0+YXJyYXlNb2RlKCkpKQorICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3
ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXdGb3JDaGlsZDEobV9ub2RlKSkKICAgICAgICAg
ICAgICAgICBhZGRMYXppbHkodmlldyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJW
aWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDApLm5vZGUoKSwgbV9ub2RlLT5hcnJheU1vZGUoKSkpCi0gICAgICAgICAgICAg
ICAgYWRkTGF6aWx5KHZpZXcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKLSAgICAgICAgICAgIGlmIChKU0FycmF5QnVmZmVy
VmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBtX25vZGUtPmFycmF5TW9kZSgpKSkKKyAgICAgICAgICAgIGlmIChKU0FycmF5QnVm
ZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3Rm9yQ2hpbGQxKG1fbm9k
ZSkpCiAgICAgICAgICAgICAgICAgYWRkTGF6aWx5KHZpZXcpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKQEAgLTE0NCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgotICAgICAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50
cnlHZXRGb2xkYWJsZVZpZXcobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksIG1fbm9kZS0+YXJyYXlN
b2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dy
YXBoLnRyeUdldEZvbGRhYmxlVmlld0ZvckNoaWxkMShtX25vZGUpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGF3ZXNvbWUgdG8gYmUgYWJsZSB0byBmb2xkIHRoZSBw
cm9wZXJ0eSBzdG9yYWdlIGZvcgogICAgICAgICAgICAgICAgIC8vIHRoZXNlIEdDLWFsbG9jYXRl
ZCB0eXBlZCBhcnJheXMuIEZvciBub3cgaXQgZG9lc24ndCBtYXR0ZXIgYmVjYXVzZSB0aGUKICAg
ICAgICAgICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UtY2FzZXMgZm9yIGNvbnN0YW50IHR5cGVk
IGFycmF5cyBpbnZvbHZlIGxhcmdlIGFycmF5cyB3aXRoCkBAIC0xNTUsNiArMTUwLDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgorICAgICAgICAgICAgYWRkTGF6aWx5
KG1fbm9kZS0+dHlwZWRBcnJheSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNp
b24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBj
YXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgRnVuY3Rpb25SZWVudHJ5V2F0
Y2hwb2ludDoKKyAgICBjYXNlIFR5cGVkQXJyYXlXYXRjaHBvaW50OgogICAgIGNhc2UgVmFyaWFi
bGVXYXRjaHBvaW50OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBWYWx1ZVRvSW50
MzI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAkocmV2aXNpb24gMTYwMjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMSArMjY2LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY29tcGlsZVBoYW50
b20oKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoOgotICAgICAgICBj
YXNlIFBoYW50b21Mb2NhbDoKLSAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKLSAgICAgICAgY2Fz
ZSBMb29wSGludDoKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRoQWRkOgog
ICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICAgICAgY29tcGlsZUFkZFN1YigpOwpAQCAt
Mzk4LDEwICszOTMsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAg
ICAgICAgICAgY29tcGlsZU5vdGlmeVdyaXRlKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBGdW5jdGlvblJlZW50cnlXYXRjaHBvaW50OgotICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR2V0TXlTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVHZXRNeVNjb3BlKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTQ3Miw2ICs0NjMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgICAgICAgICBjb21waWxlSW50NTJUb1ZhbHVlKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGbHVzaDoKKyAgICAgICAgY2FzZSBQaGFu
dG9tTG9jYWw6CisgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgTG9vcEhp
bnQ6CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgorICAgICAgICBjYXNlIEZ1bmN0
aW9uUmVlbnRyeVdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVdhdGNocG9pbnQ6
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0MjQsNyAr
MTQyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0
Rm9sZGFibGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBtX25vZGUtPmFycmF5TW9kZSgp
KSkgeworICAgICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdl
dEZvbGRhYmxlVmlldyhtX25vZGUpKSB7CiAgICAgICAgICAgICBpZiAodmlldy0+bW9kZSgpICE9
IEZhc3RUeXBlZEFycmF5KSB7CiAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZShtX291dC5jb25z
dEludFB0cih2aWV3LT52ZWN0b3IoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3
OTcsNyArMTc5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBPdXRPZkJv
dW5kcywgbm9WYWx1ZSgpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVP
ckVxdWFsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGVkQXJyYXlMZW5ndGgoY2hpbGQxLm5vZGUoKSwgbV9ub2RlLT5h
cnJheU1vZGUoKSwgYmFzZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZEFy
cmF5TGVuZ3RoKGNoaWxkMSwgbV9ub2RlLT5hcnJheU1vZGUoKSwgYmFzZSkpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVy
IHBvaW50ZXIgPSBUeXBlZFBvaW50ZXIoCkBAIC0yOTQzLDE2ICsyOTQyLDE2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93
QnV0dGVyZmx5KSk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSB0eXBlZEFycmF5TGVuZ3RoKE5v
ZGUqIGJhc2VOb2RlLCBBcnJheU1vZGUgYXJyYXlNb2RlLCBMVmFsdWUgYmFzZSkKKyAgICBMVmFs
dWUgdHlwZWRBcnJheUxlbmd0aChFZGdlIGJhc2VFZGdlLCBBcnJheU1vZGUgYXJyYXlNb2RlLCBM
VmFsdWUgYmFzZSkKICAgICB7Ci0gICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KGJhc2VOb2RlLCBhcnJheU1vZGUpKQorICAgICAg
ICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmll
dyhiYXNlRWRnZS5ub2RlKCksIGFycmF5TW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gbV9vdXQu
Y29uc3RJbnQzMih2aWV3LT5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBtX291dC5sb2FkMzIo
YmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOwogICAgIH0KICAgICAKICAg
ICBMVmFsdWUgdHlwZWRBcnJheUxlbmd0aChFZGdlIGJhc2VFZGdlLCBBcnJheU1vZGUgYXJyYXlN
b2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlMZW5ndGgoYmFzZUVkZ2Uubm9k
ZSgpLCBhcnJheU1vZGUsIGxvd0NlbGwoYmFzZUVkZ2UpKTsKKyAgICAgICAgcmV0dXJuIHR5cGVk
QXJyYXlMZW5ndGgoYmFzZUVkZ2UsIGFycmF5TW9kZSwgbG93Q2VsbChiYXNlRWRnZSkpOwogICAg
IH0KICAgICAKICAgICBMVmFsdWUgYm9vbGlmeShFZGdlIGVkZ2UpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMTYw
MjY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogCiAgICAgLy8gSGVscGVy
IHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCiAg
ICAgLy8gd2l0aGluIHJhbmdlLgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkaXN0aW5ndWlz
aCBiZXR3ZWVuIGFsaWdubWVudCBlcnJvcnMgYW5kIGJvdW5kcyBlcnJvcnMuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTM5MQogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlKAogICAgICAgICBQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2ZvbGQtdHlwZWQtYXJyYXktcHJvcGVydGllcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtdHlwZWQtYXJyYXkt
cHJvcGVydGllcy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZm9sZC10eXBlZC1hcnJheS1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKK3ZhciBhID0gbmV3IEludDMyQXJyYXkobmV3IEFycmF5QnVmZmVyKDEw
MCksIDQsIDEpOworCitpZiAoYS5sZW5ndGggIT0gMSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBs
ZW5ndGg6ICIgKyBhLmxlbmd0aDsKK2lmIChhLmJ5dGVPZmZzZXQgIT0gNCkKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCBvZmZzZXQ6ICIgKyBhLmJ5dGVPZmZzZXQ7CitpZiAoYS5ieXRlTGVuZ3RoICE9
IDQpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgYnl0ZSBsZW5ndGg6ICIgKyBhLmJ5dGVMZW5ndGg7
CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBpZiAoYS5sZW5ndGggIT0gMSkKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgbGVuZ3RoOiAiICsgYS5sZW5ndGg7CisgICAgaWYgKGEuYnl0ZU9mZnNl
dCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBvZmZzZXQ6ICIgKyBhLmJ5dGVPZmZz
ZXQ7CisgICAgaWYgKGEuYnl0ZUxlbmd0aCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCBieXRlIGxlbmd0aDogIiArIGEuYnl0ZUxlbmd0aDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpCisgICAgZm9vKCk7CisKK3RyYW5zZmVyQXJyYXlCdWZmZXIoYS5idWZm
ZXIpOworCit2YXIgZGlkVGhyb3cgPSBmYWxzZTsKK3RyeSB7CisgICAgZm9vKCk7Cit9IGNhdGNo
IChlKSB7CisgICAgZGlkVGhyb3cgPSB0cnVlOworfQorCitpZiAoIWRpZFRocm93KQorICAgIHRo
cm93ICJTaG91bGQgaGF2ZSB0aHJvd24uIjsKKworaWYgKGEubGVuZ3RoICE9IDApCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgbGVuZ3RoOiAiICsgYS5sZW5ndGg7CitpZiAoYS5ieXRlT2Zmc2V0ICE9
IDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgb2Zmc2V0OiAiICsgYS5ieXRlT2Zmc2V0OworaWYg
KGEuYnl0ZUxlbmd0aCAhPSAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIGJ5dGUgbGVuZ3RoOiAi
ICsgYS5ieXRlTGVuZ3RoOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjc0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTItMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KKworICAgICAgICBGb2xkIHR5cGVkQXJyYXkubGVuZ3RoIGlmIHR5cGVk
QXJyYXkgaXMgY29uc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTI1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgQWRkIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mg
dG8gdGhlIHNldCBvZiBKUyB0ZXN0cy4gVGhpcyBpcyB3aGVyZSB5b3UKKyAgICAgICAgc2hvdWxk
IHB1dCB0ZXN0cyB0aGF0IHJ1biBqdXN0IGxpa2UgSlNSZWdyZXNzIGJ1dCBkb24ndCBydW4gYXMg
cGFydCBvZiBMYXlvdXRUZXN0cy4KKyAgICAgICAgQ3VycmVudGx5IEknbSB1c2luZyBpdCBmb3Ig
dGVzdHMgdGhhdCByZXF1aXJlIHNvbWUgc3VyZ2ljYWwgc3VwcG9ydCBmcm9tIGpzYy5jcHAuCisK
KyAgICAgICAgKiBTY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czoKKwogMjAxMy0xMi0w
NyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBbR1RL
XSBSdW4gZWFjaCBndGVzdCBzdWJ0ZXN0IHNlcGFyYXRlbHkgaW5zdGVhZCBvZiBpbiBvbmUgZ28K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCShyZXZpc2lvbiAxNjAy
NjgpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwkod29ya2luZyBj
b3B5KQpAQCAtMjM5LDYgKzIzOSw3IEBAIGlmICgkcnVuSlNDU3RyZXNzKSB7CiAgICAgICAgICJQ
ZXJmb3JtYW5jZVRlc3RzL1N1blNwaWRlci90ZXN0cy9zdW5zcGlkZXItMS4wIiwKICAgICAgICAg
IlBlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL3Rlc3RzL3Y4LXY2IiwKICAgICAgICAgIlNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL21vemlsbGEtdGVzdHMueWFtbCIsCisgICAg
ICAgICJTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzIiwKICAgICAgICAgIkxheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzIiwKICAgICAgICAgIlBlcmZvcm1hbmNlVGVz
dHMvU3VuU3BpZGVyL3Byb2ZpbGVyLXRlc3QueWFtbCIsCiAgICAgICAgICJMYXlvdXRUZXN0cy9q
c2MtbGF5b3V0LXRlc3RzLnlhbWwiCg==
</data>
<flag name="review"
          id="242143"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>