<?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>100450</bug_id>
          
          <creation_ts>2012-10-25 20:29:19 -0700</creation_ts>
          <short_desc>x32 backend of the JIT compilers</short_desc>
          <delta_ts>2013-11-18 10:35:17 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>100909</dependson>
          <blocked>99153</blocked>
    
    <blocked>101325</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuqiang Xian">yuqiang.xian</reporter>
          <assigned_to name="Yuqiang Xian">yuqiang.xian</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>nrotem</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>751489</commentid>
    <comment_count>0</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2012-10-25 20:29:19 -0700</bug_when>
    <thetext>Add the x32 backend to the JIT compilers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751499</commentid>
    <comment_count>1</comment_count>
      <attachid>170800</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2012-10-25 20:58:49 -0700</bug_when>
    <thetext>Created attachment 170800
patch

Could you please take a look? Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751502</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 21:02:06 -0700</bug_when>
    <thetext>Attachment 170800 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JITStubs.cpp:441:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:477:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:479:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:486:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:488:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:500:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 15 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>766626</commentid>
    <comment_count>3</comment_count>
      <attachid>174108</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2012-11-14 01:42:37 -0800</bug_when>
    <thetext>Created attachment 174108
Rebased patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766628</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 01:46:07 -0800</bug_when>
    <thetext>Attachment 174108 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JITStubs.cpp:441:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:477:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:479:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:486:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:488:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:500:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 15 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>767660</commentid>
    <comment_count>5</comment_count>
      <attachid>174108</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-14 20:20:18 -0800</bug_when>
    <thetext>Comment on attachment 174108
Rebased patch

Attachment 174108 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14831603

New failing tests:
inspector-protocol/nmi-webaudio.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777434</commentid>
    <comment_count>6</comment_count>
      <attachid>176380</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2012-11-27 18:06:37 -0800</bug_when>
    <thetext>Created attachment 176380
Rebased again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777436</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 18:09:47 -0800</bug_when>
    <thetext>Attachment 176380 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JITStubs.cpp:441:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:477:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:479:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:486:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:488:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:500:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 15 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>799922</commentid>
    <comment_count>8</comment_count>
      <attachid>181267</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2013-01-03 19:42:56 -0800</bug_when>
    <thetext>Created attachment 181267
Rebased again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799925</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 19:46:02 -0800</bug_when>
    <thetext>Attachment 181267 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JITStubs.cpp:441:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:477:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:479:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:486:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:488:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:500:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 15 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>863264</commentid>
    <comment_count>10</comment_count>
      <attachid>194975</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2013-03-25 18:55:36 -0700</bug_when>
    <thetext>Created attachment 194975
Rebased again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863267</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 18:59:14 -0700</bug_when>
    <thetext>Attachment 194975 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/assembler/AbstractMacroAssembler.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssembler.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h&apos;, u&apos;Source/JavaScriptCore/assembler/X86Assembler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGEdge.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/ExecutableAllocator.h&apos;, u&apos;Source/JavaScriptCore/jit/JITCall.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.h&apos;, u&apos;Source/JavaScriptCore/runtime/MatchResult.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Platform.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/jit/JITStubs.cpp:445:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:481:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:483:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:490:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:492:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:504:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 17 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>874335</commentid>
    <comment_count>12</comment_count>
      <attachid>197712</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2013-04-11 19:45:48 -0700</bug_when>
    <thetext>Created attachment 197712
Rebased again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874337</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-11 19:48:38 -0700</bug_when>
    <thetext>Attachment 197712 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/assembler/AbstractMacroAssembler.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssembler.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h&apos;, u&apos;Source/JavaScriptCore/assembler/X86Assembler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGEdge.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/heap/Region.h&apos;, u&apos;Source/JavaScriptCore/jit/ExecutableAllocator.h&apos;, u&apos;Source/JavaScriptCore/jit/JITCall.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.h&apos;, u&apos;Source/JavaScriptCore/runtime/MatchResult.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Platform.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/jit/JITStubs.cpp:445:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:481:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:483:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:490:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubs.cpp:492:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubs.cpp:504:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 18 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>945612</commentid>
    <comment_count>14</comment_count>
    <who name="Nadav Rotem">nrotem</who>
    <bug_when>2013-10-31 11:40:20 -0700</bug_when>
    <thetext>Is this worth the extra complexity ?  X32 has very little adoption. Does it even make sense in the context of a browser ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945619</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 11:53:21 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Is this worth the extra complexity ?  X32 has very little adoption. Does it even make sense in the context of a browser ?

I agree, I don&apos;t think it&apos;s worth the complexity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945643</commentid>
    <comment_count>16</comment_count>
      <attachid>197712</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-31 13:00:55 -0700</bug_when>
    <thetext>Comment on attachment 197712
Rebased again

Cleared flag to remove from review queue. It doesn&apos;t seem like X32 has enough adoption to warrant it being added to our shipping browser code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951674</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-18 10:35:17 -0800</bug_when>
    <thetext>It looks like x32 support is not planned at this time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170800</attachid>
            <date>2012-10-25 20:58:49 -0700</date>
            <delta_ts>2012-11-14 01:42:37 -0800</delta_ts>
            <desc>patch</desc>
            <filename>100450.0.patch</filename>
            <type>text/plain</type>
            <size>25397</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyNTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEyLTEwLTI1ICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgorCisg
ICAgICAgIHgzMiBiYWNrZW5kIG9mIHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmVjZXNzYXJ5
IGNoYW5nZXMgdG8gc3VwcG9ydCB4MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoVHJ1c3RlZElt
bTMyKToKKyAgICAgICAgKEltbTMyKToKKyAgICAgICAgKFRydXN0ZWRJbW02NCk6CisgICAgICAg
IChJbW02NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpjb21wYXJl
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnJvdGF0ZVJpZ2h0
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnB1c2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGwp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNvbnZlcnRpYmxlTG9hZFB0cik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojptb3ZlV2l0aFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaFB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVB0cldpdGhQYXRjaCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OnJvcmxfaThyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6dGVzdGxfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1v
dmxfbUVBWCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9FQVhtKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX21FQVgpOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6Om1vdnFfRUFYbSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKE9w
SW5mbyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVENhbGwu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoK
KyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKEpJVFN0YWNrRnJhbWUpOgorICAg
ICAgICAoSlNDOjpKSVRTdGFja0ZyYW1lOjpyZXR1cm5BZGRyZXNzU2xvdCk6CisgICAgICAgICog
cnVudGltZS9NYXRjaFJlc3VsdC5oOgorICAgICAgICAoTWF0Y2hSZXN1bHQpOgorCiAyMDEyLTEw
LTI1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFN5bWJv
bFRhYmxlSW5kZXhIYXNoVHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uIHNob3VsZCBiZSBzZXQgdG8g
dHJ1ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzMjU1NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0K
IAotI2lmICFDUFUoWDg2XzY0KQorI2lmICFDUFUoWDg2XzY0KSB8fCBDUFUoWDMyKQogICAgICAg
ICBleHBsaWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAgICA6
IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1ZSkKICAgICAgICAgewogICAg
ICAgICB9Ci0jaWYgIUNQVShYODZfNjQpCisjaWYgIUNQVShYODZfNjQpIHx8IENQVShYMzIpCiAg
ICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBU
cnVzdGVkSW1tMzIocHRyKQogICAgICAgICB7CkBAIC0yNzUsNyArMjc1LDcgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIENQVShYODZfNjQpCisjaWYgQ1BVKFg4Nl82NCkg
JiYgIUNQVShYMzIpCiAgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRy
IHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewpA
QCAtMjk2LDcgKzI5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgIH0KLSNpZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZf
NjQpICYmICFDUFUoWDMyKQogICAgICAgICBleHBsaWNpdCBJbW02NChUcnVzdGVkSW1tUHRyIHB0
cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0cikKICAgICAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2
aXNpb24gMTMyNTU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAgcHVibGljOgogICAg
IC8vIFB0ciBtZXRob2RzCiAgICAgLy8gT24gMzItYml0IHBsYXRmb3JtcyAoaS5lLiB4ODYpLCB0
aGVzZSBtZXRob2RzIGRpcmVjdGx5IG1hcCBvbnRvIHRoZWlyIDMyLWJpdCBlcXVpdmFsZW50cy4K
ICAgICAvLyBGSVhNRTogc2hvdWxkIHRoaXMgdXNlIGEgdGVzdCBmb3IgMzItYml0bmVzcyBpbnN0
ZWFkIG9mIHRoaXMgc3BlY2lmaWMgZXhjZXB0aW9uPwotI2lmICFDUFUoWDg2XzY0KQorI2lmICFD
UFUoWDg2XzY0KSB8fCBDUFUoWDMyKQogICAgIHZvaWQgYWRkUHRyKEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQzMihzcmMsIGRlc3QpOwpAQCAtNDMzLDE2
ICs0MzMsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbG9hZDMyV2l0aENvbXBhY3RBZGRy
ZXNzT2Zmc2V0UGF0Y2goYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlKElt
bVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBhcmVQdHIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShJbW0zMihpbW0uYXNUcnVzdGVkSW1t
UHRyKCkpLCBkZXN0KTsKKyAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LCBkZXN0
KTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBhcmVQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHZvaWQgY29tcGFyZVB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
Y29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LCBkZXN0KTsKICAgICB9Ci0KKyAgICAKICAgICB2
b2lkIHN0b3JlUHRyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIHN0b3JlMzIoc3JjLCBhZGRyZXNzKTsKQEAgLTQ2MywxMSArNDYzLDYgQEAg
cHVibGljOgogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpbW0pLCBhZGRyZXNzKTsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCBzdG9yZVB0cihJbW1QdHIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
Ci0gICAgewotICAgICAgICBzdG9yZTMyKEltbTMyKGltbS5hc1RydXN0ZWRJbW1QdHIoKSksIGFk
ZHJlc3MpOwotICAgIH0KLQogICAgIHZvaWQgc3RvcmVQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIHZv
aWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpbW0pLCBh
ZGRyZXNzKTsKQEAgLTQ4NywxMSArNDgyLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihyaWdodCkpOwogICAgIH0KLSAg
ICAKLSAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgbGVmdCwgSW1tUHRyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGxlZnQsIEltbTMyKHJpZ2h0LmFzVHJ1c3RlZEltbVB0cigpKSk7Ci0gICAgfQogCiAgICAg
SnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IEFkZHJlc3MgcmlnaHQpCiAgICAgewpAQCAtNTU3LDYgKzU0NywyOCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0OChjb25kLCBB
ZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpLCBtYXNrKTsKICAgICB9CisKKyNp
ZiAhQ1BVKFg4Nl82NCkKKyAgICB2b2lkIG1vdmUoSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbW92ZShJbW0zMihpbW0uYXNUcnVzdGVkSW1tUHRyKCkpLCBkZXN0
KTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUHRyKEltbVB0ciBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHN0b3JlMzIoSW1tMzIoaW1tLmFzVHJ1c3RlZEltbVB0cigpKSwg
YWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbVB0ciByaWdodCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBJbW0zMihyaWdodC5hc1RydXN0ZWRJbW1QdHIoKSkp
OworICAgIH0KKyNlbHNlCisgICAgdm9pZCByb3RhdGVSaWdodFB0cihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyY0RzdCkKKyAgICB7CisgICAgICAgIHJvdGF0ZVJpZ2h0MzIoaW1tLCBz
cmNEc3QpOworICAgIH0KKyNlbmRpZgogI2Vsc2UKICAgICB2b2lkIGFkZFB0cihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAgLTgzMiw2ICs4NDQsOSBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoU3ViNjQoY29uZCwgc3JjMSwgc3JjMiwgZGVz
dCk7CiAgICAgfQorI2VuZGlmIC8vICFDUFUoWDg2XzY0KSB8fCBDUFUoWDMyKQorCisjaWYgQ1BV
KFg4Nl82NCkKIAogI2lmIEVOQUJMRShKSVRfQ09OU1RBTlRfQkxJTkRJTkcpCiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQ2NDsKQEAgLTg3NywxMCArODkyLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSAweGZmZmY6CiAgICAgICAgIGNhc2UgMHhmZmZmZmY6CiAgICAgICAgIGNh
c2UgMHhmZmZmZmZmZkw6CisjaWYgIUNQVShYMzIpCiAgICAgICAgIGNhc2UgMHhmZmZmZmZmZmZm
TDoKICAgICAgICAgY2FzZSAweGZmZmZmZmZmZmZmZkw6CiAgICAgICAgIGNhc2UgMHhmZmZmZmZm
ZmZmZmZmZkw6CiAgICAgICAgIGNhc2UgMHhmZmZmZmZmZmZmZmZmZmZmTDoKKyNlbmRpZgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICBp
ZiAodmFsdWUgPD0gMHhmZikKQEAgLTEwNDMsNyArMTA2MCw3IEBAIHB1YmxpYzoKIAogI2VuZGlm
CiAKLSNlbmRpZiAvLyAhQ1BVKFg4Nl82NCkKKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAjaWYg
RU5BQkxFKEpJVF9DT05TVEFOVF9CTElORElORykKICAgICBib29sIHNob3VsZEJsaW5kKEltbTMy
IGltbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDEzMjU1NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29y
a2luZyBjb3B5KQpAQCAtOTU5LDcgKzk1OSwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHB1c2go
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKKyNpZiBDUFUoWDMyKQorICAgICAgICAvLyBPbiBYODZf
NjQgKGFsc28gaW4gWDMyIG1vZGUpLCB0aGUgZGVmYXVsdCBvcGVyYW5kIHNpemUgZm9yIGNhbGwv
anVtcC9wdXNoL3BvcAorICAgICAgICAvLyBpcyA2NC1iaXQuIFRoaXMgbWVhbnMgaWYgd2UgdXNl
IGEgbWVtb3J5IG9wZXJhbmQgZm9yIHRob3NlIGluc3RydWN0aW9ucywKKyAgICAgICAgLy8gd2Un
bGwgYmUgbG9hZGluZyBhIDY0LWJpdCBkYXRhIGZyb20gdGhlIG1lbW9yeSBhZGRyZXNzLiBJdCdz
IG5vdCBvdXIgaW50ZW50aW9uLgorICAgICAgICBsb2FkMzIoYWRkcmVzcywgc2NyYXRjaFJlZ2lz
dGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIucHVzaF9yKHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxz
ZQogICAgICAgICBtX2Fzc2VtYmxlci5wdXNoX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHB1c2goVHJ1c3RlZEltbTMyIGltbSkKQEAg
LTk5Myw3ICsxMDAxLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbW92ZShUcnVzdGVkSW1tUHRy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyNpZiBDUFUoWDMyKQorICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsX2kzMnIoaW1tLmFzSW50cHRyKCksIGRlc3QpOworI2Vsc2UKICAgICAgICAg
bV9hc3NlbWJsZXIubW92cV9pNjRyKGltbS5hc0ludHB0cigpLCBkZXN0KTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHZvaWQgbW92ZShUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIGRlc3QpCkBA
IC0xMTkyLDcgKzEyMDQsMTUgQEAgcHVibGljOgogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1vcnkg
bG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBqdW1w
KEFkZHJlc3MgYWRkcmVzcykKICAgICB7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgLy8gT24gWDg2
XzY0IChhbHNvIGluIFgzMiBtb2RlKSwgdGhlIGRlZmF1bHQgb3BlcmFuZCBzaXplIGZvciBjYWxs
L2p1bXAvcHVzaC9wb3AKKyAgICAgICAgLy8gaXMgNjQtYml0LiBUaGlzIG1lYW5zIGlmIHdlIHVz
ZSBhIG1lbW9yeSBvcGVyYW5kIGZvciB0aG9zZSBpbnN0cnVjdGlvbnMsCisgICAgICAgIC8vIHdl
J2xsIGJlIGxvYWRpbmcgYSA2NC1iaXQgZGF0YSBmcm9tIHRoZSBtZW1vcnkgYWRkcmVzcy4gSXQn
cyBub3Qgb3VyIGludGVudGlvbi4KKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNjcmF0Y2hSZWdp
c3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxz
ZQogICAgICAgICBtX2Fzc2VtYmxlci5qbXBfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyNlbmRpZgogICAgIH0KIAogCkBAIC0xMzU5LDcgKzEzNzksMTUgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcykKICAgICB7CisjaWYgQ1BVKFgzMikKKyAgICAg
ICAgLy8gT24gWDg2XzY0IChhbHNvIGluIFgzMiBtb2RlKSwgdGhlIGRlZmF1bHQgb3BlcmFuZCBz
aXplIGZvciBjYWxsL2p1bXAvcHVzaC9wb3AKKyAgICAgICAgLy8gaXMgNjQtYml0LiBUaGlzIG1l
YW5zIGlmIHdlIHVzZSBhIG1lbW9yeSBvcGVyYW5kIGZvciB0aG9zZSBpbnN0cnVjdGlvbnMsCisg
ICAgICAgIC8vIHdlJ2xsIGJlIGxvYWRpbmcgYSA2NC1iaXQgZGF0YSBmcm9tIHRoZSBtZW1vcnkg
YWRkcmVzcy4gSXQncyBub3Qgb3VyIGludGVudGlvbi4KKyAgICAgICAgbG9hZDMyKGFkZHJlc3Ms
IHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmNhbGwoc2NyYXRjaFJlZ2lz
dGVyKTsKKyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLmNhbGxfbShhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgcmV0KCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2XzY0LmgJKHJldmlzaW9uIDEzMjU1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiBwdWJsaWM6CisjaWYgQ1BVKFgzMikKKyAg
ICBzdGF0aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIgPSBUaW1lc0ZvdXI7CisjZWxzZQogICAgIHN0
YXRpYyBjb25zdCBTY2FsZSBTY2FsZVB0ciA9IFRpbWVzRWlnaHQ7CisjZW5kaWYKIAogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphZGQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YW5kMzI7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQz
MjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzI7CkBAIC0xMTAsMTIgKzExNSwzOSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHNpMnNkX3JyKHNjcmF0Y2hSZWdpc3RlciwgZGVz
dCk7CiAgICAgfQogCisgICAgdm9pZCByb3RhdGVSaWdodDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgc3JjRHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9ybF9pOHIoaW1t
Lm1fdmFsdWUsIHNyY0RzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0z
MiBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgICAgIHN0b3JlMzIoaW1tLCBzY3JhdGNo
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMs
IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoc3JjID09IFg4NlJlZ2lzdGVyczo6
ZWF4KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9FQVhtKGFkZHJlc3MpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRj
aFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlMzIoc3JjLCBzY3JhdGNoUmVnaXN0ZXIpOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKKyAgICB7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVy
KSwgcmlnaHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIHsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQpOworICAgIH0KKwog
ICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7CkBA
IC01MjgsMzMgKzU2MCw1MyBAQCBwdWJsaWM6CiAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29u
dmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVydGlibGVMb2FkTGFi
ZWwodGhpcyk7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKKyNlbHNlCiAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgbW92ZVdp
dGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsX2kzMnIoaW5pdGlhbFZhbHVlLmFzSW50cHRyKCksIGRlc3QpOworI2Vsc2UK
ICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pNjRyKGluaXRpYWxWYWx1ZS5hc0ludHB0cigpLCBk
ZXN0KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOwogICAgIH0K
IAogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRh
TGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIp
OworI2lmIENQVShYMzIpCisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBzY3Jh
dGNoUmVnaXN0ZXIpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQs
IHNjcmF0Y2hSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cldp
dGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVs
UHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVk
SW1tUHRyKDApKQogICAgIHsKICAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0
aWFsUmlnaHRWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbHNlCiAgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOworI2VuZGlm
CiAgICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIHN0b3JlUHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1Q
dHIgaW5pdGlhbFZhbHVlLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IERhdGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFZhbHVlLCBzY3JhdGNo
UmVnaXN0ZXIpOworI2lmIENQVShYMzIpCisgICAgICAgIHN0b3JlMzIoc2NyYXRjaFJlZ2lzdGVy
LCBhZGRyZXNzKTsKKyNlbHNlCiAgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyLCBhZGRy
ZXNzKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZp
c2lvbiAxMzI1NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgzLDE2IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgcm9ybF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBpZiAoaW1tID09IDEpCisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwgR1JPVVAyX09QX1JPUiwgZHN0KTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2SWIsIEdS
T1VQMl9PUF9ST1IsIGRzdCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKICNlbmRpZgogCiAgICAgdm9pZCBzYXJsX2k4cihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKQEAgLTEwMDcsNiArMTAxNywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1RFU1RfRXZHdiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgdGVzdGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9URVNUX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHRl
c3RxX2kzMnIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGRzdCk7CkBA
IC0xMTExLDcgKzExMjYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfTU9WX0VBWE92KTsKICNpZiBDUFUoWDg2XzY0KQotICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFkZHIpKTsKKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoZSBhZGRyIGlzIHplcm8gZXh0ZW5kZWQgKGlmIGl0J3MgYSAzMi1i
aXQgYWRkciBpbiBYMzIgbW9kZSkuCisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTY0KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhZGRyKSk7CiAjZWxzZQogICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihyZWludGVycHJldF9jYXN0PGludD4oYWRkcikpOwogI2VuZGlmCkBA
IC0xMTkzLDcgKzEyMDksOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfTU9WX092RUFYKTsKICNpZiBDUFUoWDg2XzY0KQotICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFkZHIpKTsKKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoZSBhZGRyIGlzIHplcm8gZXh0ZW5kZWQgKGlmIGl0J3MgYSAzMi1i
aXQgYWRkciBpbiBYMzIgbW9kZSkuCisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTY0KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhZGRyKSk7CiAjZWxzZQogICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihyZWludGVycHJldF9jYXN0PGludD4oYWRkcikpOwogI2VuZGlmCkBA
IC0xMjIzLDEzICsxMjQwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdnFfbUVBWChjb25zdCB2
b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9W
X0VBWE92KTsKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnByZXRfY2Fz
dDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWRkciBpcyB6ZXJv
IGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMyIG1vZGUpLgorICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWRkcikp
OwogICAgIH0KIAogICAgIHZvaWQgbW92cV9FQVhtKGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfT3ZFQVgpOwotICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFkZHIpKTsK
KyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZGRyIGlzIHplcm8gZXh0ZW5kZWQgKGlmIGl0J3Mg
YSAzMi1iaXQgYWRkciBpbiBYMzIgbW9kZSkuCisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhZGRyKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBtb3ZxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTMyNTU2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDcgQEAgc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7CiBzdHJ1Y3QgT3BJbmZvIHsK
ICAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFs
dWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0jaWYgT1Mo
REFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQorI2lmIE9TKERBUldJTikgfHwgKENQVShYODZfNjQp
ICYmICFDUFUoWDMyKSkKICAgICBleHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFs
dWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQogI2VuZGlmCiAgICAgZXhwbGlj
aXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHZhbHVlKSkgeyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzMjU1NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMzMsNiArMTAzMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5v
ZGUKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5tX251
bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CiAgICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQ
YXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpKTsKKyNpZiBDUFUoWDMyKQorICAgIHNs
b3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IGNhbGxlZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisjZW5kaWYKIAogICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRHUFIpOwogICAgIG1faml0LnN0b3Jl
NjQocmVzdWx0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAqIEpTU3Rh
Y2s6OlNjb3BlQ2hhaW4pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
RXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZpc2lvbiAxMzI1NTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIGNsYXNzIERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3I7CiAjaWYgRU5BQkxF
KEVYRUNVVEFCTEVfQUxMT0NBVE9SX0ZJWEVEKQogI2lmIENQVShBUk0pCiBzdGF0aWMgY29uc3Qg
c2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xTaXplID0gMTYgKiAxMDI0ICogMTAyNDsK
LSNlbGlmIENQVShYODZfNjQpCisjZWxpZiBDUFUoWDg2XzY0KSAmJiAhQ1BVKFgzMikKIHN0YXRp
YyBjb25zdCBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAxMDI0ICogMTAy
NCAqIDEwMjQ7CiAjZWxzZQogc3RhdGljIGNvbnN0IHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1v
cnlQb29sU2l6ZSA9IDMyICogMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDEzMjU1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw2ICsxOTQsMTEgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIEVORF9VTklOVEVSUlVQ
VEVEX1NFUVVFTkNFKHNlcXVlbmNlT3BDYWxsKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7
CiAKKyNpZiBDUFUoWDMyKQorICAgIC8vIFRoZSBhYm92ZSBicmFuY2hQdHIgZG9lc24ndCBjYXRj
aCB0aGUgY2FzZSB3aGVyZSB0aGUgY2FsbGVlIGlzbid0IGEgY2VsbC4KKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3RlcikpOworI2VuZGlm
CisKICAgICBBU1NFUlQobV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mby5zaXplKCkg
PT0gY2FsbExpbmtJbmZvSW5kZXgpOwogICAgIG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlv
bkluZm8uYXBwZW5kKFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm8oKSk7CiAgICAgbV9jYWxs
U3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uaG90UGF0aEJl
Z2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKQEAgLTIxNSw2ICsyMjAsOSBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29kZUlECiAgICAgfQogCiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOworI2lmIENQVShYMzIpCisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwor
I2VuZGlmCiAgICAgCiAgICAgbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxs
TGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2VkQ2FsbChvcGNvZGVJ
RCA9PSBvcF9jb25zdHJ1Y3QgPyBtX2dsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlWaXJ0dWFsQ29u
c3RydWN0TGluaygpIDogbV9nbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpVmlydHVhbENhbGxMaW5r
KCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNp
b24gMTMyNTU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2Niw2ICszNjYsNyBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dO
b3RDYXVnaHQpICI6IiAiCiAKICNpZiBDT01QSUxFUihHQ0MpICYmIENQVShYODZfNjQpCiAKKyNp
ZiAhQ1BVKFgzMikKIC8vIFRoZXNlIEFTU0VSVHMgcmVtaW5kIHlvdSB0aGF0LCBpZiB5b3UgY2hh
bmdlIHRoZSBsYXlvdXQgb2YgSklUU3RhY2tGcmFtZSwgeW91CiAvLyBuZWVkIHRvIGNoYW5nZSB0
aGUgYXNzZW1ibHkgdHJhbXBvbGluZXMgYmVsb3cgdG8gbWF0Y2guCiBDT01QSUxFX0FTU0VSVChv
ZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSA9PSAweDU4LCBKSVRTdGFj
a0ZyYW1lX2NhbGxGcmFtZV9vZmZzZXRfbWF0Y2hlc19jdGlUcmFtcG9saW5lKTsKQEAgLTQzMiw2
ICs0MzMsNzIgQEAgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIgogICAg
ICJwb3BxICVyYnAiICJcbiIKICAgICAicmV0IiAiXG4iCiApOworI2Vsc2UKK0NPTVBJTEVfQVNT
RVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpID09IDB4NDgsIEpJ
VFN0YWNrRnJhbWVfY2FsbEZyYW1lX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOworQ09N
UElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNvZGUpID09IDB4NDAs
IEpJVFN0YWNrRnJhbWVfY29kZV9vZmZzZXRfbWF0Y2hlc19jdGlUcmFtcG9saW5lKTsKK0NPTVBJ
TEVfQVNTRVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBzYXZlZFJCWCkgPT0gMHg1
OCwgSklUU3RhY2tGcmFtZV9zdHViX2FyZ3VtZW50X3NwYWNlX21hdGNoZXNfY3RpVHJhbXBvbGlu
ZSk7CisKK2FzbSAoCisiLnRleHRcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1w
b2xpbmUpICJcbiIKK0hJREVfU1lNQk9MKGN0aVRyYW1wb2xpbmUpICJcbiIKK1NZTUJPTF9TVFJJ
TkcoY3RpVHJhbXBvbGluZSkgIjoiICJcbiIKKyAgICAicHVzaHEgJXJicCIgIlxuIgorICAgICJt
b3ZsICVlc3AsICVlYnAiICJcbiIKKyAgICAicHVzaHEgJXIxMiIgIlxuIgorICAgICJwdXNocSAl
cjEzIiAiXG4iCisgICAgInB1c2hxICVyMTQiICJcbiIKKyAgICAicHVzaHEgJXIxNSIgIlxuIgor
ICAgICJwdXNocSAlcmJ4IiAiXG4iCisgICAgLy8gRm9ybSB0aGUgSklUIHN0dWJzIGFyZWEKKyAg
ICAic3VibCAkMHg1OCwgJWVzcCIgIlxuIgorICAgICJtb3ZsICVyOWQsIDB4NTQoJWVzcCkiICJc
biIKKyAgICAibW92bCAlcjhkLCAweDUwKCVlc3ApIiAiXG4iCisgICAgIm1vdmwgJWVjeCwgMHg0
YyglZXNwKSIgIlxuIgorICAgICJtb3ZsICVlZHgsIDB4NDgoJWVzcCkiICJcbiIKKyAgICAibW92
bCAlZXNpLCAweDQ0KCVlc3ApIiAiXG4iCisgICAgIm1vdmwgJWVkaSwgMHg0MCglZXNwKSIgIlxu
IgorICAgICJtb3ZxICQ1MTIsICVyMTIiICJcbiIKKyAgICAibW92cSAkMHhGRkZGMDAwMDAwMDAw
MDAwLCAlcjE0IiAiXG4iCisgICAgIm1vdnEgJDB4RkZGRjAwMDAwMDAwMDAwMiwgJXIxNSIgIlxu
IgorICAgICJtb3ZsICVlZHgsICVyMTNkIiAiXG4iCisgICAgImNhbGwgKiVyZGkiICJcbiIKKyAg
ICAiYWRkbCAkMHg1OCwgJWVzcCIgIlxuIgorICAgICJwb3BxICVyYngiICJcbiIKKyAgICAicG9w
cSAlcjE1IiAiXG4iCisgICAgInBvcHEgJXIxNCIgIlxuIgorICAgICJwb3BxICVyMTMiICJcbiIK
KyAgICAicG9wcSAlcjEyIiAiXG4iCisgICAgInBvcHEgJXJicCIgIlxuIgorICAgICJyZXQiICJc
biIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmVFbmQpICJcbiIKK0hJREVf
U1lNQk9MKGN0aVRyYW1wb2xpbmVFbmQpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGlu
ZUVuZCkgIjoiICJcbiIKKyk7CisKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlW
TVRocm93VHJhbXBvbGluZSkgIlxuIgorSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmUp
ICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCisgICAg
Im1vdmwgJWVzcCwgJWVkaSIgIlxuIgorICAgICJjYWxsICIgTE9DQUxfUkVGRVJFTkNFKGN0aV92
bV90aHJvdykgIlxuIgorICAgICJpbnQzIiAiXG4iCispOworCithc20gKAorIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgorSElERV9TWU1CT0woY3RpT3BU
aHJvd05vdENhdWdodCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAi
OiIgIlxuIgorICAgICJhZGRsICQweDU4LCAlZXNwIiAiXG4iCisgICAgInBvcHEgJXJieCIgIlxu
IgorICAgICJwb3BxICVyMTUiICJcbiIKKyAgICAicG9wcSAlcjE0IiAiXG4iCisgICAgInBvcHEg
JXIxMyIgIlxuIgorICAgICJwb3BxICVyMTIiICJcbiIKKyAgICAicG9wcSAlcmJwIiAiXG4iCisg
ICAgInJldCIgIlxuIgorKTsKKyNlbmRpZgogCiAjZWxzZQogICAgICNlcnJvciAiSklUIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5oCShyZXZpc2lvbiAxMzI1NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICNpZiBDUFUoWDg2XzY0KQogICAgIHN0cnVjdCBKSVRTdGFja0ZyYW1lIHsKLSAgICAg
ICAgdm9pZCogcmVzZXJ2ZWQ7IC8vIFVudXNlZAorICAgICAgICBpbnQ2NF90IHJlc2VydmVkOyAv
LyBVbnVzZWQKICAgICAgICAgSklUU3R1YkFyZyBhcmdzWzZdOwotICAgICAgICB2b2lkKiBwYWRk
aW5nWzJdOyAvLyBNYWludGFpbiAzMi1ieXRlIHN0YWNrIGFsaWdubWVudCAocG9zc2libHkgb3Zl
cmtpbGwpLgorICAgICAgICB2b2lkKiBwYWRkaW5nWzJdOyAvLyBNYWludGFpbiAxNi1ieXRlIHN0
YWNrIGFsaWdubWVudC4KIAogICAgICAgICB2b2lkKiBjb2RlOwogICAgICAgICBKU1N0YWNrKiBz
dGFjazsKQEAgLTExMCwxNiArMTEwLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
KiB1bnVzZWQyOwogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGE7CiAKLSAgICAgICAg
dm9pZCogc2F2ZWRSQlg7Ci0gICAgICAgIHZvaWQqIHNhdmVkUjE1OwotICAgICAgICB2b2lkKiBz
YXZlZFIxNDsKLSAgICAgICAgdm9pZCogc2F2ZWRSMTM7Ci0gICAgICAgIHZvaWQqIHNhdmVkUjEy
OwotICAgICAgICB2b2lkKiBzYXZlZFJCUDsKLSAgICAgICAgdm9pZCogc2F2ZWRSSVA7CisgICAg
ICAgIGludDY0X3Qgc2F2ZWRSQlg7CisgICAgICAgIGludDY0X3Qgc2F2ZWRSMTU7CisgICAgICAg
IGludDY0X3Qgc2F2ZWRSMTQ7CisgICAgICAgIGludDY0X3Qgc2F2ZWRSMTM7CisgICAgICAgIGlu
dDY0X3Qgc2F2ZWRSMTI7CisgICAgICAgIGludDY0X3Qgc2F2ZWRSQlA7CisgICAgICAgIGludDY0
X3Qgc2F2ZWRSSVA7CiAKICAgICAgICAgLy8gV2hlbiBKSVQgY29kZSBtYWtlcyBhIGNhbGwsIGl0
IHB1c2hlcyBpdHMgcmV0dXJuIGFkZHJlc3MganVzdCBiZWxvdyB0aGUgcmVzdCBvZiB0aGUgc3Rh
Y2suCisjaWYgQ1BVKFgzMikKKyAgICAgICAgLy8gT24gWDMyIHRoZSByZXR1cm4gYWRkcmVzcyBv
Y2N1cGllcyBhIDgtYnl0ZSBzbG90ICh3aXRoIHRoZSBoaWdoZXIgNCBieXRlcyB6ZXJvJ2VkKQor
ICAgICAgICBSZXR1cm5BZGRyZXNzUHRyKiByZXR1cm5BZGRyZXNzU2xvdCgpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8UmV0dXJuQWRkcmVzc1B0cio+KHRoaXMpIC0gMjsgfQorI2Vsc2UKICAg
ICAgICAgUmV0dXJuQWRkcmVzc1B0ciogcmV0dXJuQWRkcmVzc1Nsb3QoKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PFJldHVybkFkZHJlc3NQdHIqPih0aGlzKSAtIDE7IH0KKyNlbmRpZgogICAg
IH07CiAjZWxpZiBDUFUoWDg2KQogI2lmIENPTVBJTEVSKE1TVkMpIHx8IChPUyhXSU5ET1dTKSAm
JiBDT01QSUxFUihHQ0MpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
Y2hSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRjaFJlc3VsdC5oCShyZXZpc2lvbiAxMzI1NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRjaFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCwxNyBAQCBz
dHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICByZXR1cm4gc3RhcnQgPT0gZW5kOwogICAgIH0K
IAorI2lmIENQVShYMzIpCisgICAgLy8gT24gWDMyLCBzaXplX3QgaXMgMzItYml0IHdoaWxlIHRo
ZSByZWdpc3RlciBzaXplIGlzIDY0LWJpdC4KKyAgICAvLyBNYWtlIGVhY2ggbWVtYmVyIHRvIGJl
IDY0LWJpdCBzbyB0aGF0IHRoZXkgd2lsbCBiZSBwbGFjZWQgaW4gdHdvIHJlZ2lzdGVycworICAg
IC8vIHdoZW4gYSBmdW5jdGlvbiAoYSBZYXJyIEpJVCBmdW5jdGlvbikgcmV0dXJucyBhIE1hdGNo
UmVzdWx0IHN0cnVjdHVyZSwKKyAgICAvLyBhIGJlaGF2aW9yIGNvbnNpc3RlbnQgd2l0aCBhbnkg
b3RoZXIgYXJjaGl0ZWN0dXJlLgorICAgIHVpbnQ2NF90IHN0YXJ0OworICAgIHVpbnQ2NF90IGVu
ZDsKKyNlbHNlCiAgICAgc2l6ZV90IHN0YXJ0OwogICAgIHNpemVfdCBlbmQ7CisjZW5kaWYKIH07
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjU2NikKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMjUgIFl1cWlhbmcg
WGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAgICAgICAgeDMyIGJhY2tlbmQgb2Yg
dGhlIEpJVCBjb21waWxlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMDQ1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZWNlc3NhcnkgY2hhbmdlcyB0byBzdXBwb3J0IHgz
MiBpbiB0aGUgSklUIGNvbXBpbGVycy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBBZGQg
dGhlIGRlZmluaXRpb24gb2YgQ1BVKFgzMikKKwogMjAxMi0xMC0yNSAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTMxODM2KTogZmFp
bHVyZXMgaW4gbGlzdCBzdHlsZXMgdGVzdHMgb24gRUZMLCBHVEsKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAko
cmV2aXNpb24gMTMyNTU2KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBj
b3B5KQpAQCAtMTYwLDYgKzE2MCw5IEBACiAjaWYgICBkZWZpbmVkKF9feDg2XzY0X18pIFwKICAg
ICB8fCBkZWZpbmVkKF9NX1g2NCkKICNkZWZpbmUgV1RGX0NQVV9YODZfNjQgMQorI2lmIGRlZmlu
ZWQoX19JTFAzMl9fKQorI2RlZmluZSBXVEZfQ1BVX1gzMiAxCisjZW5kaWYKICNlbmRpZgogCiAv
KiBDUFUoQVJNKSAtIEFSTSwgYW55IHZlcnNpb24qLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174108</attachid>
            <date>2012-11-14 01:42:37 -0800</date>
            <delta_ts>2012-11-27 18:06:37 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>100450.1.patch</filename>
            <type>text/plain</type>
            <size>27883</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0NTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDEyLTExLTEzICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgorCisg
ICAgICAgIHgzMiBiYWNrZW5kIG9mIHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmVjZXNzYXJ5
IGNoYW5nZXMgdG8gc3VwcG9ydCB4MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoVHJ1c3RlZElt
bTMyKToKKyAgICAgICAgKEltbTMyKToKKyAgICAgICAgKFRydXN0ZWRJbW02NCk6CisgICAgICAg
IChJbW02NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpjb21wYXJl
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnJvdGF0ZVJpZ2h0
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnB1c2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGwp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNvbnZlcnRpYmxlTG9hZFB0cik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojptb3ZlV2l0aFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaFB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnJldmVy
dEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
cm9ybF9pOHIpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjp0ZXN0bF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9tRUFY
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX0VBWG0pOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdnFfbUVBWCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bW92cV9FQVhtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92
bF9pMzJyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoT3BJbmZvKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5oOgorICAgICAgICAoSklUU3RhY2tGcmFtZSk6CisgICAgICAgIChKU0M6
OkpJVFN0YWNrRnJhbWU6OnJldHVybkFkZHJlc3NTbG90KToKKyAgICAgICAgKiBydW50aW1lL01h
dGNoUmVzdWx0Lmg6CisgICAgICAgIChNYXRjaFJlc3VsdCk6CisKIDIwMTItMTEtMTMgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgQ3JlYXRlVGhpcyBzaG91
bGQgYmUgYWJsZSB0byBzdGF0aWNhbGx5IGFjY291bnQgZm9yIHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IG9iamVjdCBpdCBjcmVhdGVzLCBpZiBwcm9maWxpbmcgaW5kaWNhdGVzIHRoYXQgdGhpcyBzdHJ1
Y3R1cmUgaXMgYWx3YXlzIHRoZSBzYW1lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24g
MTM0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0jaWYgIUNQVShYODZfNjQpCisjaWYgIUNQVShYODZfNjQp
IHx8IENQVShYMzIpCiAgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRy
IHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewpA
QCAtMjUxLDcgKzI1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTMyKHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgIH0KLSNpZiAhQ1BVKFg4Nl82NCkKKyNpZiAhQ1BVKFg4
Nl82NCkgfHwgQ1BVKFgzMikKICAgICAgICAgZXhwbGljaXQgSW1tMzIoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKQEAgLTI3NSw3
ICsyNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0jaWYgQ1BVKFg4Nl82
NCkKKyNpZiBDUFUoWDg2XzY0KSAmJiAhQ1BVKFgzMikKICAgICAgICAgZXhwbGljaXQgVHJ1c3Rl
ZEltbTY0KFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHB0ci5hc0lu
dHB0cigpKQogICAgICAgICB7CkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgOiBUcnVzdGVkSW1tNjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQotI2lmIENQVShY
ODZfNjQpCisjaWYgQ1BVKFg4Nl82NCkgJiYgIUNQVShYMzIpCiAgICAgICAgIGV4cGxpY2l0IElt
bTY0KFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQocHRyKQog
ICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMSw3ICsz
MTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gUHRyIG1ldGhvZHMKICAgICAvLyBPbiAzMi1iaXQgcGxh
dGZvcm1zIChpLmUuIHg4NiksIHRoZXNlIG1ldGhvZHMgZGlyZWN0bHkgbWFwIG9udG8gdGhlaXIg
MzItYml0IGVxdWl2YWxlbnRzLgogICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyB1c2UgYSB0ZXN0
IGZvciAzMi1iaXRuZXNzIGluc3RlYWQgb2YgdGhpcyBzcGVjaWZpYyBleGNlcHRpb24/Ci0jaWYg
IUNQVShYODZfNjQpCisjaWYgIUNQVShYODZfNjQpIHx8IENQVShYMzIpCiAgICAgdm9pZCBhZGRQ
dHIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKHNy
YywgZGVzdCk7CkBAIC00MzMsMTYgKzQzMywxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBs
b2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChhZGRyZXNzLCBkZXN0KTsKICAgICB9
CiAKLSAgICB2b2lkIG1vdmUoSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQg
Y29tcGFyZVB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKElt
bTMyKGltbS5hc1RydXN0ZWRJbW1QdHIoKSksIGRlc3QpOworICAgICAgICBjb21wYXJlMzIoY29u
ZCwgbGVmdCwgcmlnaHQsIGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGFyZVB0cihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgcmlnaHQsIGRlc3QpOwog
ICAgIH0KLQorICAgIAogICAgIHZvaWQgc3RvcmVQdHIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmUzMihzcmMsIGFkZHJlc3MpOwpA
QCAtNDYzLDExICs0NjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KGltbSksIGFkZHJlc3MpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHN0b3JlUHRyKEltbVB0ciBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHN0b3JlMzIoSW1tMzIoaW1tLmFz
VHJ1c3RlZEltbVB0cigpKSwgYWRkcmVzcyk7Ci0gICAgfQotCiAgICAgdm9pZCBzdG9yZVB0cihU
cnVzdGVkSW1tUHRyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKGltbSksIGFkZHJlc3MpOwpAQCAtNDg3LDExICs0ODIsNiBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMy
KHJpZ2h0KSk7CiAgICAgfQotICAgIAotICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW1QdHIgcmlnaHQpCi0gICAgewotICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgSW1tMzIocmlnaHQuYXNUcnVzdGVkSW1tUHRy
KCkpKTsKLSAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCkKICAgICB7CkBAIC01NTcsNiArNTQ3
LDI4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckJhc2U6
OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3MoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCks
IG1hc2spOwogICAgIH0KKworI2lmICFDUFUoWDg2XzY0KQorICAgIHZvaWQgbW92ZShJbW1QdHIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKEltbTMyKGltbS5hc1Ry
dXN0ZWRJbW1QdHIoKSksIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQdHIoSW1tUHRy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3RvcmUzMihJbW0zMihpbW0u
YXNUcnVzdGVkSW1tUHRyKCkpLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFB0
cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tUHRyIHJpZ2h0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIEltbTMyKHJpZ2h0
LmFzVHJ1c3RlZEltbVB0cigpKSk7CisgICAgfQorI2Vsc2UKKyAgICB2b2lkIHJvdGF0ZVJpZ2h0
UHRyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRHN0KQorICAgIHsKKyAgICAgICAg
cm90YXRlUmlnaHQzMihpbW0sIHNyY0RzdCk7CisgICAgfQorI2VuZGlmCiAjZWxzZQogICAgIHZv
aWQgYWRkUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtODMy
LDYgKzg0NCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2NChj
b25kLCBzcmMxLCBzcmMyLCBkZXN0KTsKICAgICB9CisjZW5kaWYgLy8gIUNQVShYODZfNjQpIHx8
IENQVShYMzIpCisKKyNpZiBDUFUoWDg2XzY0KQogCiAjaWYgRU5BQkxFKEpJVF9DT05TVEFOVF9C
TElORElORykKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmFuZDY0OwpAQCAtODc3LDEw
ICs4OTIsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNlIDB4ZmZmZjoKICAgICAgICAgY2FzZSAw
eGZmZmZmZjoKICAgICAgICAgY2FzZSAweGZmZmZmZmZmTDoKKyNpZiAhQ1BVKFgzMikKICAgICAg
ICAgY2FzZSAweGZmZmZmZmZmZmZMOgogICAgICAgICBjYXNlIDB4ZmZmZmZmZmZmZmZmTDoKICAg
ICAgICAgY2FzZSAweGZmZmZmZmZmZmZmZmZmTDoKICAgICAgICAgY2FzZSAweGZmZmZmZmZmZmZm
ZmZmZmZMOgorI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1
bHQ6IHsKICAgICAgICAgICAgIGlmICh2YWx1ZSA8PSAweGZmKQpAQCAtMTA0Myw3ICsxMDYwLDcg
QEAgcHVibGljOgogCiAjZW5kaWYKIAotI2VuZGlmIC8vICFDUFUoWDg2XzY0KQorI2VuZGlmIC8v
IENQVShYODZfNjQpCiAKICNpZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQogICAgIGJv
b2wgc2hvdWxkQmxpbmQoSW1tMzIgaW1tKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNp
b24gMTM0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjMsNyArOTYzLDE1IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcHVzaChBZGRyZXNzIGFkZHJlc3MpCiAgICAgeworI2lmIENQVShYMzIp
CisgICAgICAgIC8vIE9uIFg4Nl82NCAoYWxzbyBpbiBYMzIgbW9kZSksIHRoZSBkZWZhdWx0IG9w
ZXJhbmQgc2l6ZSBmb3IgY2FsbC9qdW1wL3B1c2gvcG9wCisgICAgICAgIC8vIGlzIDY0LWJpdC4g
VGhpcyBtZWFucyBpZiB3ZSB1c2UgYSBtZW1vcnkgb3BlcmFuZCBmb3IgdGhvc2UgaW5zdHJ1Y3Rp
b25zLAorICAgICAgICAvLyB3ZSdsbCBiZSBsb2FkaW5nIGEgNjQtYml0IGRhdGEgZnJvbSB0aGUg
bWVtb3J5IGFkZHJlc3MuIEl0J3Mgbm90IG91ciBpbnRlbnRpb24uCisgICAgICAgIGxvYWQzMihh
ZGRyZXNzLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5wdXNoX3Ioc2Ny
YXRjaFJlZ2lzdGVyKTsKKyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLnB1c2hfbShhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgcHVzaChU
cnVzdGVkSW1tMzIgaW1tKQpAQCAtOTk3LDcgKzEwMDUsMTEgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBtb3ZlKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgeworI2lmIENQ
VShYMzIpCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfaTMycihpbW0uYXNJbnRwdHIoKSwgZGVz
dCk7CisjZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIoaW1tLmFzSW50cHRyKCks
IGRlc3QpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW02NCBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTExOTYsNyArMTIwOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8g
QWRkcmVzcyBpcyBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNzIHRvIGp1
bXAgdG8KICAgICB2b2lkIGp1bXAoQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKKyNpZiBDUFUoWDMy
KQorICAgICAgICAvLyBPbiBYODZfNjQgKGFsc28gaW4gWDMyIG1vZGUpLCB0aGUgZGVmYXVsdCBv
cGVyYW5kIHNpemUgZm9yIGNhbGwvanVtcC9wdXNoL3BvcAorICAgICAgICAvLyBpcyA2NC1iaXQu
IFRoaXMgbWVhbnMgaWYgd2UgdXNlIGEgbWVtb3J5IG9wZXJhbmQgZm9yIHRob3NlIGluc3RydWN0
aW9ucywKKyAgICAgICAgLy8gd2UnbGwgYmUgbG9hZGluZyBhIDY0LWJpdCBkYXRhIGZyb20gdGhl
IG1lbW9yeSBhZGRyZXNzLiBJdCdzIG5vdCBvdXIgaW50ZW50aW9uLgorICAgICAgICBsb2FkMzIo
YWRkcmVzcywgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuam1wX3Ioc2Ny
YXRjaFJlZ2lzdGVyKTsKKyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLmptcF9tKGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworI2VuZGlmCiAgICAgfQogCiAKQEAgLTEzNjMsNyArMTM4
MywxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzKQogICAgIHsK
KyNpZiBDUFUoWDMyKQorICAgICAgICAvLyBPbiBYODZfNjQgKGFsc28gaW4gWDMyIG1vZGUpLCB0
aGUgZGVmYXVsdCBvcGVyYW5kIHNpemUgZm9yIGNhbGwvanVtcC9wdXNoL3BvcAorICAgICAgICAv
LyBpcyA2NC1iaXQuIFRoaXMgbWVhbnMgaWYgd2UgdXNlIGEgbWVtb3J5IG9wZXJhbmQgZm9yIHRo
b3NlIGluc3RydWN0aW9ucywKKyAgICAgICAgLy8gd2UnbGwgYmUgbG9hZGluZyBhIDY0LWJpdCBk
YXRhIGZyb20gdGhlIG1lbW9yeSBhZGRyZXNzLiBJdCdzIG5vdCBvdXIgaW50ZW50aW9uLgorICAg
ICAgICBsb2FkMzIoYWRkcmVzcywgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuY2FsbChzY3JhdGNoUmVnaXN0ZXIpOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJsZXIuY2Fs
bF9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworI2VuZGlmCiAgICAgfQogCiAgICAg
dm9pZCByZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTM0NTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxMCArMzYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKIHB1Ymxp
YzoKKyNpZiBDUFUoWDMyKQorICAgIHN0YXRpYyBjb25zdCBTY2FsZSBTY2FsZVB0ciA9IFRpbWVz
Rm91cjsKKyNlbHNlCiAgICAgc3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNFaWdo
dDsKKyNlbmRpZgogCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyOwog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphbmQzMjsKKyAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpvcjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMjsKQEAgLTEx
MCwxMiArMTE1LDM5IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RfcnIo
c2NyYXRjaFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHJvdGF0ZVJpZ2h0MzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5yb3JsX2k4cihpbW0ubV92YWx1ZSwgc3JjRHN0KTsKKyAgICB9CisKICAgICB2b2lk
IHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAg
c3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3Rv
cmUzMihSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChz
cmMgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX0VB
WG0oYWRkcmVzcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmUzMihzcmMs
IHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgSnVtcCBicmFu
Y2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0KQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9w
dHIpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQWRk
cmVzcyhzY3JhdGNoUmVnaXN0ZXIpLCByaWdodCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0
ciksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0
LCByaWdodCk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9p
ZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwg
c2NyYXRjaFJlZ2lzdGVyKTsKQEAgLTUyOCwzMyArNTYwLDUzIEBAIHB1YmxpYzoKICAgICBDb252
ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQg
PSBDb252ZXJ0aWJsZUxvYWRMYWJlbCh0aGlzKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworI2Vs
c2UKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBkZXN0KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAg
IERhdGFMYWJlbFB0ciBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW5pdGlhbFZhbHVlLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworI2lmIENQ
VShYMzIpCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfaTMycihpbml0aWFsVmFsdWUuYXNJbnRw
dHIoKSwgZGVzdCk7CisjZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIoaW5pdGlh
bFZhbHVlLmFzSW50cHRyKCksIGRlc3QpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBEYXRhTGFi
ZWxQdHIodGhpcyk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxh
YmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkK
ICAgICB7CiAgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFs
dWUsIHNjcmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQogICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFs
UmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwg
PSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIpOworI2lm
IENQVShYMzIpCisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVn
aXN0ZXIpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0
Y2hSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJX
aXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChp
bml0aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgc3Rv
cmUzMihzY3JhdGNoUmVnaXN0ZXIsIGFkZHJlc3MpOworI2Vsc2UKICAgICAgICAgc3RvcmU2NChz
Y3JhdGNoUmVnaXN0ZXIsIGFkZHJlc3MpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBsYWJlbDsK
ICAgICB9CiAgICAgCkBAIC01OTEsNyArNjQzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
Y29uc3QgaW50IHJleEJ5dGVzID0gMTsKICAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0g
MTsKLSAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gODsKKyAgICAgICAgY29uc3Qg
aW50IGltbWVkaWF0ZUJ5dGVzID0gc2l6ZW9mKHZvaWQqKTsKICAgICAgICAgY29uc3QgaW50IHRv
dGFsQnl0ZXMgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CiAgICAg
ICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CiAgICAg
ICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKQEAgLTU5OSw3ICs2
NTEsMTEgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNl
bWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3Ry
dWN0aW9uU3RhcnQsIEFkZHJlc3MsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7Ci0gICAgICAg
IFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1
ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgWDg2QXNzZW1ibGVy
OjpyZXZlcnRKdW1wVG9fbW92bF9pMzJyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJl
c3MoKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hS
ZWdpc3Rlcik7CisjZWxzZQorICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3Zx
X2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbmRpZgog
ICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTM0NTY2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgzLDYg
KzY4MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHJvcmxfaThy
KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbSA9PSAxKQor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdjEsIEdST1VQMl9P
UF9ST1IsIGRzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMl9FdkliLCBHUk9VUDJfT1BfUk9SLCBkc3QpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9CisgICAgfQorCiAjZW5kaWYK
IAogICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xMDA3LDYg
KzEwMTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9U
RVNUX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHRlc3RsX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfVEVTVF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorCiAgICAgdm9pZCB0ZXN0cV9pMzJyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0
KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2SXos
IEdST1VQM19PUF9URVNULCBkc3QpOwpAQCAtMTExMSw3ICsxMTI2LDggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01PVl9FQVhPdik7CiAjaWYgQ1BV
KFg4Nl82NCkKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnByZXRfY2Fz
dDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWRkciBpcyB6ZXJv
IGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMyIG1vZGUpLgorICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWRkcikp
OwogI2Vsc2UKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIocmVpbnRlcnByZXRfY2Fz
dDxpbnQ+KGFkZHIpKTsKICNlbmRpZgpAQCAtMTE5Myw3ICsxMjA5LDggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01PVl9PdkVBWCk7CiAjaWYgQ1BV
KFg4Nl82NCkKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnByZXRfY2Fz
dDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWRkciBpcyB6ZXJv
IGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMyIG1vZGUpLgorICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWRkcikp
OwogI2Vsc2UKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIocmVpbnRlcnByZXRfY2Fz
dDxpbnQ+KGFkZHIpKTsKICNlbmRpZgpAQCAtMTIyMywxMyArMTI0MCwxNSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBtb3ZxX21FQVgoY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9FQVhPdik7Ci0gICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8aW50NjRfdD4oYWRkcikpOworICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIGFkZHIgaXMgemVybyBleHRlbmRlZCAoaWYgaXQncyBhIDMyLWJpdCBhZGRy
IGluIFgzMiBtb2RlKS4KKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHIpKTsKICAgICB9CiAKICAgICB2b2lkIG1vdnFfRUFYbShj
b25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfTU9WX092RUFYKTsKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnBy
ZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWRkciBp
cyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMyIG1vZGUpLgorICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
YWRkcikpOwogICAgIH0KIAogICAgIHZvaWQgbW92cV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTkwMSw2ICsxOTIwLDI1IEBAIHB1YmxpYzoKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlczsgaSA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOyArK2kpCiAgICAgICAg
ICAgICBwdHJbaV0gPSB1LmFzQnl0ZXNbaSAtIHJleEJ5dGVzIC0gb3Bjb2RlQnl0ZXNdOwogICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19tb3ZsX2kzMnIodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgaW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAg
Y29uc3QgaW50IHJleEJ5dGVzID0gKGRzdCA+PSBYODZSZWdpc3RlcnM6OnI4KSA/IDEgOiAwOwor
ICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOworICAgICAgICBBU1NFUlQocmV4Qnl0
ZXMgKyBvcGNvZGVCeXRlcyA8PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICB1
aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0
KTsKKyAgICAgICAgaWYgKGRzdCA+PSBYODZSZWdpc3RlcnM6OnI4KQorICAgICAgICAgICAgcHRy
WzBdID0gUFJFX1JFWCB8IChkc3QgPj4gMyk7CisgICAgICAgIHB0cltyZXhCeXRlc10gPSBPUF9N
T1ZfRUFYSXYgfCAoZHN0ICYgNyk7CisgICAgICAgIAorICAgICAgICB1bmlvbiB7CisgICAgICAg
ICAgICB1aW50MzJfdCBhc1dvcmQ7CisgICAgICAgICAgICB1aW50OF90IGFzQnl0ZXNbNF07Cisg
ICAgICAgIH0gdTsKKyAgICAgICAgdS5hc1dvcmQgPSBpbW07CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IHJleEJ5dGVzICsgb3Bjb2RlQnl0ZXM7IGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsgKytpKQorICAgICAgICAgICAgcHRyW2ldID0gdS5h
c0J5dGVzW2kgLSByZXhCeXRlcyAtIG9wY29kZUJ5dGVzXTsKKyAgICB9CiAjZW5kaWYKICAgICAK
ICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9fY21wbF9pbV9mb3JjZTMyKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIGludDMyX3QgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMzQ1NjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NyArNzEsNyBAQCBzdHJ1Y3QgTmV3QXJyYXlCdWZmZXJEYXRhIHsKIHN0cnVjdCBPcEluZm8gewog
ICAgIGV4cGxpY2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8
dWludHB0cl90Pih2YWx1ZSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1
ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNpZiBPUyhE
QVJXSU4pIHx8IFVTRShKU1ZBTFVFNjQpCisjaWYgT1MoREFSV0lOKSB8fCAoQ1BVKFg4Nl82NCkg
JiYgIUNQVShYMzIpKQogICAgIGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1
ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAjZW5kaWYKICAgICBleHBsaWNp
dCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odmFsdWUpKSB7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTM0NTY2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAzNSw2ICsxMDM1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSYgbm9k
ZQogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIobV9qaXQuY29kZUJsb2NrKCktPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0aFBh
dGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSkpOworI2lmIENQVShYMzIpCisgICAgc2xv
d1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
Y2FsbGVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyNlbmRpZgogCiAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVDVF9PRkZT
RVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CiAgICAgbV9qaXQuc3RvcmU2
NChyZXN1bHRHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpICogSlNTdGFj
azo6U2NvcGVDaGFpbikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDEzNDU2NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
NyArMTA2LDcgQEAgY2xhc3MgRGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcjsKICNpZiBFTkFCTEUo
RVhFQ1VUQUJMRV9BTExPQ0FUT1JfRklYRUQpCiAjaWYgQ1BVKEFSTSkKIHN0YXRpYyBjb25zdCBz
aXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAxNiAqIDEwMjQgKiAxMDI0Owot
I2VsaWYgQ1BVKFg4Nl82NCkKKyNlbGlmIENQVShYODZfNjQpICYmICFDUFUoWDMyKQogc3RhdGlj
IGNvbnN0IHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSA9IDEwMjQgKiAxMDI0
ICogMTAyNDsKICNlbHNlCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9y
eVBvb2xTaXplID0gMzIgKiAxMDI0ICogMTAyNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTM0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDYgKzE5NCwxMSBAQCB2b2lk
IEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgRU5EX1VOSU5URVJSVVBU
RURfU0VRVUVOQ0Uoc2VxdWVuY2VPcENhbGwpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlKTsK
IAorI2lmIENQVShYMzIpCisgICAgLy8gVGhlIGFib3ZlIGJyYW5jaFB0ciBkb2Vzbid0IGNhdGNo
IHRoZSBjYXNlIHdoZXJlIHRoZSBjYWxsZWUgaXNuJ3QgYSBjZWxsLgorICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7CisjZW5kaWYK
KwogICAgIEFTU0VSVChtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvLnNpemUoKSA9
PSBjYWxsTGlua0luZm9JbmRleCk7CiAgICAgbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9u
SW5mby5hcHBlbmQoU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mbygpKTsKICAgICBtX2NhbGxT
dHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoQmVn
aW4gPSBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwpAQCAtMjE1LDYgKzIyMCw5IEBAIHZv
aWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2RlSUQKICAgICB9CiAKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CisjaWYgQ1BVKFgzMikKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Cisj
ZW5kaWYKICAgICAKICAgICBtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2NhbGxM
aW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWRDYWxsKG9wY29kZUlE
ID09IG9wX2NvbnN0cnVjdCA/IG1fZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aVZpcnR1YWxDb25z
dHJ1Y3RMaW5rKCkgOiBtX2dsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlWaXJ0dWFsQ2FsbExpbmso
KSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lv
biAxMzQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzY2LDYgKzM2Niw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05v
dENhdWdodCkgIjoiICIKIAogI2lmIENPTVBJTEVSKEdDQykgJiYgQ1BVKFg4Nl82NCkKIAorI2lm
ICFDUFUoWDMyKQogLy8gVGhlc2UgQVNTRVJUcyByZW1pbmQgeW91IHRoYXQsIGlmIHlvdSBjaGFu
Z2UgdGhlIGxheW91dCBvZiBKSVRTdGFja0ZyYW1lLCB5b3UKIC8vIG5lZWQgdG8gY2hhbmdlIHRo
ZSBhc3NlbWJseSB0cmFtcG9saW5lcyBiZWxvdyB0byBtYXRjaC4KIENPTVBJTEVfQVNTRVJUKG9m
ZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpID09IDB4NTgsIEpJVFN0YWNr
RnJhbWVfY2FsbEZyYW1lX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOwpAQCAtNDMyLDYg
KzQzMyw3MiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiCiAgICAg
InBvcHEgJXJicCIgIlxuIgogICAgICJyZXQiICJcbiIKICk7CisjZWxzZQorQ09NUElMRV9BU1NF
UlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgPT0gMHg0OCwgSklU
U3RhY2tGcmFtZV9jYWxsRnJhbWVfb2Zmc2V0X21hdGNoZXNfY3RpVHJhbXBvbGluZSk7CitDT01Q
SUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY29kZSkgPT0gMHg0MCwg
SklUU3RhY2tGcmFtZV9jb2RlX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOworQ09NUElM
RV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIHNhdmVkUkJYKSA9PSAweDU4
LCBKSVRTdGFja0ZyYW1lX3N0dWJfYXJndW1lbnRfc3BhY2VfbWF0Y2hlc19jdGlUcmFtcG9saW5l
KTsKKworYXNtICgKKyIudGV4dFxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBv
bGluZSkgIlxuIgorSElERV9TWU1CT0woY3RpVHJhbXBvbGluZSkgIlxuIgorU1lNQk9MX1NUUklO
RyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgorICAgICJwdXNocSAlcmJwIiAiXG4iCisgICAgIm1v
dmwgJWVzcCwgJWVicCIgIlxuIgorICAgICJwdXNocSAlcjEyIiAiXG4iCisgICAgInB1c2hxICVy
MTMiICJcbiIKKyAgICAicHVzaHEgJXIxNCIgIlxuIgorICAgICJwdXNocSAlcjE1IiAiXG4iCisg
ICAgInB1c2hxICVyYngiICJcbiIKKyAgICAvLyBGb3JtIHRoZSBKSVQgc3R1YnMgYXJlYQorICAg
ICJzdWJsICQweDU4LCAlZXNwIiAiXG4iCisgICAgIm1vdmwgJXI5ZCwgMHg1NCglZXNwKSIgIlxu
IgorICAgICJtb3ZsICVyOGQsIDB4NTAoJWVzcCkiICJcbiIKKyAgICAibW92bCAlZWN4LCAweDRj
KCVlc3ApIiAiXG4iCisgICAgIm1vdmwgJWVkeCwgMHg0OCglZXNwKSIgIlxuIgorICAgICJtb3Zs
ICVlc2ksIDB4NDQoJWVzcCkiICJcbiIKKyAgICAibW92bCAlZWRpLCAweDQwKCVlc3ApIiAiXG4i
CisgICAgIm1vdnEgJDUxMiwgJXIxMiIgIlxuIgorICAgICJtb3ZxICQweEZGRkYwMDAwMDAwMDAw
MDAsICVyMTQiICJcbiIKKyAgICAibW92cSAkMHhGRkZGMDAwMDAwMDAwMDAyLCAlcjE1IiAiXG4i
CisgICAgIm1vdmwgJWVkeCwgJXIxM2QiICJcbiIKKyAgICAiY2FsbCAqJXJkaSIgIlxuIgorICAg
ICJhZGRsICQweDU4LCAlZXNwIiAiXG4iCisgICAgInBvcHEgJXJieCIgIlxuIgorICAgICJwb3Bx
ICVyMTUiICJcbiIKKyAgICAicG9wcSAlcjE0IiAiXG4iCisgICAgInBvcHEgJXIxMyIgIlxuIgor
ICAgICJwb3BxICVyMTIiICJcbiIKKyAgICAicG9wcSAlcmJwIiAiXG4iCisgICAgInJldCIgIlxu
IgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorSElERV9T
WU1CT0woY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5l
RW5kKSAiOiIgIlxuIgorKTsKKworYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZN
VGhyb3dUcmFtcG9saW5lKSAiXG4iCitISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZSkg
IlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKKyAgICAi
bW92bCAlZXNwLCAlZWRpIiAiXG4iCisgICAgImNhbGwgIiBMT0NBTF9SRUZFUkVOQ0UoY3RpX3Zt
X3Rocm93KSAiXG4iCisgICAgImludDMiICJcbiIKKyk7CisKK2FzbSAoCisiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCitISURFX1NZTUJPTChjdGlPcFRo
cm93Tm90Q2F1Z2h0KSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6
IiAiXG4iCisgICAgImFkZGwgJDB4NTgsICVlc3AiICJcbiIKKyAgICAicG9wcSAlcmJ4IiAiXG4i
CisgICAgInBvcHEgJXIxNSIgIlxuIgorICAgICJwb3BxICVyMTQiICJcbiIKKyAgICAicG9wcSAl
cjEzIiAiXG4iCisgICAgInBvcHEgJXIxMiIgIlxuIgorICAgICJwb3BxICVyYnAiICJcbiIKKyAg
ICAicmV0IiAiXG4iCispOworI2VuZGlmCiAKICNlbHNlCiAgICAgI2Vycm9yICJKSVQgbm90IHN1
cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgJKHJldmlzaW9uIDEzNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDkgKzEwMSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAjaWYgQ1BVKFg4Nl82NCkKICAgICBzdHJ1Y3QgSklUU3RhY2tGcmFtZSB7Ci0gICAg
ICAgIHZvaWQqIHJlc2VydmVkOyAvLyBVbnVzZWQKKyAgICAgICAgaW50NjRfdCByZXNlcnZlZDsg
Ly8gVW51c2VkCiAgICAgICAgIEpJVFN0dWJBcmcgYXJnc1s2XTsKLSAgICAgICAgdm9pZCogcGFk
ZGluZ1syXTsgLy8gTWFpbnRhaW4gMzItYnl0ZSBzdGFjayBhbGlnbm1lbnQgKHBvc3NpYmx5IG92
ZXJraWxsKS4KKyAgICAgICAgdm9pZCogcGFkZGluZ1syXTsgLy8gTWFpbnRhaW4gMTYtYnl0ZSBz
dGFjayBhbGlnbm1lbnQuCiAKICAgICAgICAgdm9pZCogY29kZTsKICAgICAgICAgSlNTdGFjayog
c3RhY2s7CkBAIC0xMTIsMTYgKzExMiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCogdW51c2VkMjsKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOwogCi0gICAgICAg
IHZvaWQqIHNhdmVkUkJYOwotICAgICAgICB2b2lkKiBzYXZlZFIxNTsKLSAgICAgICAgdm9pZCog
c2F2ZWRSMTQ7Ci0gICAgICAgIHZvaWQqIHNhdmVkUjEzOwotICAgICAgICB2b2lkKiBzYXZlZFIx
MjsKLSAgICAgICAgdm9pZCogc2F2ZWRSQlA7Ci0gICAgICAgIHZvaWQqIHNhdmVkUklQOworICAg
ICAgICBpbnQ2NF90IHNhdmVkUkJYOworICAgICAgICBpbnQ2NF90IHNhdmVkUjE1OworICAgICAg
ICBpbnQ2NF90IHNhdmVkUjE0OworICAgICAgICBpbnQ2NF90IHNhdmVkUjEzOworICAgICAgICBp
bnQ2NF90IHNhdmVkUjEyOworICAgICAgICBpbnQ2NF90IHNhdmVkUkJQOworICAgICAgICBpbnQ2
NF90IHNhdmVkUklQOwogCiAgICAgICAgIC8vIFdoZW4gSklUIGNvZGUgbWFrZXMgYSBjYWxsLCBp
dCBwdXNoZXMgaXRzIHJldHVybiBhZGRyZXNzIGp1c3QgYmVsb3cgdGhlIHJlc3Qgb2YgdGhlIHN0
YWNrLgorI2lmIENQVShYMzIpCisgICAgICAgIC8vIE9uIFgzMiB0aGUgcmV0dXJuIGFkZHJlc3Mg
b2NjdXBpZXMgYSA4LWJ5dGUgc2xvdCAod2l0aCB0aGUgaGlnaGVyIDQgYnl0ZXMgemVybydlZCkK
KyAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciogcmV0dXJuQWRkcmVzc1Nsb3QoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PFJldHVybkFkZHJlc3NQdHIqPih0aGlzKSAtIDI7IH0KKyNlbHNlCiAg
ICAgICAgIFJldHVybkFkZHJlc3NQdHIqIHJldHVybkFkZHJlc3NTbG90KCkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxSZXR1cm5BZGRyZXNzUHRyKj4odGhpcykgLSAxOyB9CisjZW5kaWYKICAg
ICB9OwogI2VsaWYgQ1BVKFg4NikKICNpZiBDT01QSUxFUihNU1ZDKSB8fCAoT1MoV0lORE9XUykg
JiYgQ09NUElMRVIoR0NDKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGNoUmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0Y2hSZXN1bHQuaAkocmV2aXNpb24gMTM0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsMTcgQEAg
c3RydWN0IE1hdGNoUmVzdWx0IHsKICAgICAgICAgcmV0dXJuIHN0YXJ0ID09IGVuZDsKICAgICB9
CiAKKyNpZiBDUFUoWDMyKQorICAgIC8vIE9uIFgzMiwgc2l6ZV90IGlzIDMyLWJpdCB3aGlsZSB0
aGUgcmVnaXN0ZXIgc2l6ZSBpcyA2NC1iaXQuCisgICAgLy8gTWFrZSBlYWNoIG1lbWJlciB0byBi
ZSA2NC1iaXQgc28gdGhhdCB0aGV5IHdpbGwgYmUgcGxhY2VkIGluIHR3byByZWdpc3RlcnMKKyAg
ICAvLyB3aGVuIGEgZnVuY3Rpb24gKGEgWWFyciBKSVQgZnVuY3Rpb24pIHJldHVybnMgYSBNYXRj
aFJlc3VsdCBzdHJ1Y3R1cmUsCisgICAgLy8gYSBiZWhhdmlvciBjb25zaXN0ZW50IHdpdGggYW55
IG90aGVyIGFyY2hpdGVjdHVyZS4KKyAgICB1aW50NjRfdCBzdGFydDsKKyAgICB1aW50NjRfdCBl
bmQ7CisjZWxzZQogICAgIHNpemVfdCBzdGFydDsKICAgICBzaXplX3QgZW5kOworI2VuZGlmCiB9
OwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzQ1NzQpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTEzICBZdXFpYW5n
IFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgorCisgICAgICAgIHgzMiBiYWNrZW5kIG9m
IHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmVjZXNzYXJ5IGNoYW5nZXMgdG8gc3VwcG9ydCB4
MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogQWRk
IHRoZSBkZWZpbml0aW9uIG9mIENQVShYMzIpCisKIDIwMTItMTEtMTMgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBVc2UgcHJlZml4IGZv
cm0gb2YgaW5jcmVtZW50IC8gZGVjcmVtZW50IG9wZXJhdG9ycyBpbiBXVEYgU3RyaW5nIGNsYXNz
ZXMgd2hlbiBwb3NzaWJsZQpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMzQ1NjYpCisrKyBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDkg
QEAKICNpZiAgIGRlZmluZWQoX194ODZfNjRfXykgXAogICAgIHx8IGRlZmluZWQoX01fWDY0KQog
I2RlZmluZSBXVEZfQ1BVX1g4Nl82NCAxCisjaWYgZGVmaW5lZChfX0lMUDMyX18pCisjZGVmaW5l
IFdURl9DUFVfWDMyIDEKKyNlbmRpZgogI2VuZGlmCiAKIC8qIENQVShBUk0pIC0gQVJNLCBhbnkg
dmVyc2lvbiovCg==
</data>
<flag name="commit-queue"
          id="189353"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176380</attachid>
            <date>2012-11-27 18:06:37 -0800</date>
            <delta_ts>2013-01-03 19:42:56 -0800</delta_ts>
            <desc>Rebased again</desc>
            <filename>100450.2.patch</filename>
            <type>text/plain</type>
            <size>28308</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1OTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDEyLTExLTEzICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgorCisg
ICAgICAgIHgzMiBiYWNrZW5kIG9mIHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmVjZXNzYXJ5
IGNoYW5nZXMgdG8gc3VwcG9ydCB4MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoVHJ1c3RlZElt
bTMyKToKKyAgICAgICAgKEltbTMyKToKKyAgICAgICAgKFRydXN0ZWRJbW02NCk6CisgICAgICAg
IChJbW02NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpjb21wYXJl
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnJvdGF0ZVJpZ2h0
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnB1c2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGwp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNvbnZlcnRpYmxlTG9hZFB0cik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojptb3ZlV2l0aFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaFB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnJldmVy
dEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
cm9ybF9pOHIpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjp0ZXN0bF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9tRUFY
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX0VBWG0pOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdnFfbUVBWCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bW92cV9FQVhtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92
bF9pMzJyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoT3BJbmZvKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5oOgorICAgICAgICAoSklUU3RhY2tGcmFtZSk6CisgICAgICAgIChKU0M6
OkpJVFN0YWNrRnJhbWU6OnJldHVybkFkZHJlc3NTbG90KToKKyAgICAgICAgKiBydW50aW1lL01h
dGNoUmVzdWx0Lmg6CisgICAgICAgIChNYXRjaFJlc3VsdCk6CisKIDIwMTItMTEtMjcgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaW5kZW50YXRpb24gaW4g
SlNWYWx1ZS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTM1OTQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0jaWYgIUNQVShYODZfNjQpCisjaWYgIUNQVShYODZfNjQpIHx8IENQVShYMzIpCiAg
ICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAg
ICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewpAQCAtMjUxLDcgKzI1MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTMyKHZhbHVlKQogICAgICAgICB7
CiAgICAgICAgIH0KLSNpZiAhQ1BVKFg4Nl82NCkKKyNpZiAhQ1BVKFg4Nl82NCkgfHwgQ1BVKFgz
MikKICAgICAgICAgZXhwbGljaXQgSW1tMzIoVHJ1c3RlZEltbVB0ciBwdHIpCiAgICAgICAgICAg
ICA6IFRydXN0ZWRJbW0zMihwdHIpCiAgICAgICAgIHsKQEAgLTI3NSw3ICsyNzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0jaWYgQ1BVKFg4Nl82NCkKKyNpZiBDUFUoWDg2
XzY0KSAmJiAhQ1BVKFgzMikKICAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTY0KFRydXN0ZWRJ
bW1QdHIgcHRyKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHB0ci5hc0ludHB0cigpKQogICAgICAg
ICB7CkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiBUcnVzdGVkSW1t
NjQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQotI2lmIENQVShYODZfNjQpCisjaWYgQ1BV
KFg4Nl82NCkgJiYgIUNQVShYMzIpCiAgICAgICAgIGV4cGxpY2l0IEltbTY0KFRydXN0ZWRJbW1Q
dHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQocHRyKQogICAgICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
CShyZXZpc2lvbiAxMzU5NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUHRyIG1ldGhvZHMKICAgICAvLyBPbiAzMi1iaXQgcGxhdGZvcm1zIChpLmUuIHg4
NiksIHRoZXNlIG1ldGhvZHMgZGlyZWN0bHkgbWFwIG9udG8gdGhlaXIgMzItYml0IGVxdWl2YWxl
bnRzLgogICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyB1c2UgYSB0ZXN0IGZvciAzMi1iaXRuZXNz
IGluc3RlYWQgb2YgdGhpcyBzcGVjaWZpYyBleGNlcHRpb24/Ci0jaWYgIUNQVShYODZfNjQpCisj
aWYgIUNQVShYODZfNjQpIHx8IENQVShYMzIpCiAgICAgdm9pZCBhZGRQdHIoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKHNyYywgZGVzdCk7CkBAIC00
NDAsMTYgKzQ0MCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsb2FkMzJXaXRoQ29tcGFj
dEFkZHJlc3NPZmZzZXRQYXRjaChhZGRyZXNzLCBkZXN0KTsKICAgICB9CiAKLSAgICB2b2lkIG1v
dmUoSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgY29tcGFyZVB0cihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKEltbTMyKGltbS5hc1RydXN0
ZWRJbW1QdHIoKSksIGRlc3QpOworICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgcmlnaHQs
IGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGFyZVB0cihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgcmlnaHQsIGRlc3QpOwogICAgIH0KLQorICAgIAog
ICAgIHZvaWQgc3RvcmVQdHIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgc3RvcmUzMihzcmMsIGFkZHJlc3MpOwpAQCAtNDcwLDExICs0NzAs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGltbSksIGFkZHJlc3Mp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHN0b3JlUHRyKEltbVB0ciBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKLSAgICB7Ci0gICAgICAgIHN0b3JlMzIoSW1tMzIoaW1tLmFzVHJ1c3RlZEltbVB0cigp
KSwgYWRkcmVzcyk7Ci0gICAgfQotCiAgICAgdm9pZCBzdG9yZVB0cihUcnVzdGVkSW1tUHRyIGlt
bSwgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGlt
bSksIGFkZHJlc3MpOwpAQCAtNDk0LDExICs0ODksNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHJpZ2h0KSk7CiAgICAg
fQotICAgIAotICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBJbW1QdHIgcmlnaHQpCi0gICAgewotICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgbGVmdCwgSW1tMzIocmlnaHQuYXNUcnVzdGVkSW1tUHRyKCkpKTsKLSAgICB9CiAK
ICAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgQWRkcmVzcyByaWdodCkKICAgICB7CkBAIC01NjQsNiArNTU0LDI4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFRlc3Q4KGNv
bmQsIEFkZHJlc3MoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCksIG1hc2spOwogICAgIH0K
KworI2lmICFDUFUoWDg2XzY0KQorICAgIHZvaWQgbW92ZShJbW1QdHIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKEltbTMyKGltbS5hc1RydXN0ZWRJbW1QdHIoKSks
IGRlc3QpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQdHIoSW1tUHRyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3RvcmUzMihJbW0zMihpbW0uYXNUcnVzdGVkSW1tUHRy
KCkpLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tUHRyIHJpZ2h0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIEltbTMyKHJpZ2h0LmFzVHJ1c3RlZEltbVB0
cigpKSk7CisgICAgfQorI2Vsc2UKKyAgICB2b2lkIHJvdGF0ZVJpZ2h0UHRyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjRHN0KQorICAgIHsKKyAgICAgICAgcm90YXRlUmlnaHQzMihp
bW0sIHNyY0RzdCk7CisgICAgfQorI2VuZGlmCiAjZWxzZQogICAgIHZvaWQgYWRkUHRyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtODM5LDYgKzg1MSw5IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2NChjb25kLCBzcmMxLCBzcmMy
LCBkZXN0KTsKICAgICB9CisjZW5kaWYgLy8gIUNQVShYODZfNjQpIHx8IENQVShYMzIpCisKKyNp
ZiBDUFUoWDg2XzY0KQogCiAjaWYgRU5BQkxFKEpJVF9DT05TVEFOVF9CTElORElORykKICAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmFuZDY0OwpAQCAtODgzLDEwICs4OTgsMTIgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIDB4ZmZmZjoKICAgICAgICAgY2FzZSAweGZmZmZmZjoKICAgICAg
ICAgY2FzZSAweGZmZmZmZmZmTDoKKyNpZiAhQ1BVKFgzMikKICAgICAgICAgY2FzZSAweGZmZmZm
ZmZmZmZMOgogICAgICAgICBjYXNlIDB4ZmZmZmZmZmZmZmZmTDoKICAgICAgICAgY2FzZSAweGZm
ZmZmZmZmZmZmZmZmTDoKICAgICAgICAgY2FzZSAweGZmZmZmZmZmZmZmZmZmZmZMOgorI2VuZGlm
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAg
ICAgIGlmICh2YWx1ZSA8PSAweGZmKQpAQCAtMTA2Miw3ICsxMDc5LDcgQEAgcHVibGljOgogCiAj
ZW5kaWYKIAotI2VuZGlmIC8vICFDUFUoWDg2XzY0KQorI2VuZGlmIC8vIENQVShYODZfNjQpCiAK
ICNpZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQogICAgIGJvb2wgc2hvdWxkQmxpbmQo
SW1tMzIgaW1tKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMTM1OTQ2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NjMsNyArOTYzLDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cHVzaChBZGRyZXNzIGFkZHJlc3MpCiAgICAgeworI2lmIENQVShYMzIpCisgICAgICAgIC8vIE9u
IFg4Nl82NCAoYWxzbyBpbiBYMzIgbW9kZSksIHRoZSBkZWZhdWx0IG9wZXJhbmQgc2l6ZSBmb3Ig
Y2FsbC9qdW1wL3B1c2gvcG9wCisgICAgICAgIC8vIGlzIDY0LWJpdC4gVGhpcyBtZWFucyBpZiB3
ZSB1c2UgYSBtZW1vcnkgb3BlcmFuZCBmb3IgdGhvc2UgaW5zdHJ1Y3Rpb25zLAorICAgICAgICAv
LyB3ZSdsbCBiZSBsb2FkaW5nIGEgNjQtYml0IGRhdGEgZnJvbSB0aGUgbWVtb3J5IGFkZHJlc3Mu
IEl0J3Mgbm90IG91ciBpbnRlbnRpb24uCisgICAgICAgIGxvYWQzMihhZGRyZXNzLCBzY3JhdGNo
UmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5wdXNoX3Ioc2NyYXRjaFJlZ2lzdGVyKTsK
KyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLnB1c2hfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgcHVzaChUcnVzdGVkSW1tMzIgaW1t
KQpAQCAtOTk3LDcgKzEwMDUsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBtb3ZlKFRydXN0ZWRJ
bW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgeworI2lmIENQVShYMzIpCisgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxfaTMycihpbW0uYXNJbnRwdHIoKSwgZGVzdCk7CisjZWxzZQogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIoaW1tLmFzSW50cHRyKCksIGRlc3QpOworI2VuZGlm
CiAgICAgfQogCiAgICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTExOTYsNyArMTIwOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gQWRkcmVzcyBpcyBhIG1l
bW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNzIHRvIGp1bXAgdG8KICAgICB2b2lk
IGp1bXAoQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKKyNpZiBDUFUoWDMyKQorICAgICAgICAvLyBP
biBYODZfNjQgKGFsc28gaW4gWDMyIG1vZGUpLCB0aGUgZGVmYXVsdCBvcGVyYW5kIHNpemUgZm9y
IGNhbGwvanVtcC9wdXNoL3BvcAorICAgICAgICAvLyBpcyA2NC1iaXQuIFRoaXMgbWVhbnMgaWYg
d2UgdXNlIGEgbWVtb3J5IG9wZXJhbmQgZm9yIHRob3NlIGluc3RydWN0aW9ucywKKyAgICAgICAg
Ly8gd2UnbGwgYmUgbG9hZGluZyBhIDY0LWJpdCBkYXRhIGZyb20gdGhlIG1lbW9yeSBhZGRyZXNz
LiBJdCdzIG5vdCBvdXIgaW50ZW50aW9uLgorICAgICAgICBsb2FkMzIoYWRkcmVzcywgc2NyYXRj
aFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuam1wX3Ioc2NyYXRjaFJlZ2lzdGVyKTsK
KyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLmptcF9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworI2VuZGlmCiAgICAgfQogCiAKQEAgLTEzNjMsNyArMTM4MywxNSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKKyNpZiBDUFUoWDMyKQor
ICAgICAgICAvLyBPbiBYODZfNjQgKGFsc28gaW4gWDMyIG1vZGUpLCB0aGUgZGVmYXVsdCBvcGVy
YW5kIHNpemUgZm9yIGNhbGwvanVtcC9wdXNoL3BvcAorICAgICAgICAvLyBpcyA2NC1iaXQuIFRo
aXMgbWVhbnMgaWYgd2UgdXNlIGEgbWVtb3J5IG9wZXJhbmQgZm9yIHRob3NlIGluc3RydWN0aW9u
cywKKyAgICAgICAgLy8gd2UnbGwgYmUgbG9hZGluZyBhIDY0LWJpdCBkYXRhIGZyb20gdGhlIG1l
bW9yeSBhZGRyZXNzLiBJdCdzIG5vdCBvdXIgaW50ZW50aW9uLgorICAgICAgICBsb2FkMzIoYWRk
cmVzcywgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY2FsbChzY3JhdGNo
UmVnaXN0ZXIpOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJsZXIuY2FsbF9tKGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCByZXQoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTM1OTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwx
MCArMzYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0
IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKIHB1YmxpYzoKKyNpZiBDUFUoWDMy
KQorICAgIHN0YXRpYyBjb25zdCBTY2FsZSBTY2FsZVB0ciA9IFRpbWVzRm91cjsKKyNlbHNlCiAg
ICAgc3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNFaWdodDsKKyNlbmRpZgogCiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyOwogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjphbmQzMjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6YnJhbmNoMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5j
aEFkZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMjsKQEAgLTExMCwxMiArMTE1LDM5IEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RfcnIoc2NyYXRjaFJlZ2lzdGVy
LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHJvdGF0ZVJpZ2h0MzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmNEc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5yb3JsX2k4
cihpbW0ubV92YWx1ZSwgc3JjRHN0KTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNj
cmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklE
IHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChzcmMgPT0gWDg2UmVnaXN0
ZXJzOjplYXgpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX0VBWG0oYWRkcmVzcyk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBz
Y3JhdGNoUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmUzMihzcmMsIHNjcmF0Y2hSZWdpc3Rl
cik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQor
ICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBzY3JhdGNoUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVn
aXN0ZXIpLCByaWdodCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisg
ICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIHNjcmF0Y2hSZWdp
c3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodCk7CisgICAg
fQorCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVy
KTsKQEAgLTUyOCwzMyArNTYwLDUzIEBAIHB1YmxpYzoKICAgICBDb252ZXJ0aWJsZUxvYWRMYWJl
bCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQgPSBDb252ZXJ0aWJsZUxv
YWRMYWJlbCh0aGlzKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX21y
KGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworI2Vsc2UKICAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKKyNl
bmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIERhdGFMYWJlbFB0ciBt
b3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworI2lmIENQVShYMzIpCisgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxfaTMycihpbml0aWFsVmFsdWUuYXNJbnRwdHIoKSwgZGVzdCk7Cisj
ZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIoaW5pdGlhbFZhbHVlLmFzSW50cHRy
KCksIGRlc3QpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1t
UHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAgICAg
IGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIHNjcmF0Y2hSZWdp
c3Rlcik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQs
IHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQogICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwg
bGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEp1bXAgYnJhbmNo
UHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRh
TGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRy
dXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNo
KGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIpOworI2lmIENQVShYMzIpCisgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOworI2Vsc2UK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7Cisj
ZW5kaWYKICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3Rl
ZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNj
cmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgc3RvcmUzMihzY3JhdGNoUmVn
aXN0ZXIsIGFkZHJlc3MpOworI2Vsc2UKICAgICAgICAgc3RvcmU2NChzY3JhdGNoUmVnaXN0ZXIs
IGFkZHJlc3MpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAgICAgCkBA
IC01OTEsNyArNjQzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgY29uc3QgaW50IHJleEJ5
dGVzID0gMTsKICAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKLSAgICAgICAgY29u
c3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gODsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5
dGVzID0gc2l6ZW9mKHZvaWQqKTsKICAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSByZXhC
eXRlcyArIG9wY29kZUJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CiAgICAgICAgIEFTU0VSVCh0b3Rh
bEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CiAgICAgICAgIHJldHVybiBsYWJl
bC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKQEAgLTYwNCwxMiArNjU2LDIwIEBAIHB1Ymxp
YzoKICAgICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBB
ZGRyZXNzLCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewotICAgICAgICBYODZBc3NlbWJsZXI6
OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVz
cygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVn
aXN0ZXIpOworI2lmIENQVShYMzIpCisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRv
X21vdmxfaTMycihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworI2Vs
c2UKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0
aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2Rl
TG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0aWFs
VmFsdWUpCiAgICAgewotICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2
NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0
PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworI2lmIENQVShYMzIp
CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdmxfaTMycihpbnN0cnVjdGlv
blN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworI2Vsc2UKKyAgICAgICAgWDg2QXNzZW1i
bGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0
Y2hSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzNTk0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4Myw2ICs2ODMsMTYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogCisgICAgdm9pZCByb3JsX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIGlmIChpbW0gPT0gMSkKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDJfRXYxLCBHUk9VUDJfT1BfUk9SLCBkc3QpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDJfRXZJYiwgR1JPVVAyX09QX1JP
UiwgZHN0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KKwogI2VuZGlmCiAKICAgICB2b2lkIHNhcmxfaThyKGludCBpbW0sIFJlZ2lz
dGVySUQgZHN0KQpAQCAtMTAwNyw2ICsxMDE3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfVEVTVF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCB0ZXN0bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1RFU1Rf
RXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgdGVzdHFfaTMycihp
bnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgZHN0KTsKQEAgLTExMTEsNyAr
MTEyNiw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9NT1ZfRUFYT3YpOwogI2lmIENQVShYODZfNjQpCi0gICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8aW50NjRfdD4oYWRkcikpOworICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIGFkZHIgaXMgemVybyBleHRlbmRlZCAoaWYgaXQncyBhIDMyLWJpdCBhZGRyIGlu
IFgzMiBtb2RlKS4KKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGFkZHIpKTsKICNlbHNlCiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTMyKHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihhZGRyKSk7CiAjZW5kaWYKQEAgLTExOTMsNyAr
MTIwOSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9NT1ZfT3ZFQVgpOwogI2lmIENQVShYODZfNjQpCi0gICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8aW50NjRfdD4oYWRkcikpOworICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIGFkZHIgaXMgemVybyBleHRlbmRlZCAoaWYgaXQncyBhIDMyLWJpdCBhZGRyIGlu
IFgzMiBtb2RlKS4KKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGFkZHIpKTsKICNlbHNlCiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTMyKHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihhZGRyKSk7CiAjZW5kaWYKQEAgLTEyMjMsMTMg
KzEyNDAsMTUgQEAgcHVibGljOgogICAgIHZvaWQgbW92cV9tRUFYKGNvbnN0IHZvaWQqIGFkZHIp
CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfRUFYT3YpOwot
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+
KGFkZHIpKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZGRyIGlzIHplcm8gZXh0ZW5kZWQg
KGlmIGl0J3MgYSAzMi1iaXQgYWRkciBpbiBYMzIgbW9kZSkuCisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhZGRyKSk7CiAgICAgfQog
CiAgICAgdm9pZCBtb3ZxX0VBWG0oY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9PdkVBWCk7Ci0gICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8aW50NjRfdD4oYWRkcikpOworICAgICAgICAv
LyBNYWtlIHN1cmUgdGhlIGFkZHIgaXMgemVybyBleHRlbmRlZCAoaWYgaXQncyBhIDMyLWJpdCBh
ZGRyIGluIFgzMiBtb2RlKS4KKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHIpKTsKICAgICB9CiAKICAgICB2b2lkIG1vdnFfbXIo
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE5MDEsNiAr
MTkyMCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJleEJ5dGVzICsg
b3Bjb2RlQnl0ZXM7IGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpKTsgKytpKQogICAgICAgICAgICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSByZXhCeXRl
cyAtIG9wY29kZUJ5dGVzXTsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9f
bW92bF9pMzJyKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIGludDMyX3QgaW1tLCBSZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCByZXhCeXRlcyA9IChkc3QgPj0gWDg2UmVn
aXN0ZXJzOjpyOCkgPyAxIDogMDsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsK
KyAgICAgICAgQVNTRVJUKHJleEJ5dGVzICsgb3Bjb2RlQnl0ZXMgPD0gbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpKTsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGlmIChkc3QgPj0gWDg2UmVnaXN0ZXJz
OjpyOCkKKyAgICAgICAgICAgIHB0clswXSA9IFBSRV9SRVggfCAoZHN0ID4+IDMpOworICAgICAg
ICBwdHJbcmV4Qnl0ZXNdID0gT1BfTU9WX0VBWEl2IHwgKGRzdCAmIDcpOworICAgICAgICAKKyAg
ICAgICAgdW5pb24geworICAgICAgICAgICAgdWludDMyX3QgYXNXb3JkOworICAgICAgICAgICAg
dWludDhfdCBhc0J5dGVzWzRdOworICAgICAgICB9IHU7CisgICAgICAgIHUuYXNXb3JkID0gaW1t
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzOyBpIDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7ICsraSkKKyAg
ICAgICAgICAgIHB0cltpXSA9IHUuYXNCeXRlc1tpIC0gcmV4Qnl0ZXMgLSBvcGNvZGVCeXRlc107
CisgICAgfQogI2VuZGlmCiAgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX2NtcGxf
aXJfZm9yY2UzMih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBpbnQzMl90IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTM1
OTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7CiBzdHJ1Y3Qg
T3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8odWlu
dDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9
Ci0jaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQorI2lmIE9TKERBUldJTikgfHwgKENQ
VShYODZfNjQpICYmICFDUFUoWDMyKSkKICAgICBleHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVl
KSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQogI2VuZGlmCiAg
ICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzNTk0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMzUsNiArMTAzNSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUmIG5vZGUKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1faml0LmNvZGVCbG9j
aygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5j
aFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0
VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpKTsKKyNpZiBDUFUoWDMy
KQorICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIGNhbGxlZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisjZW5kaWYK
IAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRHUFIpOwogICAgIG1f
aml0LnN0b3JlNjQocmVzdWx0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIp
KSAqIEpTU3RhY2s6OlNjb3BlQ2hhaW4pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZpc2lvbiAxMzU5NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3I7CiAj
aWYgRU5BQkxFKEVYRUNVVEFCTEVfQUxMT0NBVE9SX0ZJWEVEKQogI2lmIENQVShBUk0pCiBzdGF0
aWMgY29uc3Qgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xTaXplID0gMTYgKiAxMDI0
ICogMTAyNDsKLSNlbGlmIENQVShYODZfNjQpCisjZWxpZiBDUFUoWDg2XzY0KSAmJiAhQ1BVKFgz
MikKIHN0YXRpYyBjb25zdCBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAx
MDI0ICogMTAyNCAqIDEwMjQ7CiAjZWxzZQogc3RhdGljIGNvbnN0IHNpemVfdCBmaXhlZEV4ZWN1
dGFibGVNZW1vcnlQb29sU2l6ZSA9IDMyICogMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDEzNTk0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw2ICsxOTQs
MTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIEVORF9V
TklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlT3BDYWxsKTsKICAgICBhZGRTbG93Q2FzZShz
bG93Q2FzZSk7CiAKKyNpZiBDUFUoWDMyKQorICAgIC8vIFRoZSBhYm92ZSBicmFuY2hQdHIgZG9l
c24ndCBjYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgY2FsbGVlIGlzbid0IGEgY2VsbC4KKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcikp
OworI2VuZGlmCisKICAgICBBU1NFUlQobV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5m
by5zaXplKCkgPT0gY2FsbExpbmtJbmZvSW5kZXgpOwogICAgIG1fY2FsbFN0cnVjdHVyZVN0dWJD
b21waWxhdGlvbkluZm8uYXBwZW5kKFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm8oKSk7CiAg
ICAgbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0u
aG90UGF0aEJlZ2luID0gYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKQEAgLTIxNSw2ICsy
MjAsOSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKE9wY29kZUlECiAgICAgfQog
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworI2lmIENQVShYMzIpCisgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOworI2VuZGlmCiAgICAgCiAgICAgbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9u
SW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2VkQ2Fs
bChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3QgPyBtX2dsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlW
aXJ0dWFsQ29uc3RydWN0TGluaygpIDogbV9nbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpVmlydHVh
bENhbGxMaW5rKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAkocmV2aXNpb24gMTM1OTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw2ICszNjYsNyBAQCBTWU1CT0xfU1RSSU5HKGN0
aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiCiAKICNpZiBDT01QSUxFUihHQ0MpICYmIENQVShYODZf
NjQpCiAKKyNpZiAhQ1BVKFgzMikKIC8vIFRoZXNlIEFTU0VSVHMgcmVtaW5kIHlvdSB0aGF0LCBp
ZiB5b3UgY2hhbmdlIHRoZSBsYXlvdXQgb2YgSklUU3RhY2tGcmFtZSwgeW91CiAvLyBuZWVkIHRv
IGNoYW5nZSB0aGUgYXNzZW1ibHkgdHJhbXBvbGluZXMgYmVsb3cgdG8gbWF0Y2guCiBDT01QSUxF
X0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSA9PSAweDU4
LCBKSVRTdGFja0ZyYW1lX2NhbGxGcmFtZV9vZmZzZXRfbWF0Y2hlc19jdGlUcmFtcG9saW5lKTsK
QEAgLTQzMiw2ICs0MzMsNzIgQEAgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAi
OiIgIgogICAgICJwb3BxICVyYnAiICJcbiIKICAgICAicmV0IiAiXG4iCiApOworI2Vsc2UKK0NP
TVBJTEVfQVNTRVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpID09
IDB4NDgsIEpJVFN0YWNrRnJhbWVfY2FsbEZyYW1lX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xp
bmUpOworQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNvZGUp
ID09IDB4NDAsIEpJVFN0YWNrRnJhbWVfY29kZV9vZmZzZXRfbWF0Y2hlc19jdGlUcmFtcG9saW5l
KTsKK0NPTVBJTEVfQVNTRVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBzYXZlZFJC
WCkgPT0gMHg1OCwgSklUU3RhY2tGcmFtZV9zdHViX2FyZ3VtZW50X3NwYWNlX21hdGNoZXNfY3Rp
VHJhbXBvbGluZSk7CisKK2FzbSAoCisiLnRleHRcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGN0aVRyYW1wb2xpbmUpICJcbiIKK0hJREVfU1lNQk9MKGN0aVRyYW1wb2xpbmUpICJcbiIKK1NZ
TUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIjoiICJcbiIKKyAgICAicHVzaHEgJXJicCIgIlxu
IgorICAgICJtb3ZsICVlc3AsICVlYnAiICJcbiIKKyAgICAicHVzaHEgJXIxMiIgIlxuIgorICAg
ICJwdXNocSAlcjEzIiAiXG4iCisgICAgInB1c2hxICVyMTQiICJcbiIKKyAgICAicHVzaHEgJXIx
NSIgIlxuIgorICAgICJwdXNocSAlcmJ4IiAiXG4iCisgICAgLy8gRm9ybSB0aGUgSklUIHN0dWJz
IGFyZWEKKyAgICAic3VibCAkMHg1OCwgJWVzcCIgIlxuIgorICAgICJtb3ZsICVyOWQsIDB4NTQo
JWVzcCkiICJcbiIKKyAgICAibW92bCAlcjhkLCAweDUwKCVlc3ApIiAiXG4iCisgICAgIm1vdmwg
JWVjeCwgMHg0YyglZXNwKSIgIlxuIgorICAgICJtb3ZsICVlZHgsIDB4NDgoJWVzcCkiICJcbiIK
KyAgICAibW92bCAlZXNpLCAweDQ0KCVlc3ApIiAiXG4iCisgICAgIm1vdmwgJWVkaSwgMHg0MCgl
ZXNwKSIgIlxuIgorICAgICJtb3ZxICQ1MTIsICVyMTIiICJcbiIKKyAgICAibW92cSAkMHhGRkZG
MDAwMDAwMDAwMDAwLCAlcjE0IiAiXG4iCisgICAgIm1vdnEgJDB4RkZGRjAwMDAwMDAwMDAwMiwg
JXIxNSIgIlxuIgorICAgICJtb3ZsICVlZHgsICVyMTNkIiAiXG4iCisgICAgImNhbGwgKiVyZGki
ICJcbiIKKyAgICAiYWRkbCAkMHg1OCwgJWVzcCIgIlxuIgorICAgICJwb3BxICVyYngiICJcbiIK
KyAgICAicG9wcSAlcjE1IiAiXG4iCisgICAgInBvcHEgJXIxNCIgIlxuIgorICAgICJwb3BxICVy
MTMiICJcbiIKKyAgICAicG9wcSAlcjEyIiAiXG4iCisgICAgInBvcHEgJXJicCIgIlxuIgorICAg
ICJyZXQiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmVFbmQpICJc
biIKK0hJREVfU1lNQk9MKGN0aVRyYW1wb2xpbmVFbmQpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3Rp
VHJhbXBvbGluZUVuZCkgIjoiICJcbiIKKyk7CisKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIlxuIgorSElERV9TWU1CT0woY3RpVk1UaHJvd1Ry
YW1wb2xpbmUpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAi
XG4iCisgICAgIm1vdmwgJWVzcCwgJWVkaSIgIlxuIgorICAgICJjYWxsICIgTE9DQUxfUkVGRVJF
TkNFKGN0aV92bV90aHJvdykgIlxuIgorICAgICJpbnQzIiAiXG4iCispOworCithc20gKAorIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgorSElERV9TWU1C
T0woY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90
Q2F1Z2h0KSAiOiIgIlxuIgorICAgICJhZGRsICQweDU4LCAlZXNwIiAiXG4iCisgICAgInBvcHEg
JXJieCIgIlxuIgorICAgICJwb3BxICVyMTUiICJcbiIKKyAgICAicG9wcSAlcjE0IiAiXG4iCisg
ICAgInBvcHEgJXIxMyIgIlxuIgorICAgICJwb3BxICVyMTIiICJcbiIKKyAgICAicG9wcSAlcmJw
IiAiXG4iCisgICAgInJldCIgIlxuIgorKTsKKyNlbmRpZgogCiAjZWxzZQogICAgICNlcnJvciAi
SklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMzU5NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw5ICsxMDEsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogI2lmIENQVShYODZfNjQpCiAgICAgc3RydWN0IEpJVFN0YWNrRnJh
bWUgewotICAgICAgICB2b2lkKiByZXNlcnZlZDsgLy8gVW51c2VkCisgICAgICAgIGludDY0X3Qg
cmVzZXJ2ZWQ7IC8vIFVudXNlZAogICAgICAgICBKSVRTdHViQXJnIGFyZ3NbNl07Ci0gICAgICAg
IHZvaWQqIHBhZGRpbmdbMl07IC8vIE1haW50YWluIDMyLWJ5dGUgc3RhY2sgYWxpZ25tZW50IChw
b3NzaWJseSBvdmVya2lsbCkuCisgICAgICAgIHZvaWQqIHBhZGRpbmdbMl07IC8vIE1haW50YWlu
IDE2LWJ5dGUgc3RhY2sgYWxpZ25tZW50LgogCiAgICAgICAgIHZvaWQqIGNvZGU7CiAgICAgICAg
IEpTU3RhY2sqIHN0YWNrOwpAQCAtMTEyLDE2ICsxMTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQqIHVudXNlZDI7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YTsK
IAotICAgICAgICB2b2lkKiBzYXZlZFJCWDsKLSAgICAgICAgdm9pZCogc2F2ZWRSMTU7Ci0gICAg
ICAgIHZvaWQqIHNhdmVkUjE0OwotICAgICAgICB2b2lkKiBzYXZlZFIxMzsKLSAgICAgICAgdm9p
ZCogc2F2ZWRSMTI7Ci0gICAgICAgIHZvaWQqIHNhdmVkUkJQOwotICAgICAgICB2b2lkKiBzYXZl
ZFJJUDsKKyAgICAgICAgaW50NjRfdCBzYXZlZFJCWDsKKyAgICAgICAgaW50NjRfdCBzYXZlZFIx
NTsKKyAgICAgICAgaW50NjRfdCBzYXZlZFIxNDsKKyAgICAgICAgaW50NjRfdCBzYXZlZFIxMzsK
KyAgICAgICAgaW50NjRfdCBzYXZlZFIxMjsKKyAgICAgICAgaW50NjRfdCBzYXZlZFJCUDsKKyAg
ICAgICAgaW50NjRfdCBzYXZlZFJJUDsKIAogICAgICAgICAvLyBXaGVuIEpJVCBjb2RlIG1ha2Vz
IGEgY2FsbCwgaXQgcHVzaGVzIGl0cyByZXR1cm4gYWRkcmVzcyBqdXN0IGJlbG93IHRoZSByZXN0
IG9mIHRoZSBzdGFjay4KKyNpZiBDUFUoWDMyKQorICAgICAgICAvLyBPbiBYMzIgdGhlIHJldHVy
biBhZGRyZXNzIG9jY3VwaWVzIGEgOC1ieXRlIHNsb3QgKHdpdGggdGhlIGhpZ2hlciA0IGJ5dGVz
IHplcm8nZWQpCisgICAgICAgIFJldHVybkFkZHJlc3NQdHIqIHJldHVybkFkZHJlc3NTbG90KCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXR1cm5BZGRyZXNzUHRyKj4odGhpcykgLSAyOyB9
CisjZWxzZQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyKiByZXR1cm5BZGRyZXNzU2xvdCgpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0dXJuQWRkcmVzc1B0cio+KHRoaXMpIC0gMTsgfQor
I2VuZGlmCiAgICAgfTsKICNlbGlmIENQVShYODYpCiAjaWYgQ09NUElMRVIoTVNWQykgfHwgKE9T
KFdJTkRPV1MpICYmIENPTVBJTEVSKEdDQykpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRjaFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGNoUmVzdWx0LmgJKHJldmlzaW9uIDEzNTk0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDgg
KzY0LDE3IEBAIHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgICAgIHJldHVybiBzdGFydCA9PSBl
bmQ7CiAgICAgfQogCisjaWYgQ1BVKFgzMikKKyAgICAvLyBPbiBYMzIsIHNpemVfdCBpcyAzMi1i
aXQgd2hpbGUgdGhlIHJlZ2lzdGVyIHNpemUgaXMgNjQtYml0LgorICAgIC8vIE1ha2UgZWFjaCBt
ZW1iZXIgdG8gYmUgNjQtYml0IHNvIHRoYXQgdGhleSB3aWxsIGJlIHBsYWNlZCBpbiB0d28gcmVn
aXN0ZXJzCisgICAgLy8gd2hlbiBhIGZ1bmN0aW9uIChhIFlhcnIgSklUIGZ1bmN0aW9uKSByZXR1
cm5zIGEgTWF0Y2hSZXN1bHQgc3RydWN0dXJlLAorICAgIC8vIGEgYmVoYXZpb3IgY29uc2lzdGVu
dCB3aXRoIGFueSBvdGhlciBhcmNoaXRlY3R1cmUuCisgICAgdWludDY0X3Qgc3RhcnQ7CisgICAg
dWludDY0X3QgZW5kOworI2Vsc2UKICAgICBzaXplX3Qgc3RhcnQ7CiAgICAgc2l6ZV90IGVuZDsK
KyNlbmRpZgogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1OTQ2KQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0x
MyAgWXVxaWFuZyBYaWFuICA8eXVxaWFuZy54aWFuQGludGVsLmNvbT4KKworICAgICAgICB4MzIg
YmFja2VuZCBvZiB0aGUgSklUIGNvbXBpbGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG5lY2Vzc2FyeSBjaGFuZ2VzIHRv
IHN1cHBvcnQgeDMyIGluIHRoZSBKSVQgY29tcGlsZXJzLgorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6IEFkZCB0aGUgZGVmaW5pdGlvbiBvZiBDUFUoWDMyKQorCiAyMDEyLTExLTI3ICBQcmF0
aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBvYmpjL29iamMtcnVu
dGltZS5oIGRvZXMgbm90IGV4aXN0IG9uIGFsbCBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgJKHJldmlzaW9uIDEzNTk0NikKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE2MCw2ICsxNjAsOSBAQAogI2lmICAgZGVmaW5lZChfX3g4Nl82NF9fKSBc
CiAgICAgfHwgZGVmaW5lZChfTV9YNjQpCiAjZGVmaW5lIFdURl9DUFVfWDg2XzY0IDEKKyNpZiBk
ZWZpbmVkKF9fSUxQMzJfXykKKyNkZWZpbmUgV1RGX0NQVV9YMzIgMQorI2VuZGlmCiAjZW5kaWYK
IAogLyogQ1BVKEFSTSkgLSBBUk0sIGFueSB2ZXJzaW9uKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181267</attachid>
            <date>2013-01-03 19:42:56 -0800</date>
            <delta_ts>2013-03-25 18:55:36 -0700</delta_ts>
            <desc>Rebased again</desc>
            <filename>100450.3.patch</filename>
            <type>text/plain</type>
            <size>28869</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4NzcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDEyLTExLTEzICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgorCisg
ICAgICAgIHgzMiBiYWNrZW5kIG9mIHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmVjZXNzYXJ5
IGNoYW5nZXMgdG8gc3VwcG9ydCB4MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoVHJ1c3RlZElt
bTMyKToKKyAgICAgICAgKEltbTMyKToKKyAgICAgICAgKFRydXN0ZWRJbW02NCk6CisgICAgICAg
IChJbW02NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpjb21wYXJl
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnJvdGF0ZVJpZ2h0
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnB1c2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGwp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNvbnZlcnRpYmxlTG9hZFB0cik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojptb3ZlV2l0aFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaFB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnJldmVy
dEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
cm9ybF9pOHIpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjp0ZXN0bF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9tRUFY
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX0VBWG0pOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdnFfbUVBWCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bW92cV9FQVhtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92
bF9pMzJyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoT3BJbmZvKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5oOgorICAgICAgICAoSklUU3RhY2tGcmFtZSk6CisgICAgICAgIChKU0M6
OkpJVFN0YWNrRnJhbWU6OnJldHVybkFkZHJlc3NTbG90KToKKyAgICAgICAgKiBydW50aW1lL01h
dGNoUmVzdWx0Lmg6CisgICAgICAgIChNYXRjaFJlc3VsdCk6CisKIDIwMTMtMDEtMDMgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OkJ5dGVDb2RlQ2FjaGUg
c2VydmVzIGxpdHRsZSBvciBubyBwdXJwb3NlIGV2ZXIgc2luY2Ugd2UgZGVjaWRlZCB0byBrZWVw
IGJ5dGVjb2RlIGFyb3VuZCBwZXJtYW5lbnRseQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlz
aW9uIDEzODc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGlj
OgogICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmICFDUFUoWDg2XzY0KQorI2lmICFDUFUoWDg2
XzY0KSB8fCBDUFUoWDMyKQogICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tMzIoVHJ1c3RlZElt
bVB0ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAg
IHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0z
Mih2YWx1ZSkKICAgICAgICAgewogICAgICAgICB9Ci0jaWYgIUNQVShYODZfNjQpCisjaWYgIUNQ
VShYODZfNjQpIHx8IENQVShYMzIpCiAgICAgICAgIGV4cGxpY2l0IEltbTMyKFRydXN0ZWRJbW1Q
dHIgcHRyKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIocHRyKQogICAgICAgICB7CkBAIC0y
NzUsNyArMjc1LDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotI2lmIENQVShY
ODZfNjQpCisjaWYgQ1BVKFg4Nl82NCkgJiYgIUNQVShYMzIpCiAgICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIu
YXNJbnRwdHIoKSkKICAgICAgICAgewpAQCAtMjk2LDcgKzI5Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIDogVHJ1c3RlZEltbTY0KHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KLSNpZiBD
UFUoWDg2XzY0KQorI2lmIENQVShYODZfNjQpICYmICFDUFUoWDMyKQogICAgICAgICBleHBsaWNp
dCBJbW02NChUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHB0
cikKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTM4NzcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgs
NyArMzE4LDcgQEAgcHVibGljOgogICAgIC8vIFB0ciBtZXRob2RzCiAgICAgLy8gT24gMzItYml0
IHBsYXRmb3JtcyAoaS5lLiB4ODYpLCB0aGVzZSBtZXRob2RzIGRpcmVjdGx5IG1hcCBvbnRvIHRo
ZWlyIDMyLWJpdCBlcXVpdmFsZW50cy4KICAgICAvLyBGSVhNRTogc2hvdWxkIHRoaXMgdXNlIGEg
dGVzdCBmb3IgMzItYml0bmVzcyBpbnN0ZWFkIG9mIHRoaXMgc3BlY2lmaWMgZXhjZXB0aW9uPwot
I2lmICFDUFUoWDg2XzY0KQorI2lmICFDUFUoWDg2XzY0KSB8fCBDUFUoWDMyKQogICAgIHZvaWQg
YWRkUHRyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQz
MihzcmMsIGRlc3QpOwpAQCAtNDQwLDE2ICs0NDAsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goYWRkcmVzcywgZGVzdCk7CiAg
ICAgfQogCi0gICAgdm9pZCBtb3ZlKEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2
b2lkIGNvbXBhcmVQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92
ZShJbW0zMihpbW0uYXNUcnVzdGVkSW1tUHRyKCkpLCBkZXN0KTsKKyAgICAgICAgY29tcGFyZTMy
KGNvbmQsIGxlZnQsIHJpZ2h0LCBkZXN0KTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBhcmVQdHIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiBy
aWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgY29tcGFyZVB0cihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LCBkZXN0
KTsKICAgICB9Ci0KKyAgICAKICAgICB2b2lkIHN0b3JlUHRyKFJlZ2lzdGVySUQgc3JjLCBJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMzIoc3JjLCBhZGRyZXNz
KTsKQEAgLTQ3MCwxMSArNDcwLDYgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMihpbW0pLCBhZGRyZXNzKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzdG9yZVB0cihJbW1Q
dHIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBzdG9yZTMyKEltbTMyKGlt
bS5hc1RydXN0ZWRJbW1QdHIoKSksIGFkZHJlc3MpOwotICAgIH0KLQogICAgIHZvaWQgc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0ciBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihpbW0pLCBhZGRyZXNzKTsKQEAgLTQ5NCwxMSArNDg5LDYgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJ
bW0zMihyaWdodCkpOwogICAgIH0KLSAgICAKLSAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgSW1tUHRyIHJpZ2h0KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIEltbTMyKHJpZ2h0LmFzVHJ1c3RlZElt
bVB0cigpKSk7Ci0gICAgfQogCiAgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewpAQCAtNTY0LDYg
KzU1NCwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZz
ZXQpLCBtYXNrKTsKICAgICB9CisKKyNpZiAhQ1BVKFg4Nl82NCkKKyAgICB2b2lkIG1vdmUoSW1t
UHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShJbW0zMihpbW0u
YXNUcnVzdGVkSW1tUHRyKCkpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUHRyKElt
bVB0ciBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN0b3JlMzIoSW1tMzIo
aW1tLmFzVHJ1c3RlZEltbVB0cigpKSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbVB0ciBy
aWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBJbW0zMihy
aWdodC5hc1RydXN0ZWRJbW1QdHIoKSkpOworICAgIH0KKyNlbHNlCisgICAgdm9pZCByb3RhdGVS
aWdodFB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0RzdCkKKyAgICB7CisgICAg
ICAgIHJvdGF0ZVJpZ2h0MzIoaW1tLCBzcmNEc3QpOworICAgIH0KKyNlbmRpZgogI2Vsc2UKICAg
ICB2b2lkIGFkZFB0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAg
LTgzOSw2ICs4NTEsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoU3Vi
NjQoY29uZCwgc3JjMSwgc3JjMiwgZGVzdCk7CiAgICAgfQorI2VuZGlmIC8vICFDUFUoWDg2XzY0
KSB8fCBDUFUoWDMyKQorCisjaWYgQ1BVKFg4Nl82NCkKIAogI2lmIEVOQUJMRShKSVRfQ09OU1RB
TlRfQkxJTkRJTkcpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQ2NDsKQEAgLTg4
MywxMCArODk4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSAweGZmZmY6CiAgICAgICAgIGNh
c2UgMHhmZmZmZmY6CiAgICAgICAgIGNhc2UgMHhmZmZmZmZmZkw6CisjaWYgIUNQVShYMzIpCiAg
ICAgICAgIGNhc2UgMHhmZmZmZmZmZmZmTDoKICAgICAgICAgY2FzZSAweGZmZmZmZmZmZmZmZkw6
CiAgICAgICAgIGNhc2UgMHhmZmZmZmZmZmZmZmZmZkw6CiAgICAgICAgIGNhc2UgMHhmZmZmZmZm
ZmZmZmZmZmZmTDoKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBk
ZWZhdWx0OiB7CiAgICAgICAgICAgICBpZiAodmFsdWUgPD0gMHhmZikKQEAgLTEwNjIsNyArMTA3
OSw3IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKLSNlbmRpZiAvLyAhQ1BVKFg4Nl82NCkKKyNlbmRp
ZiAvLyBDUFUoWDg2XzY0KQogCiAjaWYgRU5BQkxFKEpJVF9DT05TVEFOVF9CTElORElORykKICAg
ICBib29sIHNob3VsZEJsaW5kKEltbTMyIGltbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJl
dmlzaW9uIDEzODc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTYzLDcgKzk2MywxNSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHB1c2goQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKKyNpZiBDUFUo
WDMyKQorICAgICAgICAvLyBPbiBYODZfNjQgKGFsc28gaW4gWDMyIG1vZGUpLCB0aGUgZGVmYXVs
dCBvcGVyYW5kIHNpemUgZm9yIGNhbGwvanVtcC9wdXNoL3BvcAorICAgICAgICAvLyBpcyA2NC1i
aXQuIFRoaXMgbWVhbnMgaWYgd2UgdXNlIGEgbWVtb3J5IG9wZXJhbmQgZm9yIHRob3NlIGluc3Ry
dWN0aW9ucywKKyAgICAgICAgLy8gd2UnbGwgYmUgbG9hZGluZyBhIDY0LWJpdCBkYXRhIGZyb20g
dGhlIG1lbW9yeSBhZGRyZXNzLiBJdCdzIG5vdCBvdXIgaW50ZW50aW9uLgorICAgICAgICBsb2Fk
MzIoYWRkcmVzcywgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIucHVzaF9y
KHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5wdXNoX20oYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHB1
c2goVHJ1c3RlZEltbTMyIGltbSkKQEAgLTk5Nyw3ICsxMDA1LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbW92ZShUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyNp
ZiBDUFUoWDMyKQorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW1tLmFzSW50cHRyKCks
IGRlc3QpOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pNjRyKGltbS5hc0ludHB0
cigpLCBkZXN0KTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgbW92ZShUcnVzdGVkSW1tNjQg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMTk2LDcgKzEyMDgsMTUgQEAgcHVibGljOgogICAg
IC8vIEFkZHJlc3MgaXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0
byBqdW1wIHRvCiAgICAgdm9pZCBqdW1wKEFkZHJlc3MgYWRkcmVzcykKICAgICB7CisjaWYgQ1BV
KFgzMikKKyAgICAgICAgLy8gT24gWDg2XzY0IChhbHNvIGluIFgzMiBtb2RlKSwgdGhlIGRlZmF1
bHQgb3BlcmFuZCBzaXplIGZvciBjYWxsL2p1bXAvcHVzaC9wb3AKKyAgICAgICAgLy8gaXMgNjQt
Yml0LiBUaGlzIG1lYW5zIGlmIHdlIHVzZSBhIG1lbW9yeSBvcGVyYW5kIGZvciB0aG9zZSBpbnN0
cnVjdGlvbnMsCisgICAgICAgIC8vIHdlJ2xsIGJlIGxvYWRpbmcgYSA2NC1iaXQgZGF0YSBmcm9t
IHRoZSBtZW1vcnkgYWRkcmVzcy4gSXQncyBub3Qgb3VyIGludGVudGlvbi4KKyAgICAgICAgbG9h
ZDMyKGFkZHJlc3MsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmptcF9y
KHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5qbXBfbShhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyNlbmRpZgogICAgIH0KIAogCkBAIC0xMzYzLDcg
KzEzODMsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgLy8gT24gWDg2XzY0IChhbHNvIGluIFgzMiBtb2Rl
KSwgdGhlIGRlZmF1bHQgb3BlcmFuZCBzaXplIGZvciBjYWxsL2p1bXAvcHVzaC9wb3AKKyAgICAg
ICAgLy8gaXMgNjQtYml0LiBUaGlzIG1lYW5zIGlmIHdlIHVzZSBhIG1lbW9yeSBvcGVyYW5kIGZv
ciB0aG9zZSBpbnN0cnVjdGlvbnMsCisgICAgICAgIC8vIHdlJ2xsIGJlIGxvYWRpbmcgYSA2NC1i
aXQgZGF0YSBmcm9tIHRoZSBtZW1vcnkgYWRkcmVzcy4gSXQncyBub3Qgb3VyIGludGVudGlvbi4K
KyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmNhbGwoc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVy
LmNhbGxfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIHZvaWQgcmV0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEzODc3MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBN
YWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiBw
dWJsaWM6CisjaWYgQ1BVKFgzMikKKyAgICBzdGF0aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIgPSBU
aW1lc0ZvdXI7CisjZWxzZQogICAgIHN0YXRpYyBjb25zdCBTY2FsZSBTY2FsZVB0ciA9IFRpbWVz
RWlnaHQ7CisjZW5kaWYKIAogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphZGQz
MjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kMzI7CisgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6b3IzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzI7CkBA
IC0xMTAsMTIgKzExNSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHNpMnNk
X3JyKHNjcmF0Y2hSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCByb3RhdGVSaWdo
dDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRHN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIucm9ybF9pOHIoaW1tLm1fdmFsdWUsIHNyY0RzdCk7CisgICAgfQorCiAgICAg
dm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAg
ICAgIHN0b3JlMzIoaW1tLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KICAgICAKKyAgICB2b2lk
IHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBp
ZiAoc3JjID09IFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92
bF9FQVhtKGFkZHJlc3MpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlMzIo
c3JjLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEp1bXAg
YnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQs
IEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSwgcmlnaHQpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0KQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQu
bV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwg
bGVmdCwgcmlnaHQpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0s
IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cyksIHNjcmF0Y2hSZWdpc3Rlcik7CkBAIC01MjgsMzMgKzU2MCw1MyBAQCBwdWJsaWM6CiAgICAg
Q29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVz
dWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7CisjaWYgQ1BVKFgzMikKKyAgICAgICAg
bV9hc3NlbWJsZXIubW92bF9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsK
KyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgZGVzdCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
ICAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1
ZSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyNp
ZiBDUFUoWDMyKQorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW5pdGlhbFZhbHVlLmFz
SW50cHRyKCksIGRlc3QpOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pNjRyKGlu
aXRpYWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gRGF0
YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRh
dGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIo
MCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdo
dFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIpOworI2lmIENQVShYMzIpCisgICAgICAgIHJldHVybiBi
cmFuY2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOworI2Vsc2UKICAgICAgICAgcmV0
dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9
CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5p
dGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgZGF0YUxh
YmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVyKTsK
KyNpZiBDUFUoWDMyKQorICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgc2NyYXRj
aFJlZ2lzdGVyKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBz
Y3JhdGNoUmVnaXN0ZXIpOworI2VuZGlmCiAgICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIHN0b3Jl
UHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW5pdGlhbFZhbHVlLCBJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0
Y2goaW5pdGlhbFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIpOworI2lmIENQVShYMzIpCisgICAgICAg
IHN0b3JlMzIoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyNlbHNlCiAgICAgICAgIHN0b3Jl
NjQoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gbGFi
ZWw7CiAgICAgfQogICAgIApAQCAtNTkxLDcgKzY0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIGNvbnN0IGludCByZXhCeXRlcyA9IDE7CiAgICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRl
cyA9IDE7Ci0gICAgICAgIGNvbnN0IGludCBpbW1lZGlhdGVCeXRlcyA9IDg7CisgICAgICAgIGNv
bnN0IGludCBpbW1lZGlhdGVCeXRlcyA9IHNpemVvZih2b2lkKik7CiAgICAgICAgIGNvbnN0IGlu
dCB0b3RhbEJ5dGVzID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOwog
ICAgICAgICBBU1NFUlQodG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOwog
ICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CkBAIC02MDQs
MTIgKzY1NiwyMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJl
cGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwg
aW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVzcywgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKLSAg
ICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlh
bFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBYODZBc3Nl
bWJsZXI6OnJldmVydEp1bXBUb19tb3ZsX2kzMnIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxl
QWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2Ny
YXRjaFJlZ2lzdGVyKTsKKyNlbHNlCisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRv
X21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFu
Y2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0
ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpy
ZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lz
dGVyKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19t
b3ZsX2kzMnIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbHNl
CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlv
blN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworI2VuZGlmCiAgICAgfQogCiBwcml2YXRl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCShyZXZpc2lvbiAxMzg3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgzLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgcm9ybF9pOHIoaW50IGltbSwgUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBpZiAoaW1tID09IDEpCisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwgR1JPVVAyX09QX1JPUiwgZHN0KTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAy
X0V2SWIsIEdST1VQMl9PUF9ST1IsIGRzdCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKICNlbmRpZgogCiAgICAgdm9pZCBzYXJs
X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKQEAgLTEwMDcsNiArMTAxNywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1RFU1RfRXZHdiwgc3JjLCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgdGVzdGxfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9URVNUX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIHRlc3RxX2kzMnIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1Qs
IGRzdCk7CkBAIC0xMTExLDcgKzExMjYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0VBWE92KTsKICNpZiBDUFUoWDg2XzY0KQotICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFkZHIp
KTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZGRyIGlzIHplcm8gZXh0ZW5kZWQgKGlmIGl0
J3MgYSAzMi1iaXQgYWRkciBpbiBYMzIgbW9kZSkuCisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhZGRyKSk7CiAjZWxzZQogICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihyZWludGVycHJldF9jYXN0PGludD4oYWRkcikpOwog
I2VuZGlmCkBAIC0xMTkzLDcgKzEyMDksOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092RUFYKTsKICNpZiBDUFUoWDg2XzY0KQotICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFkZHIp
KTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZGRyIGlzIHplcm8gZXh0ZW5kZWQgKGlmIGl0
J3MgYSAzMi1iaXQgYWRkciBpbiBYMzIgbW9kZSkuCisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhZGRyKSk7CiAjZWxzZQogICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihyZWludGVycHJldF9jYXN0PGludD4oYWRkcikpOwog
I2VuZGlmCkBAIC0xMjIzLDEzICsxMjQwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdnFfbUVB
WChjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfTU9WX0VBWE92KTsKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRl
cnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWRk
ciBpcyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMyIG1vZGUpLgor
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oYWRkcikpOwogICAgIH0KIAogICAgIHZvaWQgbW92cV9FQVhtKGNvbnN0IHZvaWQqIGFkZHIp
CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfT3ZFQVgpOwot
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+
KGFkZHIpKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZGRyIGlzIHplcm8gZXh0ZW5kZWQg
KGlmIGl0J3MgYSAzMi1iaXQgYWRkciBpbiBYMzIgbW9kZSkuCisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhZGRyKSk7CiAgICAgfQog
CiAgICAgdm9pZCBtb3ZxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBkc3QpCkBAIC0xOTAxLDYgKzE5MjAsMjUgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzOyBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7ICsraSkKICAgICAgICAgICAgIHB0cltpXSA9IHUu
YXNCeXRlc1tpIC0gcmV4Qnl0ZXMgLSBvcGNvZGVCeXRlc107CiAgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgcmV2ZXJ0SnVtcFRvX21vdmxfaTMycih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBpbnQz
Ml90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBjb25zdCBpbnQgcmV4Qnl0
ZXMgPSAoZHN0ID49IFg4NlJlZ2lzdGVyczo6cjgpID8gMSA6IDA7CisgICAgICAgIGNvbnN0IGlu
dCBvcGNvZGVCeXRlcyA9IDE7CisgICAgICAgIEFTU0VSVChyZXhCeXRlcyArIG9wY29kZUJ5dGVz
IDw9IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBpZiAo
ZHN0ID49IFg4NlJlZ2lzdGVyczo6cjgpCisgICAgICAgICAgICBwdHJbMF0gPSBQUkVfUkVYIHwg
KGRzdCA+PiAzKTsKKyAgICAgICAgcHRyW3JleEJ5dGVzXSA9IE9QX01PVl9FQVhJdiB8IChkc3Qg
JiA3KTsKKyAgICAgICAgCisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGFz
V29yZDsKKyAgICAgICAgICAgIHVpbnQ4X3QgYXNCeXRlc1s0XTsKKyAgICAgICAgfSB1OworICAg
ICAgICB1LmFzV29yZCA9IGltbTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmV4Qnl0ZXMg
KyBvcGNvZGVCeXRlczsgaSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkpOyArK2kpCisgICAgICAgICAgICBwdHJbaV0gPSB1LmFzQnl0ZXNbaSAtIHJleEJ5
dGVzIC0gb3Bjb2RlQnl0ZXNdOworICAgIH0KICNlbmRpZgogICAgIAogICAgIHN0YXRpYyB2b2lk
IHJldmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgaW50
MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHJldmlzaW9uIDEzODc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBOZXdBcnJheUJ1
ZmZlckRhdGEgewogc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3Qg
dmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAg
ZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSkpIHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyNp
ZiBPUyhEQVJXSU4pIHx8IChDUFUoWDg2XzY0KSAmJiAhQ1BVKFgzMikpCiAgICAgZXhwbGljaXQg
T3BJbmZvKHNpemVfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFs
dWUpKSB7IH0KICNlbmRpZgogICAgIGV4cGxpY2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3Zh
bHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAxMzg3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM1LDYgKzEwMzUsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2RlCiAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMihtX2ppdC5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIAogICAgIHNsb3dQYXRo
LmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KDApKSk7CisjaWYgQ1BVKFgzMikKKyAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVz
dDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBjYWxsZWVHUFIsIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOworI2VuZGlmCiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGNhbGxlZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwg
cmVzdWx0R1BSKTsKICAgICBtX2ppdC5zdG9yZTY0KHJlc3VsdEdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZf
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBKU1N0YWNrOjpTY29wZUNoYWluKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkocmV2aXNp
b24gMTM4NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBEZW1hbmRFeGVj
dXRhYmxlQWxsb2NhdG9yOwogI2lmIEVOQUJMRShFWEVDVVRBQkxFX0FMTE9DQVRPUl9GSVhFRCkK
ICNpZiBDUFUoQVJNKQogc3RhdGljIGNvbnN0IHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQ
b29sU2l6ZSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBDUFUoWDg2XzY0KQorI2VsaWYgQ1BV
KFg4Nl82NCkgJiYgIUNQVShYMzIpCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGZpeGVkRXhlY3V0YWJs
ZU1lbW9yeVBvb2xTaXplID0gMTAyNCAqIDEwMjQgKiAxMDI0OwogI2Vsc2UKIHN0YXRpYyBjb25z
dCBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAzMiAqIDEwMjQgKiAxMDI0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxMzg3
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTcsNiArMTk3LDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlE
IG9wY29kZUkKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZU9wQ2FsbCk7
CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCisjaWYgQ1BVKFgzMikKKyAgICAvLyBUaGUg
YWJvdmUgYnJhbmNoUHRyIGRvZXNuJ3QgY2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIGNhbGxlZSBp
c24ndCBhIGNlbGwuCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1Qw
LCB0YWdNYXNrUmVnaXN0ZXIpKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUKG1fY2FsbFN0cnVjdHVy
ZVN0dWJDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKICAgICBt
X2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvLmFwcGVuZChTdHJ1Y3R1cmVTdHViQ29t
cGlsYXRpb25JbmZvKCkpOwogICAgIG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9b
Y2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9u
Q2hlY2s7CkBAIC0yMTgsNiArMjIzLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2Fz
ZShPcGNvZGVJRAogICAgIH0KIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyNpZiBDUFUoWDMy
KQorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyNlbmRpZgogICAgIAogICAgIG1fY2FsbFN0cnVj
dHVyZVN0dWJDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2Nh
dGlvbiA9IGVtaXROYWtlZENhbGwob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0ID8gbV9nbG9iYWxE
YXRhLT5nZXRDVElTdHViKGxpbmtDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKSA6IG1fZ2xvYmFs
RGF0YS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbEdlbmVyYXRvcikuY29kZSgpKTsKIApAQCAtMjI4LDcg
KzIzNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGwKIHsKICAg
ICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hU
ZXN0UHRyKE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJl
KSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhw
ZWN0ZWRFeGVjdXRhYmxlKSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHJldmlzaW9uIDEzODc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNiArMzY2LDcgQEAgU1lNQk9M
X1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIgogCiAjaWYgQ09NUElMRVIoR0NDKSAm
JiBDUFUoWDg2XzY0KQogCisjaWYgIUNQVShYMzIpCiAvLyBUaGVzZSBBU1NFUlRzIHJlbWluZCB5
b3UgdGhhdCwgaWYgeW91IGNoYW5nZSB0aGUgbGF5b3V0IG9mIEpJVFN0YWNrRnJhbWUsIHlvdQog
Ly8gbmVlZCB0byBjaGFuZ2UgdGhlIGFzc2VtYmx5IHRyYW1wb2xpbmVzIGJlbG93IHRvIG1hdGNo
LgogQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFt
ZSkgPT0gMHg1OCwgSklUU3RhY2tGcmFtZV9jYWxsRnJhbWVfb2Zmc2V0X21hdGNoZXNfY3RpVHJh
bXBvbGluZSk7CkBAIC00MzIsNiArNDMzLDcyIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05v
dENhdWdodCkgIjoiICIKICAgICAicG9wcSAlcmJwIiAiXG4iCiAgICAgInJldCIgIlxuIgogKTsK
KyNlbHNlCitDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2Fs
bEZyYW1lKSA9PSAweDQ4LCBKSVRTdGFja0ZyYW1lX2NhbGxGcmFtZV9vZmZzZXRfbWF0Y2hlc19j
dGlUcmFtcG9saW5lKTsKK0NPTVBJTEVfQVNTRVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0Zy
YW1lLCBjb2RlKSA9PSAweDQwLCBKSVRTdGFja0ZyYW1lX2NvZGVfb2Zmc2V0X21hdGNoZXNfY3Rp
VHJhbXBvbGluZSk7CitDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFt
ZSwgc2F2ZWRSQlgpID09IDB4NTgsIEpJVFN0YWNrRnJhbWVfc3R1Yl9hcmd1bWVudF9zcGFjZV9t
YXRjaGVzX2N0aVRyYW1wb2xpbmUpOworCithc20gKAorIi50ZXh0XG4iCisiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiXG4iCitISURFX1NZTUJPTChjdGlUcmFtcG9saW5l
KSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCisgICAgInB1c2hx
ICVyYnAiICJcbiIKKyAgICAibW92bCAlZXNwLCAlZWJwIiAiXG4iCisgICAgInB1c2hxICVyMTIi
ICJcbiIKKyAgICAicHVzaHEgJXIxMyIgIlxuIgorICAgICJwdXNocSAlcjE0IiAiXG4iCisgICAg
InB1c2hxICVyMTUiICJcbiIKKyAgICAicHVzaHEgJXJieCIgIlxuIgorICAgIC8vIEZvcm0gdGhl
IEpJVCBzdHVicyBhcmVhCisgICAgInN1YmwgJDB4NTgsICVlc3AiICJcbiIKKyAgICAibW92bCAl
cjlkLCAweDU0KCVlc3ApIiAiXG4iCisgICAgIm1vdmwgJXI4ZCwgMHg1MCglZXNwKSIgIlxuIgor
ICAgICJtb3ZsICVlY3gsIDB4NGMoJWVzcCkiICJcbiIKKyAgICAibW92bCAlZWR4LCAweDQ4KCVl
c3ApIiAiXG4iCisgICAgIm1vdmwgJWVzaSwgMHg0NCglZXNwKSIgIlxuIgorICAgICJtb3ZsICVl
ZGksIDB4NDAoJWVzcCkiICJcbiIKKyAgICAibW92cSAkNTEyLCAlcjEyIiAiXG4iCisgICAgIm1v
dnEgJDB4RkZGRjAwMDAwMDAwMDAwMCwgJXIxNCIgIlxuIgorICAgICJtb3ZxICQweEZGRkYwMDAw
MDAwMDAwMDIsICVyMTUiICJcbiIKKyAgICAibW92bCAlZWR4LCAlcjEzZCIgIlxuIgorICAgICJj
YWxsIColcmRpIiAiXG4iCisgICAgImFkZGwgJDB4NTgsICVlc3AiICJcbiIKKyAgICAicG9wcSAl
cmJ4IiAiXG4iCisgICAgInBvcHEgJXIxNSIgIlxuIgorICAgICJwb3BxICVyMTQiICJcbiIKKyAg
ICAicG9wcSAlcjEzIiAiXG4iCisgICAgInBvcHEgJXIxMiIgIlxuIgorICAgICJwb3BxICVyYnAi
ICJcbiIKKyAgICAicmV0IiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9s
aW5lRW5kKSAiXG4iCitISURFX1NZTUJPTChjdGlUcmFtcG9saW5lRW5kKSAiXG4iCitTWU1CT0xf
U1RSSU5HKGN0aVRyYW1wb2xpbmVFbmQpICI6IiAiXG4iCispOworCithc20gKAorIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKK0hJREVfU1lNQk9MKGN0
aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9s
aW5lKSAiOiIgIlxuIgorICAgICJtb3ZsICVlc3AsICVlZGkiICJcbiIKKyAgICAiY2FsbCAiIExP
Q0FMX1JFRkVSRU5DRShjdGlfdm1fdGhyb3cpICJcbiIKKyAgICAiaW50MyIgIlxuIgorKTsKKwor
YXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIK
K0hJREVfU1lNQk9MKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3Rp
T3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKKyAgICAiYWRkbCAkMHg1OCwgJWVzcCIgIlxuIgor
ICAgICJwb3BxICVyYngiICJcbiIKKyAgICAicG9wcSAlcjE1IiAiXG4iCisgICAgInBvcHEgJXIx
NCIgIlxuIgorICAgICJwb3BxICVyMTMiICJcbiIKKyAgICAicG9wcSAlcjEyIiAiXG4iCisgICAg
InBvcHEgJXJicCIgIlxuIgorICAgICJyZXQiICJcbiIKKyk7CisjZW5kaWYKIAogI2Vsc2UKICAg
ICAjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTM4NzcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw5ICs5
MSw5IEBAIHVuaW9uIEpJVFN0dWJBcmcgewogICAgIAogI2lmIENQVShYODZfNjQpCiBzdHJ1Y3Qg
SklUU3RhY2tGcmFtZSB7Ci0gICAgdm9pZCogcmVzZXJ2ZWQ7IC8vIFVudXNlZAorICAgIGludDY0
X3QgcmVzZXJ2ZWQ7IC8vIFVudXNlZAogICAgIEpJVFN0dWJBcmcgYXJnc1s2XTsKLSAgICB2b2lk
KiBwYWRkaW5nWzJdOyAvLyBNYWludGFpbiAzMi1ieXRlIHN0YWNrIGFsaWdubWVudCAocG9zc2li
bHkgb3ZlcmtpbGwpLgorICAgIHZvaWQqIHBhZGRpbmdbMl07IC8vIE1haW50YWluIDE2LWJ5dGUg
c3RhY2sgYWxpZ25tZW50LgogCiAgICAgdm9pZCogY29kZTsKICAgICBKU1N0YWNrKiBzdGFjazsK
QEAgLTEwMiwxNiArMTAyLDIxIEBAIHN0cnVjdCBKSVRTdGFja0ZyYW1lIHsKICAgICB2b2lkKiB1
bnVzZWQyOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YTsKIAotICAgIHZvaWQqIHNhdmVk
UkJYOwotICAgIHZvaWQqIHNhdmVkUjE1OwotICAgIHZvaWQqIHNhdmVkUjE0OwotICAgIHZvaWQq
IHNhdmVkUjEzOwotICAgIHZvaWQqIHNhdmVkUjEyOwotICAgIHZvaWQqIHNhdmVkUkJQOwotICAg
IHZvaWQqIHNhdmVkUklQOworICAgIGludDY0X3Qgc2F2ZWRSQlg7CisgICAgaW50NjRfdCBzYXZl
ZFIxNTsKKyAgICBpbnQ2NF90IHNhdmVkUjE0OworICAgIGludDY0X3Qgc2F2ZWRSMTM7CisgICAg
aW50NjRfdCBzYXZlZFIxMjsKKyAgICBpbnQ2NF90IHNhdmVkUkJQOworICAgIGludDY0X3Qgc2F2
ZWRSSVA7CiAKICAgICAvLyBXaGVuIEpJVCBjb2RlIG1ha2VzIGEgY2FsbCwgaXQgcHVzaGVzIGl0
cyByZXR1cm4gYWRkcmVzcyBqdXN0IGJlbG93IHRoZSByZXN0IG9mIHRoZSBzdGFjay4KKyNpZiBD
UFUoWDMyKQorICAgIC8vIE9uIFgzMiB0aGUgcmV0dXJuIGFkZHJlc3Mgb2NjdXBpZXMgYSA4LWJ5
dGUgc2xvdCAod2l0aCB0aGUgaGlnaGVyIDQgYnl0ZXMgemVybydlZCkKKyAgICBSZXR1cm5BZGRy
ZXNzUHRyKiByZXR1cm5BZGRyZXNzU2xvdCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0
dXJuQWRkcmVzc1B0cio+KHRoaXMpIC0gMjsgfQorI2Vsc2UKICAgICBSZXR1cm5BZGRyZXNzUHRy
KiByZXR1cm5BZGRyZXNzU2xvdCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0dXJuQWRk
cmVzc1B0cio+KHRoaXMpIC0gMTsgfQorI2VuZGlmCiB9OwogI2VsaWYgQ1BVKFg4NikKICNpZiBD
T01QSUxFUihNU1ZDKSB8fCAoT1MoV0lORE9XUykgJiYgQ09NUElMRVIoR0NDKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAkocmV2aXNpb24gMTM4
NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjQsOCArNjQsMTcgQEAgc3RydWN0IE1hdGNoUmVzdWx0IHsKICAgICAg
ICAgcmV0dXJuIHN0YXJ0ID09IGVuZDsKICAgICB9CiAKKyNpZiBDUFUoWDMyKQorICAgIC8vIE9u
IFgzMiwgc2l6ZV90IGlzIDMyLWJpdCB3aGlsZSB0aGUgcmVnaXN0ZXIgc2l6ZSBpcyA2NC1iaXQu
CisgICAgLy8gTWFrZSBlYWNoIG1lbWJlciB0byBiZSA2NC1iaXQgc28gdGhhdCB0aGV5IHdpbGwg
YmUgcGxhY2VkIGluIHR3byByZWdpc3RlcnMKKyAgICAvLyB3aGVuIGEgZnVuY3Rpb24gKGEgWWFy
ciBKSVQgZnVuY3Rpb24pIHJldHVybnMgYSBNYXRjaFJlc3VsdCBzdHJ1Y3R1cmUsCisgICAgLy8g
YSBiZWhhdmlvciBjb25zaXN0ZW50IHdpdGggYW55IG90aGVyIGFyY2hpdGVjdHVyZS4KKyAgICB1
aW50NjRfdCBzdGFydDsKKyAgICB1aW50NjRfdCBlbmQ7CisjZWxzZQogICAgIHNpemVfdCBzdGFy
dDsKICAgICBzaXplX3QgZW5kOworI2VuZGlmCiB9OwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMzg3NzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDEyLTExLTEzICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwu
Y29tPgorCisgICAgICAgIHgzMiBiYWNrZW5kIG9mIHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
bmVjZXNzYXJ5IGNoYW5nZXMgdG8gc3VwcG9ydCB4MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogQWRkIHRoZSBkZWZpbml0aW9uIG9mIENQVShYMzIp
CisKIDIwMTMtMDEtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDYWxsTGlua1N0YXR1cyBzaG91bGQgYmUgYXdhcmUgb2YgY2xvc3VyZSBjYWxscywgYW5kIHRo
ZSBERkcgYnl0ZWNvZGUgcGFyc2VyIHNob3VsZCB1c2UgdGhhdCBhcyBpdHMgc29sZSBpbnRlcm5h
bCBub3Rpb24gb2YgaG93IHRvIG9wdGltaXplIGNhbGxzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlz
aW9uIDEzODc3MSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2MCw2ICsxNjAsOSBAQAogI2lmICAgZGVmaW5lZChfX3g4Nl82NF9fKSBcCiAgICAgfHwg
ZGVmaW5lZChfTV9YNjQpCiAjZGVmaW5lIFdURl9DUFVfWDg2XzY0IDEKKyNpZiBkZWZpbmVkKF9f
SUxQMzJfXykKKyNkZWZpbmUgV1RGX0NQVV9YMzIgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogQ1BV
KEFSTSkgLSBBUk0sIGFueSB2ZXJzaW9uKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194975</attachid>
            <date>2013-03-25 18:55:36 -0700</date>
            <delta_ts>2013-04-11 19:45:48 -0700</delta_ts>
            <desc>Rebased again</desc>
            <filename>100450.4.patch</filename>
            <type>text/plain</type>
            <size>33924</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2MzE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEzLTAzLTE5ICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgorCisg
ICAgICAgIHgzMiBiYWNrZW5kIG9mIHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmVjZXNzYXJ5
IGNoYW5nZXMgdG8gc3VwcG9ydCB4MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoVHJ1c3RlZElt
bTMyKToKKyAgICAgICAgKEltbTMyKToKKyAgICAgICAgKFRydXN0ZWRJbW02NCk6CisgICAgICAg
IChJbW02NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpjb21wYXJl
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnJvdGF0ZVJpZ2h0
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnB1c2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGwp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNvbnZlcnRpYmxlTG9hZFB0cik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojptb3ZlV2l0aFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaFB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFydE9mQnJhbmNoUHRyV2l0aFBh
dGNoT25SZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5j
aFB0cldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJvcmxfaThyKToKKyAgICAgICAgKFg4NkFzc2VtYmxl
cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdGxfcm0pOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdmxfbUVBWCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bW92bF9FQVhtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX21FQVgpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnFfRUFYbSk6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdmxfaTMycik6CisgICAgICAgICogZGZnL0RGR0VkZ2Uu
aDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6RWRnZTo6RWRnZSk6CisgICAg
ICAgIChFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpFZGdlOjpzZXROb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpFZGdlOjp1c2VLaW5kVW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6REZHOjpF
ZGdlOjpzZXRVc2VLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpFZGdlOjpzZXRQcm9vZlN0YXR1
cyk6CisgICAgICAgIChKU0M6OkRGRzo6RWRnZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKE9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bCk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVP
cENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9z
Y29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToK
KyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgor
ICAgICAgICAoSklUU3RhY2tGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVFN0YWNrRnJhbWU6OnJl
dHVybkFkZHJlc3NTbG90KToKKyAgICAgICAgKiBydW50aW1lL01hdGNoUmVzdWx0Lmg6CisgICAg
ICAgIChNYXRjaFJlc3VsdCk6CisKIDIwMTMtMDMtMjAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBpbmNvcnJlY3QgZGVidWdnZXIgY29sdW1uIG51bWJlciB2
YWx1ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNDYyOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9
CiAKLSNpZiAhQ1BVKFg4Nl82NCkKKyNpZiAhQ1BVKFg4Nl82NCkgfHwgQ1BVKFgzMikKICAgICAg
ICAgZXhwbGljaXQgVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAg
OiBtX3ZhbHVlKHB0ci5hc0ludHB0cigpKQogICAgICAgICB7CkBAIC0yNTEsNyArMjUxLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgfQotI2lmICFDUFUoWDg2XzY0KQorI2lmICFDUFUoWDg2XzY0KSB8fCBDUFUoWDMyKQog
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDog
VHJ1c3RlZEltbTMyKHB0cikKICAgICAgICAgewpAQCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICB9CiAKLSNpZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZfNjQp
ICYmICFDUFUoWDMyKQogICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0
ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsK
QEAgLTI5Niw3ICsyOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9Ci0jaWYgQ1BVKFg4Nl82NCkKKyNpZiBDUFUoWDg2
XzY0KSAmJiAhQ1BVKFgzMikKICAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJl
dmlzaW9uIDE0NjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBQdHIgbWV0aG9kcwogICAgIC8vIE9uIDMyLWJpdCBwbGF0Zm9ybXMgKGkuZS4geDg2KSwg
dGhlc2UgbWV0aG9kcyBkaXJlY3RseSBtYXAgb250byB0aGVpciAzMi1iaXQgZXF1aXZhbGVudHMu
CiAgICAgLy8gRklYTUU6IHNob3VsZCB0aGlzIHVzZSBhIHRlc3QgZm9yIDMyLWJpdG5lc3MgaW5z
dGVhZCBvZiB0aGlzIHNwZWNpZmljIGV4Y2VwdGlvbj8KLSNpZiAhQ1BVKFg4Nl82NCkKKyNpZiAh
Q1BVKFg4Nl82NCkgfHwgQ1BVKFgzMikKICAgICB2b2lkIGFkZFB0cihBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRkMzIoc3JjLCBkZXN0KTsKQEAgLTQ0Nywx
NiArNDQ3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxvYWQzMldpdGhDb21wYWN0QWRk
cmVzc09mZnNldFBhdGNoKGFkZHJlc3MsIGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgbW92ZShJ
bW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoSW1tMzIoaW1tLmFzVHJ1c3RlZElt
bVB0cigpKSwgZGVzdCk7CisgICAgICAgIGNvbXBhcmUzMihjb25kLCBsZWZ0LCByaWdodCwgZGVz
dCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB2b2lkIGNvbXBhcmVQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGNvbXBhcmUzMihjb25kLCBsZWZ0LCByaWdodCwgZGVzdCk7CiAgICAgfQotCisgICAgCiAgICAg
dm9pZCBzdG9yZVB0cihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAg
ICAgewogICAgICAgICBzdG9yZTMyKHNyYywgYWRkcmVzcyk7CkBAIC00NzcsMTEgKzQ3Nyw2IEBA
IHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaW1tKSwgYWRkcmVzcyk7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc3RvcmVQdHIoSW1tUHRyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQotICAgIHsKLSAgICAgICAgc3RvcmUzMihJbW0zMihpbW0uYXNUcnVzdGVkSW1tUHRyKCkpLCBh
ZGRyZXNzKTsKLSAgICB9Ci0KICAgICB2b2lkIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCB2
b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaW1tKSwg
YWRkcmVzcyk7CkBAIC01MDEsMTEgKzQ5Niw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIocmlnaHQpKTsKICAgICB9Ci0g
ICAgCi0gICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbVB0ciByaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihj
b25kLCBsZWZ0LCBJbW0zMihyaWdodC5hc1RydXN0ZWRJbW1QdHIoKSkpOwotICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKQEAgLTU3MSw2ICs1NjEsMjggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwg
QWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CiAgICAgfQorCisj
aWYgIUNQVShYODZfNjQpCisgICAgdm9pZCBtb3ZlKEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUoSW1tMzIoaW1tLmFzVHJ1c3RlZEltbVB0cigpKSwgZGVz
dCk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVB0cihJbW1QdHIgaW1tLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBzdG9yZTMyKEltbTMyKGltbS5hc1RydXN0ZWRJbW1QdHIoKSks
IGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW1QdHIgcmlnaHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgSW1tMzIocmlnaHQuYXNUcnVzdGVkSW1tUHRyKCkp
KTsKKyAgICB9CisjZWxzZQorICAgIHZvaWQgcm90YXRlUmlnaHRQdHIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmNEc3QpCisgICAgeworICAgICAgICByb3RhdGVSaWdodDMyKGltbSwg
c3JjRHN0KTsKKyAgICB9CisjZW5kaWYKICNlbHNlCiAgICAgdm9pZCBhZGRQdHIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC04NDYsNiArODU4LDkgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIHNyYzEsIHNyYzIsIGRl
c3QpOwogICAgIH0KKyNlbmRpZiAvLyAhQ1BVKFg4Nl82NCkgfHwgQ1BVKFgzMikKKworI2lmIENQ
VShYODZfNjQpCiAKICNpZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6YW5kNjQ7CkBAIC04OTAsMTAgKzkwNSwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgMHhmZmZmOgogICAgICAgICBjYXNlIDB4ZmZmZmZmOgogICAgICAgICBj
YXNlIDB4ZmZmZmZmZmZMOgorI2lmICFDUFUoWDMyKQogICAgICAgICBjYXNlIDB4ZmZmZmZmZmZm
Zkw6CiAgICAgICAgIGNhc2UgMHhmZmZmZmZmZmZmZmZMOgogICAgICAgICBjYXNlIDB4ZmZmZmZm
ZmZmZmZmZmZMOgogICAgICAgICBjYXNlIDB4ZmZmZmZmZmZmZmZmZmZmZkw6CisjZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAg
aWYgKHZhbHVlIDw9IDB4ZmYpCkBAIC0xMDY5LDcgKzEwODYsNyBAQCBwdWJsaWM6CiAKICNlbmRp
ZgogCi0jZW5kaWYgLy8gIUNQVShYODZfNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lm
IEVOQUJMRShKSVRfQ09OU1RBTlRfQkxJTkRJTkcpCiAgICAgYm9vbCBzaG91bGRCbGluZChJbW0z
MiBpbW0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAxNDYyOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk2Myw3ICs5NjMsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCBwdXNo
KEFkZHJlc3MgYWRkcmVzcykKICAgICB7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgLy8gT24gWDg2
XzY0IChhbHNvIGluIFgzMiBtb2RlKSwgdGhlIGRlZmF1bHQgb3BlcmFuZCBzaXplIGZvciBjYWxs
L2p1bXAvcHVzaC9wb3AKKyAgICAgICAgLy8gaXMgNjQtYml0LiBUaGlzIG1lYW5zIGlmIHdlIHVz
ZSBhIG1lbW9yeSBvcGVyYW5kIGZvciB0aG9zZSBpbnN0cnVjdGlvbnMsCisgICAgICAgIC8vIHdl
J2xsIGJlIGxvYWRpbmcgYSA2NC1iaXQgZGF0YSBmcm9tIHRoZSBtZW1vcnkgYWRkcmVzcy4gSXQn
cyBub3Qgb3VyIGludGVudGlvbi4KKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNjcmF0Y2hSZWdp
c3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnB1c2hfcihzY3JhdGNoUmVnaXN0ZXIpOworI2Vs
c2UKICAgICAgICAgbV9hc3NlbWJsZXIucHVzaF9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCBwdXNoKFRydXN0ZWRJbW0zMiBpbW0pCkBA
IC05OTcsNyArMTAwNSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92bF9pMzJyKGltbS5hc0ludHB0cigpLCBkZXN0KTsKKyNlbHNlCiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbW0uYXNJbnRwdHIoKSwgZGVzdCk7CisjZW5kaWYKICAg
ICB9CiAKICAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTE5Niw3ICsxMjA4LDE1IEBAIHB1YmxpYzoKICAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5
IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwogICAgIHZvaWQganVt
cChBZGRyZXNzIGFkZHJlc3MpCiAgICAgeworI2lmIENQVShYMzIpCisgICAgICAgIC8vIE9uIFg4
Nl82NCAoYWxzbyBpbiBYMzIgbW9kZSksIHRoZSBkZWZhdWx0IG9wZXJhbmQgc2l6ZSBmb3IgY2Fs
bC9qdW1wL3B1c2gvcG9wCisgICAgICAgIC8vIGlzIDY0LWJpdC4gVGhpcyBtZWFucyBpZiB3ZSB1
c2UgYSBtZW1vcnkgb3BlcmFuZCBmb3IgdGhvc2UgaW5zdHJ1Y3Rpb25zLAorICAgICAgICAvLyB3
ZSdsbCBiZSBsb2FkaW5nIGEgNjQtYml0IGRhdGEgZnJvbSB0aGUgbWVtb3J5IGFkZHJlc3MuIEl0
J3Mgbm90IG91ciBpbnRlbnRpb24uCisgICAgICAgIGxvYWQzMihhZGRyZXNzLCBzY3JhdGNoUmVn
aXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIpOworI2Vs
c2UKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisjZW5kaWYKICAgICB9CiAKIApAQCAtMTM2Myw3ICsxMzgzLDE1IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2FsbChBZGRyZXNzIGFkZHJlc3MpCiAgICAgeworI2lmIENQVShYMzIpCisgICAg
ICAgIC8vIE9uIFg4Nl82NCAoYWxzbyBpbiBYMzIgbW9kZSksIHRoZSBkZWZhdWx0IG9wZXJhbmQg
c2l6ZSBmb3IgY2FsbC9qdW1wL3B1c2gvcG9wCisgICAgICAgIC8vIGlzIDY0LWJpdC4gVGhpcyBt
ZWFucyBpZiB3ZSB1c2UgYSBtZW1vcnkgb3BlcmFuZCBmb3IgdGhvc2UgaW5zdHJ1Y3Rpb25zLAor
ICAgICAgICAvLyB3ZSdsbCBiZSBsb2FkaW5nIGEgNjQtYml0IGRhdGEgZnJvbSB0aGUgbWVtb3J5
IGFkZHJlc3MuIEl0J3Mgbm90IG91ciBpbnRlbnRpb24uCisgICAgICAgIGxvYWQzMihhZGRyZXNz
LCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5jYWxsKHNjcmF0Y2hSZWdp
c3Rlcik7CisjZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5jYWxsX20oYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHJldCgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCShyZXZpc2lvbiAxNDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICsz
NiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBw
dWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogcHVibGljOgorI2lmIENQVShYMzIpCisg
ICAgc3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOworI2Vsc2UKICAgICBz
dGF0aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIgPSBUaW1lc0VpZ2h0OworI2VuZGlmCiAKICAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmFuZDMyOworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpicmFuY2gzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQWRk
MzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMzI7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwpAQCAtMTEwLDEyICsxMTUsMzkgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5jdnRzaTJzZF9ycihzY3JhdGNoUmVnaXN0ZXIsIGRl
c3QpOwogICAgIH0KIAorICAgIHZvaWQgcm90YXRlUmlnaHQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyY0RzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvcmxfaThyKGlt
bS5tX3ZhbHVlLCBzcmNEc3QpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1t
MzIgaW1tLCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGltbSwgc2NyYXRj
aFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3Jj
LCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKHNyYyA9PSBYODZSZWdpc3RlcnM6
OmVheCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfRUFYbShhZGRyZXNzKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0
Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTMyKHNyYywgc2NyYXRjaFJlZ2lzdGVyKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAg
eworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rl
cik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3Rl
ciksIHJpZ2h0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICB7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisK
ICAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwpA
QCAtNTI4LDMzICs1NjAsNTMgQEAgcHVibGljOgogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNv
bnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExh
YmVsKHRoaXMpOworI2lmIENQVShYMzIpCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisjZWxzZQogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworI2VuZGlm
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIG1vdmVX
aXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92bF9pMzJyKGluaXRpYWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKKyNlbHNl
CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbml0aWFsVmFsdWUuYXNJbnRwdHIoKSwg
ZGVzdCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsKICAgICB9
CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIg
aW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgZGF0
YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyNpZiBDUFUoWDMyKQorICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgc2Ny
YXRjaFJlZ2lzdGVyKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCBzY3JhdGNoUmVnaXN0ZXIpOworI2VuZGlmCiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hQdHJX
aXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJl
bFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3Rl
ZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5p
dGlhbFJpZ2h0VmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQogICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1t
UHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxWYWx1ZSwgc2NyYXRj
aFJlZ2lzdGVyKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBzdG9yZTMyKHNjcmF0Y2hSZWdpc3Rl
ciwgYWRkcmVzcyk7CisjZWxzZQogICAgICAgICBzdG9yZTY0KHNjcmF0Y2hSZWdpc3RlciwgYWRk
cmVzcyk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgIH0KICAgICAKQEAgLTU5
MSw3ICs2NDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMg
PSAxOwogICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwotICAgICAgICBjb25zdCBp
bnQgaW1tZWRpYXRlQnl0ZXMgPSA4OworICAgICAgICBjb25zdCBpbnQgaW1tZWRpYXRlQnl0ZXMg
PSBzaXplb2Yodm9pZCopOwogICAgICAgICBjb25zdCBpbnQgdG90YWxCeXRlcyA9IHJleEJ5dGVz
ICsgb3Bjb2RlQnl0ZXMgKyBpbW1lZGlhdGVCeXRlczsKICAgICAgICAgQVNTRVJUKHRvdGFsQnl0
ZXMgPj0gbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIGxhYmVsLmxh
YmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMpOwpAQCAtNjA0LDEyICs2NTYsMjAgQEAgcHVibGljOgog
ICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJl
c3MsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2
ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rl
cik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92
bF9pMzJyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQor
ICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25T
dGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5p
dGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQsIHZvaWQqIGluaXRpYWxWYWx1
ZSkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihp
bnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAg
ICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92bF9pMzJyKGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluaXRp
YWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQorICAgICAgICBYODZBc3NlbWJsZXI6
OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVz
cygpLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJl
Z2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTQ2Mjk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgzLDYgKzY4MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICB2b2lkIHJvcmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGltbSA9PSAxKQorICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMl9FdjEsIEdST1VQMl9PUF9ST1IsIGRzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdkliLCBHUk9VUDJfT1BfUk9SLCBk
c3QpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9
CisgICAgfQorCiAjZW5kaWYKIAogICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpCkBAIC0xMDA3LDYgKzEwMTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9URVNUX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHRlc3RsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfVEVTVF9Fdkd2
LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB0ZXN0cV9pMzJyKGludCBp
bW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAzX0V2SXosIEdST1VQM19PUF9URVNULCBkc3QpOwpAQCAtMTExMSw3ICsxMTI2
LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01P
Vl9FQVhPdik7CiAjaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
NjQocmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgYWRkciBpcyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMy
IG1vZGUpLgorICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oYWRkcikpOwogI2Vsc2UKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KGFkZHIpKTsKICNlbmRpZgpAQCAtMTE5Myw3ICsxMjA5
LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01P
Vl9PdkVBWCk7CiAjaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
NjQocmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgYWRkciBpcyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMy
IG1vZGUpLgorICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oYWRkcikpOwogI2Vsc2UKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KGFkZHIpKTsKICNlbmRpZgpAQCAtMTIyMywxMyArMTI0
MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZxX21FQVgoY29uc3Qgdm9pZCogYWRkcikKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9FQVhPdik7Ci0gICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8aW50NjRfdD4oYWRk
cikpOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFkZHIgaXMgemVybyBleHRlbmRlZCAoaWYg
aXQncyBhIDMyLWJpdCBhZGRyIGluIFgzMiBtb2RlKS4KKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlNjQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHIpKTsKICAgICB9CiAKICAg
ICB2b2lkIG1vdnFfRUFYbShjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX092RUFYKTsKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlNjQocmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgYWRkciBpcyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIg
aW4gWDMyIG1vZGUpLgorICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oYWRkcikpOwogICAgIH0KIAogICAgIHZvaWQgbW92cV9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTkwMSw2ICsxOTIw
LDI1IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmV4Qnl0ZXMgKyBvcGNv
ZGVCeXRlczsgaSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCkpOyArK2kpCiAgICAgICAgICAgICBwdHJbaV0gPSB1LmFzQnl0ZXNbaSAtIHJleEJ5dGVzIC0g
b3Bjb2RlQnl0ZXNdOwogICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19tb3Zs
X2kzMnIodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgaW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJleEJ5dGVzID0gKGRzdCA+PSBYODZSZWdpc3Rl
cnM6OnI4KSA/IDEgOiAwOworICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOworICAg
ICAgICBBU1NFUlQocmV4Qnl0ZXMgKyBvcGNvZGVCeXRlcyA8PSBtYXhKdW1wUmVwbGFjZW1lbnRT
aXplKCkpOworICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgaWYgKGRzdCA+PSBYODZSZWdpc3RlcnM6OnI4
KQorICAgICAgICAgICAgcHRyWzBdID0gUFJFX1JFWCB8IChkc3QgPj4gMyk7CisgICAgICAgIHB0
cltyZXhCeXRlc10gPSBPUF9NT1ZfRUFYSXYgfCAoZHN0ICYgNyk7CisgICAgICAgIAorICAgICAg
ICB1bmlvbiB7CisgICAgICAgICAgICB1aW50MzJfdCBhc1dvcmQ7CisgICAgICAgICAgICB1aW50
OF90IGFzQnl0ZXNbNF07CisgICAgICAgIH0gdTsKKyAgICAgICAgdS5hc1dvcmQgPSBpbW07Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJleEJ5dGVzICsgb3Bjb2RlQnl0ZXM7IGkgPCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsgKytpKQorICAgICAg
ICAgICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSByZXhCeXRlcyAtIG9wY29kZUJ5dGVzXTsKKyAg
ICB9CiAjZW5kaWYKICAgICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9fY21wbF9pcl9m
b3JjZTMyKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIGludDMyX3QgaW1tLCBSZWdpc3RlcklEIGRz
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCShyZXZpc2lvbiAxNDYyOTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTIgKzM1LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAor
I2lmIFVTRShKU1ZBTFVFNjQpICYmICFDUFUoWDMyKQorI2RlZmluZSBFTkNPREVfSU5fTk9ERV9Q
T0lOVEVSIDEKKyNlbHNlCisjZGVmaW5lIEVOQ09ERV9JTl9OT0RFX1BPSU5URVIgMAorI2VuZGlm
CisKIGNsYXNzIEFkamFjZW5jeUxpc3Q7CiAKIGNsYXNzIEVkZ2UgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEVkZ2UoTm9kZSogbm9kZSA9IDAsIFVzZUtpbmQgdXNlS2luZCA9IFVudHlwZWRVc2Us
IFByb29mU3RhdHVzIHByb29mU3RhdHVzID0gTmVlZHNDaGVjaykKLSNpZiBVU0UoSlNWQUxVRTY0
KQorI2lmIEVOQ09ERV9JTl9OT0RFX1BPSU5URVIKICAgICAgICAgOiBtX2VuY29kZWRXb3JkKG1h
a2VXb3JkKG5vZGUsIHVzZUtpbmQsIHByb29mU3RhdHVzKSkKICNlbHNlCiAgICAgICAgIDogbV9u
b2RlKG5vZGUpCkBAIC00OSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAot
I2lmIFVTRShKU1ZBTFVFNjQpCisjaWYgRU5DT0RFX0lOX05PREVfUE9JTlRFUgogICAgIE5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Tm9kZSo+KG1fZW5jb2RlZFdvcmQg
Pj4gc2hpZnQoKSk7IH0KICNlbHNlCiAgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZTsgfQpAQCAtNjAsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXROb2Rl
KE5vZGUqIG5vZGUpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCisjaWYgRU5DT0RFX0lOX05P
REVfUE9JTlRFUgogICAgICAgICBtX2VuY29kZWRXb3JkID0gbWFrZVdvcmQobm9kZSwgdXNlS2lu
ZCgpLCBwcm9vZlN0YXR1cygpKTsKICNlbHNlCiAgICAgICAgIG1fbm9kZSA9IG5vZGU7CkBAIC02
OSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBVc2VLaW5kIHVzZUtpbmRVbmNoZWNrZWQo
KSBjb25zdAogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQorI2lmIEVOQ09ERV9JTl9OT0RFX1BP
SU5URVIKICAgICAgICAgdW5zaWduZWQgbWFza2VkID0gbV9lbmNvZGVkV29yZCAmICgoKDEgPDwg
c2hpZnQoKSkgLSAxKSk7CiAgICAgICAgIHVuc2lnbmVkIHNoaWZ0ZWQgPSBtYXNrZWQgPj4gMTsK
ICNlbHNlCkBAIC04OCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUtpbmQoVXNl
S2luZCB1c2VLaW5kKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUoKSk7Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKKyNpZiBFTkNPREVfSU5fTk9ERV9QT0lOVEVSCiAgICAgICAgIG1fZW5jb2RlZFdv
cmQgPSBtYWtlV29yZChub2RlKCksIHVzZUtpbmQsIHByb29mU3RhdHVzKCkpOwogI2Vsc2UKICAg
ICAgICAgbV9lbmNvZGVkV29yZCA9IG1ha2VXb3JkKHVzZUtpbmQsIHByb29mU3RhdHVzKCkpOwpA
QCAtMTA3LDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb29mU3RhdHVzKFByb29m
U3RhdHVzIHByb29mU3RhdHVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUoKSk7Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKKyNpZiBFTkNPREVfSU5fTk9ERV9QT0lOVEVSCiAgICAgICAgIG1fZW5j
b2RlZFdvcmQgPSBtYWtlV29yZChub2RlKCksIHVzZUtpbmQoKSwgcHJvb2ZTdGF0dXMpOwogI2Vs
c2UKICAgICAgICAgbV9lbmNvZGVkV29yZCA9IG1ha2VXb3JkKHVzZUtpbmQoKSwgcHJvb2ZTdGF0
dXMpOwpAQCAtMTMxLDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG9wZXJhdG9y
PT0oRWRnZSBvdGhlcikgY29uc3QKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkNP
REVfSU5fTk9ERV9QT0lOVEVSCiAgICAgICAgIHJldHVybiBtX2VuY29kZWRXb3JkID09IG90aGVy
Lm1fZW5jb2RlZFdvcmQ7CiAjZWxzZQogICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1f
bm9kZSAmJiBtX2VuY29kZWRXb3JkID09IG90aGVyLm1fZW5jb2RlZFdvcmQ7CkBAIC0xNDcsNyAr
MTUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQWRqYWNlbmN5TGlz
dDsKICAgICAKLSNpZiBVU0UoSlNWQUxVRTY0KQorI2lmIEVOQ09ERV9JTl9OT0RFX1BPSU5URVIK
ICAgICBzdGF0aWMgdWludDMyX3Qgc2hpZnQoKSB7IHJldHVybiA2OyB9CiAgICAgCiAgICAgc3Rh
dGljIHVpbnRwdHJfdCBtYWtlV29yZChOb2RlKiBub2RlLCBVc2VLaW5kIHVzZUtpbmQsIFByb29m
U3RhdHVzIHByb29mU3RhdHVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHJldmlzaW9uIDE0NjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHN0cnVjdCBOZXdBcnJheUJ1ZmZlckRh
dGEgewogc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUp
IDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAgZXhwbGlj
aXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyNpZiBPUyhE
QVJXSU4pIHx8IChDUFUoWDg2XzY0KSAmJiAhQ1BVKFgzMikpCiAgICAgZXhwbGljaXQgT3BJbmZv
KHNpemVfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7
IH0KICNlbmRpZgogICAgIGV4cGxpY2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAx
NDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODUsNiArNzg1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIobV9q
aXQuY29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQo
bV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVl
R1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSkpOwor
I2lmIENQVShYMzIpCisgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2NChNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgY2FsbGVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKKyNlbmRpZgogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhj
YWxsZWVHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQ
Uik7CiAgICAgbV9qaXQuc3RvcmU2NChyZXN1bHRHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVv
ZihSZWdpc3RlcikpICogSlNTdGFjazo6U2NvcGVDaGFpbikpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE0NjI5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgY2xhc3MgRGVtYW5kRXhlY3V0YWJsZUFs
bG9jYXRvcjsKICNpZiBFTkFCTEUoRVhFQ1VUQUJMRV9BTExPQ0FUT1JfRklYRUQpCiAjaWYgQ1BV
KEFSTSkKIHN0YXRpYyBjb25zdCBzaXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUg
PSAxNiAqIDEwMjQgKiAxMDI0OwotI2VsaWYgQ1BVKFg4Nl82NCkKKyNlbGlmIENQVShYODZfNjQp
ICYmICFDUFUoWDMyKQogc3RhdGljIGNvbnN0IHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQ
b29sU2l6ZSA9IDEwMjQgKiAxMDI0ICogMTAyNDsKICNlbHNlCiBzdGF0aWMgY29uc3Qgc2l6ZV90
IGZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xTaXplID0gMzIgKiAxMDI0ICogMTAyNDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTQ2Mjk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk4LDYgKzE5OCwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJ
CiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VPcENhbGwpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlKTsKIAorI2lmIENQVShYMzIpCisgICAgLy8gVGhlIGFib3ZlIGJy
YW5jaFB0ciBkb2Vzbid0IGNhdGNoIHRoZSBjYXNlIHdoZXJlIHRoZSBjYWxsZWUgaXNuJ3QgYSBj
ZWxsLgorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFz
a1JlZ2lzdGVyKSk7CisjZW5kaWYKKwogICAgIEFTU0VSVChtX2NhbGxTdHJ1Y3R1cmVTdHViQ29t
cGlsYXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7CiAgICAgbV9jYWxsU3Ry
dWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mby5hcHBlbmQoU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9u
SW5mbygpKTsKICAgICBtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5r
SW5mb0luZGV4XS5ob3RQYXRoQmVnaW4gPSBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwpA
QCAtMjE5LDYgKzIyNCw5IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoT3Bjb2Rl
SUQKICAgICB9CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisjaWYgQ1BVKFgzMikKKyAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CisjZW5kaWYKICAgICAKICAgICBtX2NhbGxTdHJ1Y3R1cmVTdHVi
Q29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBl
bWl0TmFrZWRDYWxsKG9wY29kZUlEID09IG9wX2NvbnN0cnVjdCA/IG1fZ2xvYmFsRGF0YS0+Z2V0
Q1RJU3R1YihsaW5rQ29uc3RydWN0R2VuZXJhdG9yKS5jb2RlKCkgOiBtX2dsb2JhbERhdGEtPmdl
dENUSVN0dWIobGlua0NhbGxHZW5lcmF0b3IpLmNvZGUoKSk7CiAKQEAgLTIyOSw3ICsyMzcsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChDYWxsCiB7CiAgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihO
b25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChi
cmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3RlcikpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhl
Y3V0YWJsZSkpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNDYyOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIx
NCw3ICsxMjE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Ywog
ICAgIGlmIChjaGVja1RvcExldmVsICYmIHNraXAtLSkgewogICAgICAgICBKdW1wIGFjdGl2YXRp
b25Ob3RDcmVhdGVkOwogICAgICAgICBpZiAoY2hlY2tUb3BMZXZlbCkKLSAgICAgICAgICAgIGFj
dGl2YXRpb25Ob3RDcmVhdGVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCBhZGRyZXNzRm9yKG1fY29k
ZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkpOworICAgICAgICAgICAgYWN0aXZhdGlvbk5v
dENyZWF0ZWQgPSBicmFuY2hUZXN0NjQoWmVybywgYWRkcmVzc0ZvcihtX2NvZGVCbG9jay0+YWN0
aXZhdGlvblJlZ2lzdGVyKCkpKTsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU1Nj
b3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QwKTsKICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0
ZWQubGluayh0aGlzKTsKICAgICB9CkBAIC0xMjIyLDcgKzEyMjIsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMCk7CiAKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMCk7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kICogc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAgICBsb2FkNjQoQWRkcmVzcyhyZWdU
MCwgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpLCBy
ZWdUMCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CkBAIC0xMjM5LDcg
KzEyMzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjCiAgICAg
aWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CiAgICAgICAgIEp1bXAgYWN0aXZhdGlvbk5v
dENyZWF0ZWQ7CiAgICAgICAgIGlmIChjaGVja1RvcExldmVsKQotICAgICAgICAgICAgYWN0aXZh
dGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxv
Y2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7CisgICAgICAgICAgICBhY3RpdmF0aW9uTm90Q3Jl
YXRlZCA9IGJyYW5jaFRlc3Q2NChaZXJvLCBhZGRyZXNzRm9yKG1fY29kZUJsb2NrLT5hY3RpdmF0
aW9uUmVnaXN0ZXIoKSkpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTU2NvcGU6
Om9mZnNldE9mTmV4dCgpKSwgcmVnVDEpOwogICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5s
aW5rKHRoaXMpOwogICAgIH0KQEAgLTEyNDksNyArMTI0OSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9zY29wZWRfdmFyKEluc3RydWMKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdU
MCwgcmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTVmFyaWFibGVP
YmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMSk7Ci0gICAgc3RvcmVQdHIocmVnVDAs
IEFkZHJlc3MocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQgKiBzaXplb2Yo
UmVnaXN0ZXIpKSk7CisgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdUMSwgY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfaW5pdF9nbG9iYWxfY29uc3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lv
biAxNDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcwLDYgKzM3MCw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05v
dENhdWdodCkgIjoiICIKIAogI2lmIENPTVBJTEVSKEdDQykgJiYgQ1BVKFg4Nl82NCkKIAorI2lm
ICFDUFUoWDMyKQogLy8gVGhlc2UgQVNTRVJUcyByZW1pbmQgeW91IHRoYXQsIGlmIHlvdSBjaGFu
Z2UgdGhlIGxheW91dCBvZiBKSVRTdGFja0ZyYW1lLCB5b3UKIC8vIG5lZWQgdG8gY2hhbmdlIHRo
ZSBhc3NlbWJseSB0cmFtcG9saW5lcyBiZWxvdyB0byBtYXRjaC4KIENPTVBJTEVfQVNTRVJUKG9m
ZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpID09IDB4NTgsIEpJVFN0YWNr
RnJhbWVfY2FsbEZyYW1lX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOwpAQCAtNDM2LDYg
KzQzNyw3MiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiCiAgICAg
InBvcHEgJXJicCIgIlxuIgogICAgICJyZXQiICJcbiIKICk7CisjZWxzZQorQ09NUElMRV9BU1NF
UlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgPT0gMHg0OCwgSklU
U3RhY2tGcmFtZV9jYWxsRnJhbWVfb2Zmc2V0X21hdGNoZXNfY3RpVHJhbXBvbGluZSk7CitDT01Q
SUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY29kZSkgPT0gMHg0MCwg
SklUU3RhY2tGcmFtZV9jb2RlX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOworQ09NUElM
RV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIHNhdmVkUkJYKSA9PSAweDU4
LCBKSVRTdGFja0ZyYW1lX3N0dWJfYXJndW1lbnRfc3BhY2VfbWF0Y2hlc19jdGlUcmFtcG9saW5l
KTsKKworYXNtICgKKyIudGV4dFxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBv
bGluZSkgIlxuIgorSElERV9TWU1CT0woY3RpVHJhbXBvbGluZSkgIlxuIgorU1lNQk9MX1NUUklO
RyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgorICAgICJwdXNocSAlcmJwIiAiXG4iCisgICAgIm1v
dmwgJWVzcCwgJWVicCIgIlxuIgorICAgICJwdXNocSAlcjEyIiAiXG4iCisgICAgInB1c2hxICVy
MTMiICJcbiIKKyAgICAicHVzaHEgJXIxNCIgIlxuIgorICAgICJwdXNocSAlcjE1IiAiXG4iCisg
ICAgInB1c2hxICVyYngiICJcbiIKKyAgICAvLyBGb3JtIHRoZSBKSVQgc3R1YnMgYXJlYQorICAg
ICJzdWJsICQweDU4LCAlZXNwIiAiXG4iCisgICAgIm1vdmwgJXI5ZCwgMHg1NCglZXNwKSIgIlxu
IgorICAgICJtb3ZsICVyOGQsIDB4NTAoJWVzcCkiICJcbiIKKyAgICAibW92bCAlZWN4LCAweDRj
KCVlc3ApIiAiXG4iCisgICAgIm1vdmwgJWVkeCwgMHg0OCglZXNwKSIgIlxuIgorICAgICJtb3Zs
ICVlc2ksIDB4NDQoJWVzcCkiICJcbiIKKyAgICAibW92bCAlZWRpLCAweDQwKCVlc3ApIiAiXG4i
CisgICAgIm1vdnEgJDUxMiwgJXIxMiIgIlxuIgorICAgICJtb3ZxICQweEZGRkYwMDAwMDAwMDAw
MDAsICVyMTQiICJcbiIKKyAgICAibW92cSAkMHhGRkZGMDAwMDAwMDAwMDAyLCAlcjE1IiAiXG4i
CisgICAgIm1vdmwgJWVkeCwgJXIxM2QiICJcbiIKKyAgICAiY2FsbCAqJXJkaSIgIlxuIgorICAg
ICJhZGRsICQweDU4LCAlZXNwIiAiXG4iCisgICAgInBvcHEgJXJieCIgIlxuIgorICAgICJwb3Bx
ICVyMTUiICJcbiIKKyAgICAicG9wcSAlcjE0IiAiXG4iCisgICAgInBvcHEgJXIxMyIgIlxuIgor
ICAgICJwb3BxICVyMTIiICJcbiIKKyAgICAicG9wcSAlcmJwIiAiXG4iCisgICAgInJldCIgIlxu
IgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorSElERV9T
WU1CT0woY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5l
RW5kKSAiOiIgIlxuIgorKTsKKworYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZN
VGhyb3dUcmFtcG9saW5lKSAiXG4iCitISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZSkg
IlxuIgorU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKKyAgICAi
bW92bCAlZXNwLCAlZWRpIiAiXG4iCisgICAgImNhbGwgIiBMT0NBTF9SRUZFUkVOQ0UoY3RpX3Zt
X3Rocm93KSAiXG4iCisgICAgImludDMiICJcbiIKKyk7CisKK2FzbSAoCisiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCitISURFX1NZTUJPTChjdGlPcFRo
cm93Tm90Q2F1Z2h0KSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6
IiAiXG4iCisgICAgImFkZGwgJDB4NTgsICVlc3AiICJcbiIKKyAgICAicG9wcSAlcmJ4IiAiXG4i
CisgICAgInBvcHEgJXIxNSIgIlxuIgorICAgICJwb3BxICVyMTQiICJcbiIKKyAgICAicG9wcSAl
cjEzIiAiXG4iCisgICAgInBvcHEgJXIxMiIgIlxuIgorICAgICJwb3BxICVyYnAiICJcbiIKKyAg
ICAicmV0IiAiXG4iCispOworI2VuZGlmCiAKICNlbGlmIENPTVBJTEVSKE1TVkMpICYmIENQVShY
ODZfNjQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9u
IDE0NjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODksOSArODksOSBAQCB1bmlvbiBKSVRTdHViQXJnIHsKICAgICAKICNpZiAh
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIHN0cnVjdCBKSVRTdGFja0ZyYW1lIHsKLSAgICB2
b2lkKiByZXNlcnZlZDsgLy8gVW51c2VkCisgICAgaW50NjRfdCByZXNlcnZlZDsgLy8gVW51c2Vk
CiAgICAgSklUU3R1YkFyZyBhcmdzWzZdOwotICAgIHZvaWQqIHBhZGRpbmdbMl07IC8vIE1haW50
YWluIDMyLWJ5dGUgc3RhY2sgYWxpZ25tZW50IChwb3NzaWJseSBvdmVya2lsbCkuCisgICAgdm9p
ZCogcGFkZGluZ1syXTsgLy8gTWFpbnRhaW4gMTYtYnl0ZSBzdGFjayBhbGlnbm1lbnQuCiAKICAg
ICB2b2lkKiBjb2RlOwogICAgIEpTU3RhY2sqIHN0YWNrOwpAQCAtMTAwLDE2ICsxMDAsMjEgQEAg
c3RydWN0IEpJVFN0YWNrRnJhbWUgewogICAgIHZvaWQqIHVudXNlZDI7CiAgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhOwogCi0gICAgdm9pZCogc2F2ZWRSQlg7Ci0gICAgdm9pZCogc2F2ZWRS
MTU7Ci0gICAgdm9pZCogc2F2ZWRSMTQ7Ci0gICAgdm9pZCogc2F2ZWRSMTM7Ci0gICAgdm9pZCog
c2F2ZWRSMTI7Ci0gICAgdm9pZCogc2F2ZWRSQlA7Ci0gICAgdm9pZCogc2F2ZWRSSVA7CisgICAg
aW50NjRfdCBzYXZlZFJCWDsKKyAgICBpbnQ2NF90IHNhdmVkUjE1OworICAgIGludDY0X3Qgc2F2
ZWRSMTQ7CisgICAgaW50NjRfdCBzYXZlZFIxMzsKKyAgICBpbnQ2NF90IHNhdmVkUjEyOworICAg
IGludDY0X3Qgc2F2ZWRSQlA7CisgICAgaW50NjRfdCBzYXZlZFJJUDsKIAogICAgIC8vIFdoZW4g
SklUIGNvZGUgbWFrZXMgYSBjYWxsLCBpdCBwdXNoZXMgaXRzIHJldHVybiBhZGRyZXNzIGp1c3Qg
YmVsb3cgdGhlIHJlc3Qgb2YgdGhlIHN0YWNrLgorI2lmIENQVShYMzIpCisgICAgLy8gT24gWDMy
IHRoZSByZXR1cm4gYWRkcmVzcyBvY2N1cGllcyBhIDgtYnl0ZSBzbG90ICh3aXRoIHRoZSBoaWdo
ZXIgNCBieXRlcyB6ZXJvJ2VkKQorICAgIFJldHVybkFkZHJlc3NQdHIqIHJldHVybkFkZHJlc3NT
bG90KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXR1cm5BZGRyZXNzUHRyKj4odGhpcykg
LSAyOyB9CisjZWxzZQogICAgIFJldHVybkFkZHJlc3NQdHIqIHJldHVybkFkZHJlc3NTbG90KCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXR1cm5BZGRyZXNzUHRyKj4odGhpcykgLSAxOyB9
CisjZW5kaWYKIH07CiAjZWxpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogc3RydWN0IEpJ
VFN0YWNrRnJhbWUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hS
ZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRj
aFJlc3VsdC5oCShyZXZpc2lvbiAxNDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRjaFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCwxNyBAQCBzdHJ1
Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICByZXR1cm4gc3RhcnQgPT0gZW5kOwogICAgIH0KIAor
I2lmIENQVShYMzIpCisgICAgLy8gT24gWDMyLCBzaXplX3QgaXMgMzItYml0IHdoaWxlIHRoZSBy
ZWdpc3RlciBzaXplIGlzIDY0LWJpdC4KKyAgICAvLyBNYWtlIGVhY2ggbWVtYmVyIHRvIGJlIDY0
LWJpdCBzbyB0aGF0IHRoZXkgd2lsbCBiZSBwbGFjZWQgaW4gdHdvIHJlZ2lzdGVycworICAgIC8v
IHdoZW4gYSBmdW5jdGlvbiAoYSBZYXJyIEpJVCBmdW5jdGlvbikgcmV0dXJucyBhIE1hdGNoUmVz
dWx0IHN0cnVjdHVyZSwKKyAgICAvLyBhIGJlaGF2aW9yIGNvbnNpc3RlbnQgd2l0aCBhbnkgb3Ro
ZXIgYXJjaGl0ZWN0dXJlLgorICAgIHVpbnQ2NF90IHN0YXJ0OworICAgIHVpbnQ2NF90IGVuZDsK
KyNlbHNlCiAgICAgc2l6ZV90IHN0YXJ0OwogICAgIHNpemVfdCBlbmQ7CisjZW5kaWYKIH07CiAK
ICNlbmRpZgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjMxOCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDMtMTkgIFl1cWlhbmcgWGlh
biAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAgICAgICAgeDMyIGJhY2tlbmQgb2YgdGhl
IEpJVCBjb21waWxlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDQ1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZWNlc3NhcnkgY2hhbmdlcyB0byBzdXBwb3J0IHgzMiBp
biB0aGUgSklUIGNvbXBpbGVycy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBBZGQgdGhl
IGRlZmluaXRpb24gb2YgQ1BVKFgzMikKKwogMjAxMy0wMy0yMCAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNpbmcgU3RyaW5nOjpyZXZlcnNlRmluZExp
bmVUZXJtaW5hdG9yKCkuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE0NjI5NSkKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw2ICsxNjAsOSBA
QAogI2lmICAgZGVmaW5lZChfX3g4Nl82NF9fKSBcCiAgICAgfHwgZGVmaW5lZChfTV9YNjQpCiAj
ZGVmaW5lIFdURl9DUFVfWDg2XzY0IDEKKyNpZiBkZWZpbmVkKF9fSUxQMzJfXykKKyNkZWZpbmUg
V1RGX0NQVV9YMzIgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogQ1BVKEFSTSkgLSBBUk0sIGFueSB2
ZXJzaW9uKi8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197712</attachid>
            <date>2013-04-11 19:45:48 -0700</date>
            <delta_ts>2013-10-31 13:00:55 -0700</delta_ts>
            <desc>Rebased again</desc>
            <filename>100450.5.patch</filename>
            <type>text/plain</type>
            <size>34339</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4MDYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEzLTAzLTIxICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgorCisg
ICAgICAgIHgzMiBiYWNrZW5kIG9mIHRoZSBKSVQgY29tcGlsZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmVjZXNzYXJ5
IGNoYW5nZXMgdG8gc3VwcG9ydCB4MzIgaW4gdGhlIEpJVCBjb21waWxlcnMuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoVHJ1c3RlZElt
bTMyKToKKyAgICAgICAgKEltbTMyKToKKyAgICAgICAgKFRydXN0ZWRJbW02NCk6CisgICAgICAg
IChJbW02NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpjb21wYXJl
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnJvdGF0ZVJpZ2h0
UHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnNob3VsZEJsaW5kKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnB1c2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGwp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNvbnZlcnRpYmxlTG9hZFB0cik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojptb3ZlV2l0aFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaFB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVB0cldpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFydE9mQnJhbmNoUHRyV2l0aFBh
dGNoT25SZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5j
aFB0cldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJvcmxfaThyKToKKyAgICAgICAgKFg4NkFzc2VtYmxl
cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdGxfcm0pOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdmxfbUVBWCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bW92bF9FQVhtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX21FQVgpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnFfRUFYbSk6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdmxfaTMycik6CisgICAgICAgICogZGZnL0RGR0VkZ2Uu
aDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6RWRnZTo6RWRnZSk6CisgICAg
ICAgIChFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpFZGdlOjpzZXROb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpFZGdlOjp1c2VLaW5kVW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6REZHOjpF
ZGdlOjpzZXRVc2VLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpFZGdlOjpzZXRQcm9vZlN0YXR1
cyk6CisgICAgICAgIChKU0M6OkRGRzo6RWRnZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKE9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bCk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVP
cENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9z
Y29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToK
KyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgor
ICAgICAgICAoSklUU3RhY2tGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVFN0YWNrRnJhbWU6OnJl
dHVybkFkZHJlc3NTbG90KToKKyAgICAgICAgKiBydW50aW1lL01hdGNoUmVzdWx0Lmg6CisgICAg
ICAgIChNYXRjaFJlc3VsdCk6CisKIDIwMTMtMDQtMDkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgbGl2ZW5lc3MgdGVzdHMgdG8gSlNDIEFQSSBlbnRyeSBw
b2ludHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNDgwNjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9
CiAKLSNpZiAhQ1BVKFg4Nl82NCkKKyNpZiAhQ1BVKFg4Nl82NCkgfHwgQ1BVKFgzMikKICAgICAg
ICAgZXhwbGljaXQgVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICAg
OiBtX3ZhbHVlKHB0ci5hc0ludHB0cigpKQogICAgICAgICB7CkBAIC0yNTEsNyArMjUxLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIodmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgfQotI2lmICFDUFUoWDg2XzY0KQorI2lmICFDUFUoWDg2XzY0KSB8fCBDUFUoWDMyKQog
ICAgICAgICBleHBsaWNpdCBJbW0zMihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgIDog
VHJ1c3RlZEltbTMyKHB0cikKICAgICAgICAgewpAQCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICB9CiAKLSNpZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZfNjQp
ICYmICFDUFUoWDMyKQogICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0
ciBwdHIpCiAgICAgICAgICAgICA6IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpCiAgICAgICAgIHsK
QEAgLTI5Niw3ICsyOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NCh2
YWx1ZSkKICAgICAgICAgewogICAgICAgICB9Ci0jaWYgQ1BVKFg4Nl82NCkKKyNpZiBDUFUoWDg2
XzY0KSAmJiAhQ1BVKFgzMikKICAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBw
dHIpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJl
dmlzaW9uIDE0ODA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBQdHIgbWV0aG9kcwogICAgIC8vIE9uIDMyLWJpdCBwbGF0Zm9ybXMgKGkuZS4geDg2KSwg
dGhlc2UgbWV0aG9kcyBkaXJlY3RseSBtYXAgb250byB0aGVpciAzMi1iaXQgZXF1aXZhbGVudHMu
CiAgICAgLy8gRklYTUU6IHNob3VsZCB0aGlzIHVzZSBhIHRlc3QgZm9yIDMyLWJpdG5lc3MgaW5z
dGVhZCBvZiB0aGlzIHNwZWNpZmljIGV4Y2VwdGlvbj8KLSNpZiAhQ1BVKFg4Nl82NCkKKyNpZiAh
Q1BVKFg4Nl82NCkgfHwgQ1BVKFgzMikKICAgICB2b2lkIGFkZFB0cihBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRkMzIoc3JjLCBkZXN0KTsKQEAgLTQ0Nywx
NiArNDQ3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxvYWQzMldpdGhDb21wYWN0QWRk
cmVzc09mZnNldFBhdGNoKGFkZHJlc3MsIGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgbW92ZShJ
bW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoSW1tMzIoaW1tLmFzVHJ1c3RlZElt
bVB0cigpKSwgZGVzdCk7CisgICAgICAgIGNvbXBhcmUzMihjb25kLCBsZWZ0LCByaWdodCwgZGVz
dCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB2b2lkIGNvbXBhcmVQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGNvbXBhcmUzMihjb25kLCBsZWZ0LCByaWdodCwgZGVzdCk7CiAgICAgfQotCisgICAgCiAgICAg
dm9pZCBzdG9yZVB0cihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAg
ICAgewogICAgICAgICBzdG9yZTMyKHNyYywgYWRkcmVzcyk7CkBAIC00NzcsMTEgKzQ3Nyw2IEBA
IHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaW1tKSwgYWRkcmVzcyk7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc3RvcmVQdHIoSW1tUHRyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQotICAgIHsKLSAgICAgICAgc3RvcmUzMihJbW0zMihpbW0uYXNUcnVzdGVkSW1tUHRyKCkpLCBh
ZGRyZXNzKTsKLSAgICB9Ci0KICAgICB2b2lkIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCB2
b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaW1tKSwg
YWRkcmVzcyk7CkBAIC01MDEsMTEgKzQ5Niw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIocmlnaHQpKTsKICAgICB9Ci0g
ICAgCi0gICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIEltbVB0ciByaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihj
b25kLCBsZWZ0LCBJbW0zMihyaWdodC5hc1RydXN0ZWRJbW1QdHIoKSkpOwotICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKQEAgLTU3MSw2ICs1NjEsMjggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwg
QWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CiAgICAgfQorCisj
aWYgIUNQVShYODZfNjQpCisgICAgdm9pZCBtb3ZlKEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUoSW1tMzIoaW1tLmFzVHJ1c3RlZEltbVB0cigpKSwgZGVz
dCk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVB0cihJbW1QdHIgaW1tLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBzdG9yZTMyKEltbTMyKGltbS5hc1RydXN0ZWRJbW1QdHIoKSks
IGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW1QdHIgcmlnaHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgSW1tMzIocmlnaHQuYXNUcnVzdGVkSW1tUHRyKCkp
KTsKKyAgICB9CisjZWxzZQorICAgIHZvaWQgcm90YXRlUmlnaHRQdHIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmNEc3QpCisgICAgeworICAgICAgICByb3RhdGVSaWdodDMyKGltbSwg
c3JjRHN0KTsKKyAgICB9CisjZW5kaWYKICNlbHNlCiAgICAgdm9pZCBhZGRQdHIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC04NDYsNiArODU4LDkgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIHNyYzEsIHNyYzIsIGRl
c3QpOwogICAgIH0KKyNlbmRpZiAvLyAhQ1BVKFg4Nl82NCkgfHwgQ1BVKFgzMikKKworI2lmIENQ
VShYODZfNjQpCiAKICNpZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6YW5kNjQ7CkBAIC04OTAsMTAgKzkwNSwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgMHhmZmZmOgogICAgICAgICBjYXNlIDB4ZmZmZmZmOgogICAgICAgICBj
YXNlIDB4ZmZmZmZmZmZMOgorI2lmICFDUFUoWDMyKQogICAgICAgICBjYXNlIDB4ZmZmZmZmZmZm
Zkw6CiAgICAgICAgIGNhc2UgMHhmZmZmZmZmZmZmZmZMOgogICAgICAgICBjYXNlIDB4ZmZmZmZm
ZmZmZmZmZmZMOgogICAgICAgICBjYXNlIDB4ZmZmZmZmZmZmZmZmZmZmZkw6CisjZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAg
aWYgKHZhbHVlIDw9IDB4ZmYpCkBAIC0xMDY5LDcgKzEwODYsNyBAQCBwdWJsaWM6CiAKICNlbmRp
ZgogCi0jZW5kaWYgLy8gIUNQVShYODZfNjQpCisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogI2lm
IEVOQUJMRShKSVRfQ09OU1RBTlRfQkxJTkRJTkcpCiAgICAgYm9vbCBzaG91bGRCbGluZChJbW0z
MiBpbW0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAxNDgwNjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk2Myw3ICs5NjMsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCBwdXNo
KEFkZHJlc3MgYWRkcmVzcykKICAgICB7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgLy8gT24gWDg2
XzY0IChhbHNvIGluIFgzMiBtb2RlKSwgdGhlIGRlZmF1bHQgb3BlcmFuZCBzaXplIGZvciBjYWxs
L2p1bXAvcHVzaC9wb3AKKyAgICAgICAgLy8gaXMgNjQtYml0LiBUaGlzIG1lYW5zIGlmIHdlIHVz
ZSBhIG1lbW9yeSBvcGVyYW5kIGZvciB0aG9zZSBpbnN0cnVjdGlvbnMsCisgICAgICAgIC8vIHdl
J2xsIGJlIGxvYWRpbmcgYSA2NC1iaXQgZGF0YSBmcm9tIHRoZSBtZW1vcnkgYWRkcmVzcy4gSXQn
cyBub3Qgb3VyIGludGVudGlvbi4KKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNjcmF0Y2hSZWdp
c3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnB1c2hfcihzY3JhdGNoUmVnaXN0ZXIpOworI2Vs
c2UKICAgICAgICAgbV9hc3NlbWJsZXIucHVzaF9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCBwdXNoKFRydXN0ZWRJbW0zMiBpbW0pCkBA
IC05OTcsNyArMTAwNSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92bF9pMzJyKGltbS5hc0ludHB0cigpLCBkZXN0KTsKKyNlbHNlCiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbW0uYXNJbnRwdHIoKSwgZGVzdCk7CisjZW5kaWYKICAg
ICB9CiAKICAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTE5Niw3ICsxMjA4LDE1IEBAIHB1YmxpYzoKICAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5
IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwogICAgIHZvaWQganVt
cChBZGRyZXNzIGFkZHJlc3MpCiAgICAgeworI2lmIENQVShYMzIpCisgICAgICAgIC8vIE9uIFg4
Nl82NCAoYWxzbyBpbiBYMzIgbW9kZSksIHRoZSBkZWZhdWx0IG9wZXJhbmQgc2l6ZSBmb3IgY2Fs
bC9qdW1wL3B1c2gvcG9wCisgICAgICAgIC8vIGlzIDY0LWJpdC4gVGhpcyBtZWFucyBpZiB3ZSB1
c2UgYSBtZW1vcnkgb3BlcmFuZCBmb3IgdGhvc2UgaW5zdHJ1Y3Rpb25zLAorICAgICAgICAvLyB3
ZSdsbCBiZSBsb2FkaW5nIGEgNjQtYml0IGRhdGEgZnJvbSB0aGUgbWVtb3J5IGFkZHJlc3MuIEl0
J3Mgbm90IG91ciBpbnRlbnRpb24uCisgICAgICAgIGxvYWQzMihhZGRyZXNzLCBzY3JhdGNoUmVn
aXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIpOworI2Vs
c2UKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisjZW5kaWYKICAgICB9CiAKIApAQCAtMTM2Myw3ICsxMzgzLDE1IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2FsbChBZGRyZXNzIGFkZHJlc3MpCiAgICAgeworI2lmIENQVShYMzIpCisgICAg
ICAgIC8vIE9uIFg4Nl82NCAoYWxzbyBpbiBYMzIgbW9kZSksIHRoZSBkZWZhdWx0IG9wZXJhbmQg
c2l6ZSBmb3IgY2FsbC9qdW1wL3B1c2gvcG9wCisgICAgICAgIC8vIGlzIDY0LWJpdC4gVGhpcyBt
ZWFucyBpZiB3ZSB1c2UgYSBtZW1vcnkgb3BlcmFuZCBmb3IgdGhvc2UgaW5zdHJ1Y3Rpb25zLAor
ICAgICAgICAvLyB3ZSdsbCBiZSBsb2FkaW5nIGEgNjQtYml0IGRhdGEgZnJvbSB0aGUgbWVtb3J5
IGFkZHJlc3MuIEl0J3Mgbm90IG91ciBpbnRlbnRpb24uCisgICAgICAgIGxvYWQzMihhZGRyZXNz
LCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5jYWxsKHNjcmF0Y2hSZWdp
c3Rlcik7CisjZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5jYWxsX20oYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHJldCgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCShyZXZpc2lvbiAxNDgwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICsz
NiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBw
dWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogcHVibGljOgorI2lmIENQVShYMzIpCisg
ICAgc3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOworI2Vsc2UKICAgICBz
dGF0aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIgPSBUaW1lc0VpZ2h0OworI2VuZGlmCiAKICAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmFuZDMyOworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpicmFuY2gzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQWRk
MzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMzI7CiAgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwpAQCAtMTEwLDEyICsxMTUsMzkgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5jdnRzaTJzZF9ycihzY3JhdGNoUmVnaXN0ZXIsIGRl
c3QpOwogICAgIH0KIAorICAgIHZvaWQgcm90YXRlUmlnaHQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyY0RzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvcmxfaThyKGlt
bS5tX3ZhbHVlLCBzcmNEc3QpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1t
MzIgaW1tLCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGltbSwgc2NyYXRj
aFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3Jj
LCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKHNyYyA9PSBYODZSZWdpc3RlcnM6
OmVheCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfRUFYbShhZGRyZXNzKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0
Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTMyKHNyYywgc2NyYXRjaFJlZ2lzdGVyKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAg
eworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rl
cik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3Rl
ciksIHJpZ2h0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICB7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisK
ICAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwpA
QCAtNTI4LDMzICs1NjAsNTMgQEAgcHVibGljOgogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNv
bnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExh
YmVsKHRoaXMpOworI2lmIENQVShYMzIpCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisjZWxzZQogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworI2VuZGlm
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgRGF0YUxhYmVsUHRyIG1vdmVX
aXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92bF9pMzJyKGluaXRpYWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKKyNlbHNl
CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbml0aWFsVmFsdWUuYXNJbnRwdHIoKSwg
ZGVzdCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsKICAgICB9
CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIg
aW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgZGF0
YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyNpZiBDUFUoWDMyKQorICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgc2Ny
YXRjaFJlZ2lzdGVyKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCBzY3JhdGNoUmVnaXN0ZXIpOworI2VuZGlmCiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hQdHJX
aXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJl
bFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3Rl
ZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5p
dGlhbFJpZ2h0VmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQogICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1t
UHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxWYWx1ZSwgc2NyYXRj
aFJlZ2lzdGVyKTsKKyNpZiBDUFUoWDMyKQorICAgICAgICBzdG9yZTMyKHNjcmF0Y2hSZWdpc3Rl
ciwgYWRkcmVzcyk7CisjZWxzZQogICAgICAgICBzdG9yZTY0KHNjcmF0Y2hSZWdpc3RlciwgYWRk
cmVzcyk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgIH0KICAgICAKQEAgLTU5
MSw3ICs2NDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMg
PSAxOwogICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwotICAgICAgICBjb25zdCBp
bnQgaW1tZWRpYXRlQnl0ZXMgPSA4OworICAgICAgICBjb25zdCBpbnQgaW1tZWRpYXRlQnl0ZXMg
PSBzaXplb2Yodm9pZCopOwogICAgICAgICBjb25zdCBpbnQgdG90YWxCeXRlcyA9IHJleEJ5dGVz
ICsgb3Bjb2RlQnl0ZXMgKyBpbW1lZGlhdGVCeXRlczsKICAgICAgICAgQVNTRVJUKHRvdGFsQnl0
ZXMgPj0gbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIGxhYmVsLmxh
YmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMpOwpAQCAtNjA0LDEyICs2NTYsMjAgQEAgcHVibGljOgog
ICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJl
c3MsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2
ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rl
cik7CisjaWYgQ1BVKFgzMikKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92
bF9pMzJyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQor
ICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25T
dGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5p
dGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQsIHZvaWQqIGluaXRpYWxWYWx1
ZSkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihp
bnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjaWYgQ1BVKFgzMikKKyAg
ICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92bF9pMzJyKGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluaXRp
YWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisjZWxzZQorICAgICAgICBYODZBc3NlbWJsZXI6
OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVz
cygpLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJl
Z2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTQ4MDYzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgzLDYgKzY4MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICB2b2lkIHJvcmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGltbSA9PSAxKQorICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMl9FdjEsIEdST1VQMl9PUF9ST1IsIGRzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdkliLCBHUk9VUDJfT1BfUk9SLCBk
c3QpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9
CisgICAgfQorCiAjZW5kaWYKIAogICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpCkBAIC0xMDA3LDYgKzEwMTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9URVNUX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHRlc3RsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfVEVTVF9Fdkd2
LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB0ZXN0cV9pMzJyKGludCBp
bW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAzX0V2SXosIEdST1VQM19PUF9URVNULCBkc3QpOwpAQCAtMTExMSw3ICsxMTI2
LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01P
Vl9FQVhPdik7CiAjaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
NjQocmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgYWRkciBpcyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMy
IG1vZGUpLgorICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oYWRkcikpOwogI2Vsc2UKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KGFkZHIpKTsKICNlbmRpZgpAQCAtMTE5Myw3ICsxMjA5
LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01P
Vl9PdkVBWCk7CiAjaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
NjQocmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgYWRkciBpcyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIgaW4gWDMy
IG1vZGUpLgorICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oYWRkcikpOwogI2Vsc2UKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KGFkZHIpKTsKICNlbmRpZgpAQCAtMTIyMywxMyArMTI0
MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZxX21FQVgoY29uc3Qgdm9pZCogYWRkcikKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9FQVhPdik7Ci0gICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8aW50NjRfdD4oYWRk
cikpOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFkZHIgaXMgemVybyBleHRlbmRlZCAoaWYg
aXQncyBhIDMyLWJpdCBhZGRyIGluIFgzMiBtb2RlKS4KKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlNjQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHIpKTsKICAgICB9CiAKICAg
ICB2b2lkIG1vdnFfRUFYbShjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX092RUFYKTsKLSAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlNjQocmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90PihhZGRyKSk7CisgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgYWRkciBpcyB6ZXJvIGV4dGVuZGVkIChpZiBpdCdzIGEgMzItYml0IGFkZHIg
aW4gWDMyIG1vZGUpLgorICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU2NChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oYWRkcikpOwogICAgIH0KIAogICAgIHZvaWQgbW92cV9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTg5OSw2ICsxOTE4
LDI1IEBAIHB1YmxpYzoKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzV29yZCA9IGltbTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlczsgaSA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOyArK2kpCisgICAgICAg
ICAgICBwdHJbaV0gPSB1LmFzQnl0ZXNbaSAtIHJleEJ5dGVzIC0gb3Bjb2RlQnl0ZXNdOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19tb3ZsX2kzMnIodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgaW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAg
Y29uc3QgaW50IHJleEJ5dGVzID0gKGRzdCA+PSBYODZSZWdpc3RlcnM6OnI4KSA/IDEgOiAwOwor
ICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOworICAgICAgICBBU1NFUlQocmV4Qnl0
ZXMgKyBvcGNvZGVCeXRlcyA8PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICB1
aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0
KTsKKyAgICAgICAgaWYgKGRzdCA+PSBYODZSZWdpc3RlcnM6OnI4KQorICAgICAgICAgICAgcHRy
WzBdID0gUFJFX1JFWCB8IChkc3QgPj4gMyk7CisgICAgICAgIHB0cltyZXhCeXRlc10gPSBPUF9N
T1ZfRUFYSXYgfCAoZHN0ICYgNyk7CisgICAgICAgIAorICAgICAgICB1bmlvbiB7CisgICAgICAg
ICAgICB1aW50MzJfdCBhc1dvcmQ7CisgICAgICAgICAgICB1aW50OF90IGFzQnl0ZXNbNF07Cisg
ICAgICAgIH0gdTsKKyAgICAgICAgdS5hc1dvcmQgPSBpbW07CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IHJleEJ5dGVzICsgb3Bjb2RlQnl0ZXM7IGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsgKytpKQogICAgICAgICAgICAgcHRyW2ldID0gdS5h
c0J5dGVzW2kgLSByZXhCeXRlcyAtIG9wY29kZUJ5dGVzXTsKICAgICB9CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCShyZXZpc2lvbiAxNDgwNjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIg
KzM1LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorI2lmIFVTRShK
U1ZBTFVFNjQpICYmICFDUFUoWDMyKQorI2RlZmluZSBFTkNPREVfSU5fTk9ERV9QT0lOVEVSIDEK
KyNlbHNlCisjZGVmaW5lIEVOQ09ERV9JTl9OT0RFX1BPSU5URVIgMAorI2VuZGlmCisKIGNsYXNz
IEFkamFjZW5jeUxpc3Q7CiAKIGNsYXNzIEVkZ2UgewogcHVibGljOgogICAgIGV4cGxpY2l0IEVk
Z2UoTm9kZSogbm9kZSA9IDAsIFVzZUtpbmQgdXNlS2luZCA9IFVudHlwZWRVc2UsIFByb29mU3Rh
dHVzIHByb29mU3RhdHVzID0gTmVlZHNDaGVjaykKLSNpZiBVU0UoSlNWQUxVRTY0KQorI2lmIEVO
Q09ERV9JTl9OT0RFX1BPSU5URVIKICAgICAgICAgOiBtX2VuY29kZWRXb3JkKG1ha2VXb3JkKG5v
ZGUsIHVzZUtpbmQsIHByb29mU3RhdHVzKSkKICNlbHNlCiAgICAgICAgIDogbV9ub2RlKG5vZGUp
CkBAIC00OSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotI2lmIFVTRShK
U1ZBTFVFNjQpCisjaWYgRU5DT0RFX0lOX05PREVfUE9JTlRFUgogICAgIE5vZGUqIG5vZGUoKSBj
b25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Tm9kZSo+KG1fZW5jb2RlZFdvcmQgPj4gc2hpZnQo
KSk7IH0KICNlbHNlCiAgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQpA
QCAtNjAsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5v
ZGUpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCisjaWYgRU5DT0RFX0lOX05PREVfUE9JTlRF
UgogICAgICAgICBtX2VuY29kZWRXb3JkID0gbWFrZVdvcmQobm9kZSwgdXNlS2luZCgpLCBwcm9v
ZlN0YXR1cygpKTsKICNlbHNlCiAgICAgICAgIG1fbm9kZSA9IG5vZGU7CkBAIC02OSw3ICs3NSw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBVc2VLaW5kIHVzZUtpbmRVbmNoZWNrZWQoKSBjb25zdAog
ICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQorI2lmIEVOQ09ERV9JTl9OT0RFX1BPSU5URVIKICAg
ICAgICAgdW5zaWduZWQgbWFza2VkID0gbV9lbmNvZGVkV29yZCAmICgoKDEgPDwgc2hpZnQoKSkg
LSAxKSk7CiAgICAgICAgIHVuc2lnbmVkIHNoaWZ0ZWQgPSBtYXNrZWQgPj4gMTsKICNlbHNlCkBA
IC04OCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZUtpbmQoVXNlS2luZCB1c2VL
aW5kKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUoKSk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
KyNpZiBFTkNPREVfSU5fTk9ERV9QT0lOVEVSCiAgICAgICAgIG1fZW5jb2RlZFdvcmQgPSBtYWtl
V29yZChub2RlKCksIHVzZUtpbmQsIHByb29mU3RhdHVzKCkpOwogI2Vsc2UKICAgICAgICAgbV9l
bmNvZGVkV29yZCA9IG1ha2VXb3JkKHVzZUtpbmQsIHByb29mU3RhdHVzKCkpOwpAQCAtMTA3LDcg
KzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb29mU3RhdHVzKFByb29mU3RhdHVzIHBy
b29mU3RhdHVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUoKSk7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKKyNpZiBFTkNPREVfSU5fTk9ERV9QT0lOVEVSCiAgICAgICAgIG1fZW5jb2RlZFdvcmQg
PSBtYWtlV29yZChub2RlKCksIHVzZUtpbmQoKSwgcHJvb2ZTdGF0dXMpOwogI2Vsc2UKICAgICAg
ICAgbV9lbmNvZGVkV29yZCA9IG1ha2VXb3JkKHVzZUtpbmQoKSwgcHJvb2ZTdGF0dXMpOwpAQCAt
MTMxLDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oRWRnZSBv
dGhlcikgY29uc3QKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkNPREVfSU5fTk9E
RV9QT0lOVEVSCiAgICAgICAgIHJldHVybiBtX2VuY29kZWRXb3JkID09IG90aGVyLm1fZW5jb2Rl
ZFdvcmQ7CiAjZWxzZQogICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZSAmJiBt
X2VuY29kZWRXb3JkID09IG90aGVyLm1fZW5jb2RlZFdvcmQ7CkBAIC0xNDcsNyArMTUzLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQWRqYWNlbmN5TGlzdDsKICAgICAK
LSNpZiBVU0UoSlNWQUxVRTY0KQorI2lmIEVOQ09ERV9JTl9OT0RFX1BPSU5URVIKICAgICBzdGF0
aWMgdWludDMyX3Qgc2hpZnQoKSB7IHJldHVybiA2OyB9CiAgICAgCiAgICAgc3RhdGljIHVpbnRw
dHJfdCBtYWtlV29yZChOb2RlKiBub2RlLCBVc2VLaW5kIHVzZUtpbmQsIFByb29mU3RhdHVzIHBy
b29mU3RhdHVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9u
IDE0ODA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHN0cnVjdCBOZXdBcnJheUJ1ZmZlckRhdGEgewogc3Ry
dWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1
ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZv
KHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkp
IHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyNpZiBPUyhEQVJXSU4pIHx8
IChDUFUoWDg2XzY0KSAmJiAhQ1BVKFgzMikpCiAgICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2
YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KICNlbmRp
ZgogICAgIGV4cGxpY2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNDgwNjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03ODUsNiArNzg1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZQogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIobV9qaXQuY29kZUJs
b2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJh
bmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJn
ZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSkpOworI2lmIENQVShY
MzIpCisgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgY2FsbGVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyNlbmRp
ZgogCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIs
IE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CiAgICAg
bV9qaXQuc3RvcmU2NChyZXN1bHRHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3Rl
cikpICogSlNTdGFjazo6U2NvcGVDaGFpbikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvUmVnaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
UmVnaW9uLmgJKHJldmlzaW9uIDE0ODA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1JlZ2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjZGVmaW5lIEhFQVBf
TUVNT1JZX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90Pigt
MykpCiAKICNpZm5kZWYgRU5BQkxFX1NVUEVSX1JFR0lPTgotI2lmIFVTRShKU1ZBTFVFNjQpCisj
aWYgVVNFKEpTVkFMVUU2NCkgJiYgIUNQVShYMzIpCiAjZGVmaW5lIEVOQUJMRV9TVVBFUl9SRUdJ
T04gMQogI2Vsc2UKICNkZWZpbmUgRU5BQkxFX1NVUEVSX1JFR0lPTiAwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkocmV2aXNpb24g
MTQ4MDYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBjbGFzcyBEZW1hbmRFeGVjdXRh
YmxlQWxsb2NhdG9yOwogI2lmIEVOQUJMRShFWEVDVVRBQkxFX0FMTE9DQVRPUl9GSVhFRCkKICNp
ZiBDUFUoQVJNKQogc3RhdGljIGNvbnN0IHNpemVfdCBmaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29s
U2l6ZSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBDUFUoWDg2XzY0KQorI2VsaWYgQ1BVKFg4
Nl82NCkgJiYgIUNQVShYMzIpCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1l
bW9yeVBvb2xTaXplID0gMTAyNCAqIDEwMjQgKiAxMDI0OwogI2Vsc2UKIHN0YXRpYyBjb25zdCBz
aXplX3QgZml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAzMiAqIDEwMjQgKiAxMDI0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNDgwNjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTgsNiArMTk4LDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9w
Y29kZUkKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZU9wQ2FsbCk7CiAg
ICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2UpOwogCisjaWYgQ1BVKFgzMikKKyAgICAvLyBUaGUgYWJv
dmUgYnJhbmNoUHRyIGRvZXNuJ3QgY2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIGNhbGxlZSBpc24n
dCBhIGNlbGwuCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0
YWdNYXNrUmVnaXN0ZXIpKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUKG1fY2FsbFN0cnVjdHVyZVN0
dWJDb21waWxhdGlvbkluZm8uc2l6ZSgpID09IGNhbGxMaW5rSW5mb0luZGV4KTsKICAgICBtX2Nh
bGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvLmFwcGVuZChTdHJ1Y3R1cmVTdHViQ29tcGls
YXRpb25JbmZvKCkpOwogICAgIG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9bY2Fs
bExpbmtJbmZvSW5kZXhdLmhvdFBhdGhCZWdpbiA9IGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9uQ2hl
Y2s7CkBAIC0yMTksNiArMjI0LDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShP
cGNvZGVJRAogICAgIH0KIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyNpZiBDUFUoWDMyKQor
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyNlbmRpZgogICAgIAogICAgIG1fY2FsbFN0cnVjdHVy
ZVN0dWJDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlv
biA9IGVtaXROYWtlZENhbGwob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0ID8gbV9nbG9iYWxEYXRh
LT5nZXRDVElTdHViKGxpbmtDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKSA6IG1fZ2xvYmFsRGF0
YS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbEdlbmVyYXRvcikuY29kZSgpKTsKIApAQCAtMjI5LDcgKzIz
Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGwKIHsKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hUZXN0
UHRyKE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJlKSkp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0
ZWRFeGVjdXRhYmxlKSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE0ODA2MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0
cnVjCiAgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CiAgICAgICAgIEp1bXAgYWN0
aXZhdGlvbk5vdENyZWF0ZWQ7CiAgICAgICAgIGlmIChjaGVja1RvcExldmVsKQotICAgICAgICAg
ICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIGFkZHJlc3NGb3Io
bV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7CisgICAgICAgICAgICBhY3RpdmF0
aW9uTm90Q3JlYXRlZCA9IGJyYW5jaFRlc3Q2NChaZXJvLCBhZGRyZXNzRm9yKG1fY29kZUJsb2Nr
LT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSwgcmVnVDApOwogICAgICAgICBhY3RpdmF0aW9uTm90
Q3JlYXRlZC5saW5rKHRoaXMpOwogICAgIH0KQEAgLTEyMjIsNyArMTIyMiw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWMKICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QwKTsKIAogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJl
Z1QwKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDApOworICAgIGxvYWQ2NChBZGRyZXNz
KHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kICogc2l6ZW9mKFJlZ2lzdGVy
KSksIHJlZ1QwKTsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KQEAgLTEy
MzksNyArMTIzOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWMK
ICAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKICAgICAgICAgSnVtcCBhY3RpdmF0
aW9uTm90Q3JlYXRlZDsKICAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwpCi0gICAgICAgICAgICBh
Y3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgYWRkcmVzc0ZvcihtX2Nv
ZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpKTsKKyAgICAgICAgICAgIGFjdGl2YXRpb25O
b3RDcmVhdGVkID0gYnJhbmNoVGVzdDY0KFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFj
dGl2YXRpb25SZWdpc3RlcigpKSk7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNT
Y29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMSk7CiAgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVh
dGVkLmxpbmsodGhpcyk7CiAgICAgfQpAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1YwogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDEs
IHJlZ1QwLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmll
ckZvclZhcmlhYmxlQWNjZXNzKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNWYXJp
YWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1QxKTsKLSAgICBzdG9yZVB0cihy
ZWdUMCwgQWRkcmVzcyhyZWdUMSwgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCAqIHNp
emVvZihSZWdpc3RlcikpKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9pbml0X2dsb2JhbF9jb25zdChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJl
dmlzaW9uIDE0ODA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNiArMzcwLDcgQEAgU1lNQk9MX1NUUklORyhjdGlPcFRo
cm93Tm90Q2F1Z2h0KSAiOiIgIgogCiAjaWYgQ09NUElMRVIoR0NDKSAmJiBDUFUoWDg2XzY0KQog
CisjaWYgIUNQVShYMzIpCiAvLyBUaGVzZSBBU1NFUlRzIHJlbWluZCB5b3UgdGhhdCwgaWYgeW91
IGNoYW5nZSB0aGUgbGF5b3V0IG9mIEpJVFN0YWNrRnJhbWUsIHlvdQogLy8gbmVlZCB0byBjaGFu
Z2UgdGhlIGFzc2VtYmx5IHRyYW1wb2xpbmVzIGJlbG93IHRvIG1hdGNoLgogQ09NUElMRV9BU1NF
UlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgPT0gMHg1OCwgSklU
U3RhY2tGcmFtZV9jYWxsRnJhbWVfb2Zmc2V0X21hdGNoZXNfY3RpVHJhbXBvbGluZSk7CkBAIC00
MzYsNiArNDM3LDcyIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICIK
ICAgICAicG9wcSAlcmJwIiAiXG4iCiAgICAgInJldCIgIlxuIgogKTsKKyNlbHNlCitDT01QSUxF
X0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSA9PSAweDQ4
LCBKSVRTdGFja0ZyYW1lX2NhbGxGcmFtZV9vZmZzZXRfbWF0Y2hlc19jdGlUcmFtcG9saW5lKTsK
K0NPTVBJTEVfQVNTRVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjb2RlKSA9PSAw
eDQwLCBKSVRTdGFja0ZyYW1lX2NvZGVfb2Zmc2V0X21hdGNoZXNfY3RpVHJhbXBvbGluZSk7CitD
T01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgc2F2ZWRSQlgpID09
IDB4NTgsIEpJVFN0YWNrRnJhbWVfc3R1Yl9hcmd1bWVudF9zcGFjZV9tYXRjaGVzX2N0aVRyYW1w
b2xpbmUpOworCithc20gKAorIi50ZXh0XG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlU
cmFtcG9saW5lKSAiXG4iCitISURFX1NZTUJPTChjdGlUcmFtcG9saW5lKSAiXG4iCitTWU1CT0xf
U1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCisgICAgInB1c2hxICVyYnAiICJcbiIKKyAg
ICAibW92bCAlZXNwLCAlZWJwIiAiXG4iCisgICAgInB1c2hxICVyMTIiICJcbiIKKyAgICAicHVz
aHEgJXIxMyIgIlxuIgorICAgICJwdXNocSAlcjE0IiAiXG4iCisgICAgInB1c2hxICVyMTUiICJc
biIKKyAgICAicHVzaHEgJXJieCIgIlxuIgorICAgIC8vIEZvcm0gdGhlIEpJVCBzdHVicyBhcmVh
CisgICAgInN1YmwgJDB4NTgsICVlc3AiICJcbiIKKyAgICAibW92bCAlcjlkLCAweDU0KCVlc3Ap
IiAiXG4iCisgICAgIm1vdmwgJXI4ZCwgMHg1MCglZXNwKSIgIlxuIgorICAgICJtb3ZsICVlY3gs
IDB4NGMoJWVzcCkiICJcbiIKKyAgICAibW92bCAlZWR4LCAweDQ4KCVlc3ApIiAiXG4iCisgICAg
Im1vdmwgJWVzaSwgMHg0NCglZXNwKSIgIlxuIgorICAgICJtb3ZsICVlZGksIDB4NDAoJWVzcCki
ICJcbiIKKyAgICAibW92cSAkNTEyLCAlcjEyIiAiXG4iCisgICAgIm1vdnEgJDB4RkZGRjAwMDAw
MDAwMDAwMCwgJXIxNCIgIlxuIgorICAgICJtb3ZxICQweEZGRkYwMDAwMDAwMDAwMDIsICVyMTUi
ICJcbiIKKyAgICAibW92bCAlZWR4LCAlcjEzZCIgIlxuIgorICAgICJjYWxsIColcmRpIiAiXG4i
CisgICAgImFkZGwgJDB4NTgsICVlc3AiICJcbiIKKyAgICAicG9wcSAlcmJ4IiAiXG4iCisgICAg
InBvcHEgJXIxNSIgIlxuIgorICAgICJwb3BxICVyMTQiICJcbiIKKyAgICAicG9wcSAlcjEzIiAi
XG4iCisgICAgInBvcHEgJXIxMiIgIlxuIgorICAgICJwb3BxICVyYnAiICJcbiIKKyAgICAicmV0
IiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lRW5kKSAiXG4iCitI
SURFX1NZTUJPTChjdGlUcmFtcG9saW5lRW5kKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVRyYW1w
b2xpbmVFbmQpICI6IiAiXG4iCispOworCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Y3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKK0hJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9s
aW5lKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgor
ICAgICJtb3ZsICVlc3AsICVlZGkiICJcbiIKKyAgICAiY2FsbCAiIExPQ0FMX1JFRkVSRU5DRShj
dGlfdm1fdGhyb3cpICJcbiIKKyAgICAiaW50MyIgIlxuIgorKTsKKworYXNtICgKKyIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKK0hJREVfU1lNQk9MKGN0
aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdo
dCkgIjoiICJcbiIKKyAgICAiYWRkbCAkMHg1OCwgJWVzcCIgIlxuIgorICAgICJwb3BxICVyYngi
ICJcbiIKKyAgICAicG9wcSAlcjE1IiAiXG4iCisgICAgInBvcHEgJXIxNCIgIlxuIgorICAgICJw
b3BxICVyMTMiICJcbiIKKyAgICAicG9wcSAlcjEyIiAiXG4iCisgICAgInBvcHEgJXJicCIgIlxu
IgorICAgICJyZXQiICJcbiIKKyk7CisjZW5kaWYKIAogI2VsaWYgQ09NUElMRVIoTVNWQykgJiYg
Q1BVKFg4Nl82NCkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2
aXNpb24gMTQ4MDYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3
b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSw5IEBAIHVuaW9uIEpJVFN0dWJBcmcgewogICAgIAog
I2lmICFPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogc3RydWN0IEpJVFN0YWNrRnJhbWUgewot
ICAgIHZvaWQqIHJlc2VydmVkOyAvLyBVbnVzZWQKKyAgICBpbnQ2NF90IHJlc2VydmVkOyAvLyBV
bnVzZWQKICAgICBKSVRTdHViQXJnIGFyZ3NbNl07Ci0gICAgdm9pZCogcGFkZGluZ1syXTsgLy8g
TWFpbnRhaW4gMzItYnl0ZSBzdGFjayBhbGlnbm1lbnQgKHBvc3NpYmx5IG92ZXJraWxsKS4KKyAg
ICB2b2lkKiBwYWRkaW5nWzJdOyAvLyBNYWludGFpbiAxNi1ieXRlIHN0YWNrIGFsaWdubWVudC4K
IAogICAgIHZvaWQqIGNvZGU7CiAgICAgSlNTdGFjayogc3RhY2s7CkBAIC0xMDAsMTYgKzEwMCwy
MSBAQCBzdHJ1Y3QgSklUU3RhY2tGcmFtZSB7CiAgICAgdm9pZCogdW51c2VkMjsKICAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGE7CiAKLSAgICB2b2lkKiBzYXZlZFJCWDsKLSAgICB2b2lkKiBz
YXZlZFIxNTsKLSAgICB2b2lkKiBzYXZlZFIxNDsKLSAgICB2b2lkKiBzYXZlZFIxMzsKLSAgICB2
b2lkKiBzYXZlZFIxMjsKLSAgICB2b2lkKiBzYXZlZFJCUDsKLSAgICB2b2lkKiBzYXZlZFJJUDsK
KyAgICBpbnQ2NF90IHNhdmVkUkJYOworICAgIGludDY0X3Qgc2F2ZWRSMTU7CisgICAgaW50NjRf
dCBzYXZlZFIxNDsKKyAgICBpbnQ2NF90IHNhdmVkUjEzOworICAgIGludDY0X3Qgc2F2ZWRSMTI7
CisgICAgaW50NjRfdCBzYXZlZFJCUDsKKyAgICBpbnQ2NF90IHNhdmVkUklQOwogCiAgICAgLy8g
V2hlbiBKSVQgY29kZSBtYWtlcyBhIGNhbGwsIGl0IHB1c2hlcyBpdHMgcmV0dXJuIGFkZHJlc3Mg
anVzdCBiZWxvdyB0aGUgcmVzdCBvZiB0aGUgc3RhY2suCisjaWYgQ1BVKFgzMikKKyAgICAvLyBP
biBYMzIgdGhlIHJldHVybiBhZGRyZXNzIG9jY3VwaWVzIGEgOC1ieXRlIHNsb3QgKHdpdGggdGhl
IGhpZ2hlciA0IGJ5dGVzIHplcm8nZWQpCisgICAgUmV0dXJuQWRkcmVzc1B0ciogcmV0dXJuQWRk
cmVzc1Nsb3QoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFJldHVybkFkZHJlc3NQdHIqPih0
aGlzKSAtIDI7IH0KKyNlbHNlCiAgICAgUmV0dXJuQWRkcmVzc1B0ciogcmV0dXJuQWRkcmVzc1Ns
b3QoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFJldHVybkFkZHJlc3NQdHIqPih0aGlzKSAt
IDE7IH0KKyNlbmRpZgogfTsKICNlbGlmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiBzdHJ1
Y3QgSklUU3RhY2tGcmFtZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRjaFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGNoUmVzdWx0LmgJKHJldmlzaW9uIDE0ODA2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGNoUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDE3IEBA
IHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgICAgIHJldHVybiBzdGFydCA9PSBlbmQ7CiAgICAg
fQogCisjaWYgQ1BVKFgzMikKKyAgICAvLyBPbiBYMzIsIHNpemVfdCBpcyAzMi1iaXQgd2hpbGUg
dGhlIHJlZ2lzdGVyIHNpemUgaXMgNjQtYml0LgorICAgIC8vIE1ha2UgZWFjaCBtZW1iZXIgdG8g
YmUgNjQtYml0IHNvIHRoYXQgdGhleSB3aWxsIGJlIHBsYWNlZCBpbiB0d28gcmVnaXN0ZXJzCisg
ICAgLy8gd2hlbiBhIGZ1bmN0aW9uIChhIFlhcnIgSklUIGZ1bmN0aW9uKSByZXR1cm5zIGEgTWF0
Y2hSZXN1bHQgc3RydWN0dXJlLAorICAgIC8vIGEgYmVoYXZpb3IgY29uc2lzdGVudCB3aXRoIGFu
eSBvdGhlciBhcmNoaXRlY3R1cmUuCisgICAgdWludDY0X3Qgc3RhcnQ7CisgICAgdWludDY0X3Qg
ZW5kOworI2Vsc2UKICAgICBzaXplX3Qgc3RhcnQ7CiAgICAgc2l6ZV90IGVuZDsKKyNlbmRpZgog
fTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4MDYzKQorKysgU291cmNlL1dURi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMy0yMSAgWXVxaWFu
ZyBYaWFuICA8eXVxaWFuZy54aWFuQGludGVsLmNvbT4KKworICAgICAgICB4MzIgYmFja2VuZCBv
ZiB0aGUgSklUIGNvbXBpbGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAwNDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIHN1cHBvcnQg
eDMyIGluIHRoZSBKSVQgY29tcGlsZXJzLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEFk
ZCB0aGUgZGVmaW5pdGlvbiBvZiBDUFUoWDMyKQorCiAyMDEzLTA0LTA5ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIGNvbmRp
dGlvbmFsIHNvdXJjZSBmaWxlIGxpc3RzIGluIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lv
biAxNDgwNjMpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjAsNiArMTYwLDkgQEAKICNpZiAgIGRlZmluZWQoX194ODZfNjRfXykgXAogICAgIHx8IGRl
ZmluZWQoX01fWDY0KQogI2RlZmluZSBXVEZfQ1BVX1g4Nl82NCAxCisjaWYgZGVmaW5lZChfX0lM
UDMyX18pCisjZGVmaW5lIFdURl9DUFVfWDMyIDEKKyNlbmRpZgogI2VuZGlmCiAKIC8qIENQVShB
Uk0pIC0gQVJNLCBhbnkgdmVyc2lvbiovCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>