<?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>65901</bug_id>
          
          <creation_ts>2011-08-09 00:49:17 -0700</creation_ts>
          <short_desc>The JSC JIT currently has no facility to profile and report the types of values</short_desc>
          <delta_ts>2011-08-19 19:18:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448461</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-09 00:49:17 -0700</bug_when>
    <thetext>Much of the effort of tuning the DFG involves trying to figure out what types to predict.  But we have no easy way of profiling or reporting the types seen by expressions in programs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448462</commentid>
    <comment_count>1</comment_count>
      <attachid>103334</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-09 00:58:23 -0700</bug_when>
    <thetext>Created attachment 103334
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448463</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-09 00:59:58 -0700</bug_when>
    <thetext>Attachment 103334 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/wtf/StdLibExtras.h:163:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/StdLibExtras.h:177:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/bytecode/CodeBlock.h:270:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448464</commentid>
    <comment_count>3</comment_count>
      <attachid>103334</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-08-09 01:05:06 -0700</bug_when>
    <thetext>Comment on attachment 103334
the patch

Attachment 103334 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9337173</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448465</commentid>
    <comment_count>4</comment_count>
      <attachid>103335</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-09 01:10:52 -0700</bug_when>
    <thetext>Created attachment 103335
the patch (fix style and build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448466</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-09 01:12:31 -0700</bug_when>
    <thetext>Here is sample profiling output when this feature is enabled.  Note that this is most useful if s_dumpsGeneratedCode is set to true.


ValueProfile for 0x7fefc2021600:
   arg = 1: samples = 3, int32 = 64, double = 0, cell = 0
   bc = 105: samples = 3, int32 = 0, double = 64, cell = 0
   bc = 109: samples = 3, int32 = 0, double = 64, cell = 0
   bc = 129: samples = 3, int32 = 0, double = 64, cell = 0
   bc = 133: samples = 3, int32 = 0, double = 64, cell = 0
   bc = 159: samples = 2, int32 = 0, double = 0, cell = 64
   bc = 177: samples = 3, int32 = 0, double = 64, cell = 0
ValueProfile for 0x7fefc202d800:
   arg = 1: samples = 8, int32 = 0, double = 0, cell = 64
   arg = 2: samples = 8, int32 = 0, double = 0, cell = 64
   arg = 3: samples = 8, int32 = 0, double = 0, cell = 64
ValueProfile for 0x7fefc204ca00:
   arg = 1: samples = 8, int32 = 0, double = 0, cell = 64
   arg = 2: samples = 8, int32 = 0, double = 0, cell = 64
   bc = 33: samples = 8, int32 = 0, double = 64, cell = 0
   bc = 35: samples = 8, int32 = 0, double = 64, cell = 0
   bc = 54: samples = 8, int32 = 64, double = 0, cell = 0
   bc = 72: samples = 8, int32 = 64, double = 0, cell = 0
ValueProfile for 0x7fefc2037e00:
   arg = 1: samples = 8, int32 = 0, double = 0, cell = 64
   arg = 2: samples = 8, int32 = 0, double = 0, cell = 64
   bc = 33: samples = 8, int32 = 0, double = 64, cell = 0
   bc = 35: samples = 8, int32 = 0, double = 64, cell = 0
   bc = 54: samples = 8, int32 = 64, double = 0, cell = 0
   bc = 72: samples = 8, int32 = 64, double = 0, cell = 0
ValueProfile for 0x7fefc2042400:
   arg = 1: samples = 8, int32 = 64, double = 0, cell = 0
   arg = 2: samples = 8, int32 = 64, double = 0, cell = 0
ValueProfile for 0x7fefc2011000:
   bc = 22: samples = 3, int32 = 0, double = 64, cell = 0


Here is the performance impact when this is enabled.



[pizlo@minime bencher] ./bencher TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc ValueProfiler:/Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc
TipOfTree: /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
ValueProfiler: /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc
376/376
                                           TipOfTree            ValueProfiler    
SunSpider:
   3d-cube                               8.3063+-0.2447   ?     8.5934+-0.1407      ? might be 1.0346x slower
   3d-morph                              7.4778+-0.1030   ?     7.4816+-0.1469      ?
   3d-raytrace                           8.6724+-0.1935   !     9.8602+-0.1691      ! definitely 1.1370x slower
   access-binary-trees                   2.1589+-0.1113   ?     2.3136+-0.0478      ? might be 1.0717x slower
   access-fannkuch                      11.5040+-0.1137   !    12.4823+-0.3213      ! definitely 1.0850x slower
   access-nbody                          6.3985+-0.0758   !     6.9130+-0.1413      ! definitely 1.0804x slower
   access-nsieve                         3.4068+-0.1366   ?     3.5767+-0.0992      ? might be 1.0499x slower
   bitops-3bit-bits-in-byte              2.4047+-0.0435   !     2.6037+-0.0567      ! definitely 1.0827x slower
   bitops-bits-in-byte                   6.4718+-0.1681   ^     5.9623+-0.1465      ^ definitely 1.0855x faster
   bitops-bitwise-and                    3.8309+-0.1916         3.6319+-0.1368        might be 1.0548x faster
   bitops-nsieve-bits                    5.3318+-0.1112   !     5.7348+-0.0813      ! definitely 1.0756x slower
   controlflow-recursive                 2.0706+-0.0608   !     2.4789+-0.0614      ! definitely 1.1972x slower
   crypto-aes                            6.8621+-0.2065   !     7.5240+-0.1857      ! definitely 1.0965x slower
   crypto-md5                            2.9301+-0.0914   !     3.2301+-0.0483      ! definitely 1.1024x slower
   crypto-sha1                           2.4821+-0.0480   !     2.7375+-0.0685      ! definitely 1.1029x slower
   date-format-tofte                    10.8158+-0.2540   !    11.4041+-0.2644      ! definitely 1.0544x slower
   date-format-xparb                     8.5976+-0.1805   ?     8.7141+-0.2467      ? might be 1.0135x slower
   math-cordic                           6.1759+-0.0928   !     6.4378+-0.1011      ! definitely 1.0424x slower
   math-partial-sums                     7.4856+-0.1438         7.4773+-0.1746      
   math-spectral-norm                    3.6331+-0.0976   ?     3.7043+-0.0446      ? might be 1.0196x slower
   regexp-dna                           10.3002+-0.1749   ?    10.3529+-0.1731      ?
   string-base64                         5.3835+-0.1827   ?     5.5308+-0.1230      ? might be 1.0274x slower
   string-fasta                          7.0906+-0.1808   ?     7.2920+-0.1131      ? might be 1.0284x slower
   string-tagcloud                      13.3704+-0.1666   ?    13.6297+-0.2870      ? might be 1.0194x slower
   string-unpack-code                   18.5704+-0.3188        18.4064+-0.3542      
   string-validate-input                 6.5386+-0.2296   ?     6.9250+-0.2225      ? might be 1.0591x slower

   &lt;arithmetic&gt;                          6.8566+-0.0509   !     7.1153+-0.0401      ! definitely 1.0377x slower
   &lt;geometric&gt;                           5.8633+-0.0477   !     6.1364+-0.0315      ! definitely 1.0466x slower
   &lt;harmonic&gt;                            4.9473+-0.0516   !     5.2478+-0.0235      ! definitely 1.0607x slower

                                           TipOfTree            ValueProfiler    
V8:
   crypto                              196.2462+-0.8045   !   207.3415+-3.2399      ! definitely 1.0565x slower
   deltablue                           232.2978+-0.9027   !   290.4061+-2.9151      ! definitely 1.2501x slower
   earley-boyer                        105.3592+-1.3546   !   116.9401+-0.5730      ! definitely 1.1099x slower
   raytrace                             69.5510+-0.3109   !    81.2216+-0.6053      ! definitely 1.1678x slower
   regexp                              109.0020+-0.9485   ^   107.3776+-0.3122      ^ definitely 1.0151x faster
   richards                            228.9386+-1.6412   !   273.4472+-1.4395      ! definitely 1.1944x slower
   splay                               106.8907+-0.9253   !   109.6614+-0.9588      ! definitely 1.0259x slower

   &lt;arithmetic&gt;                        149.7551+-0.2917   !   169.4851+-1.0179      ! definitely 1.1317x slower
   &lt;geometric&gt;                         136.6708+-0.3215   !   151.6047+-0.7487      ! definitely 1.1093x slower
   &lt;harmonic&gt;                          124.6122+-0.3511   !   136.6541+-0.5536      ! definitely 1.0966x slower

                                           TipOfTree            ValueProfiler    
Kraken:
   ai-astar                           1340.1625+-6.2365   !  1397.7431+-8.9674      ! definitely 1.0430x slower
   audio-beat-detection                452.7537+-3.6013   !   484.9311+-2.7704      ! definitely 1.0711x slower
   audio-dft                           429.3198+-10.7121  !   465.6006+-13.4208     ! definitely 1.0845x slower
   audio-fft                           363.0736+-3.1600   !   378.7463+-2.4603      ! definitely 1.0432x slower
   audio-oscillator                    341.5923+-3.0383   !   379.5388+-3.6162      ! definitely 1.1111x slower
   imaging-darkroom                    534.9634+-3.7337   !   551.2264+-1.2353      ! definitely 1.0304x slower
   imaging-desaturate                  540.4312+-2.7447   !   561.6124+-2.8461      ! definitely 1.0392x slower
   imaging-gaussian-blur              1970.0386+-16.3271  !  2255.7230+-6.6906      ! definitely 1.1450x slower
   json-parse-financial                 48.0352+-0.1714   ?    48.4602+-0.2799      ?
   json-stringify-tinderbox             63.4177+-0.8523        62.5026+-0.4275        might be 1.0146x faster
   stanford-crypto-aes                 144.5496+-1.8578   !   158.5244+-1.4645      ! definitely 1.0967x slower
   stanford-crypto-ccm                 110.7869+-0.3804   !   120.0760+-0.5221      ! definitely 1.0838x slower
   stanford-crypto-pbkdf2              392.7411+-2.1725   !   407.1917+-4.3448      ! definitely 1.0368x slower
   stanford-crypto-sha256-iterative    145.6710+-0.8984   !   150.2614+-0.5913      ! definitely 1.0315x slower

   &lt;arithmetic&gt;                        491.2526+-0.9934   !   530.1527+-1.7205      ! definitely 1.0792x slower
   &lt;geometric&gt;                         301.4970+-0.9521   !   318.7165+-1.0444      ! definitely 1.0571x slower
   &lt;harmonic&gt;                          181.4722+-0.8372   !   187.5911+-0.3824      ! definitely 1.0337x slower

                                           TipOfTree            ValueProfiler    
All benchmarks:
   &lt;arithmetic&gt;                        172.4275+-0.2891   !   187.0964+-0.5749      ! definitely 1.0851x slower
   &lt;geometric&gt;                          30.3047+-0.1431   !    32.0880+-0.1061      ! definitely 1.0588x slower
   &lt;harmonic&gt;                            8.7219+-0.0890   !     9.2514+-0.0405      ! definitely 1.0607x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452613</commentid>
    <comment_count>6</comment_count>
      <attachid>103335</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-08-17 14:45:20 -0700</bug_when>
    <thetext>Comment on attachment 103335
the patch (fix style and build)

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

r- for a bunch of small suggested changes, mostly just that ValueProfile really should be in its own header.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:207
&gt; +#if ENABLE(VALUE_PROFILER)

The file CodeBlock is a bit too big already, and this struct is non-trivial, I think we really need to add a new ValueProfile.h header.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:682
&gt; +        SegmentedVector&lt;ValueProfile, sizeof(ValueProfile) * 8&gt; m_valueProfiles;

This code is a little weird - I think the second argument to the template should be a count of ValueProfiles, not a size, so isn&apos;t this growing n^2 in the size of ValueProfile? - don&apos;t you just want 8 here?

&gt; Source/JavaScriptCore/jit/JIT.cpp:377
&gt; +    unsigned numberOfValueProfiles = m_codeBlock-&gt;numberOfValueProfiles();

Is this just asserting that no slow cases add any new (FirstProfilingSite) value profiling code? - I think an comment here would be good.

&gt; Source/JavaScriptCore/jit/JIT.h:313
&gt; +#endif

Are value / scratch ever passed? - I didn&apos;t see any case of this.
If not, it may make the code simpler to remove these arguments.
Also, this function may trample regT2/regT3 - I think it&apos;s worth commenting this on the method, to try to make this more apparent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452723</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-17 16:40:09 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.h:207
&gt; &gt; +#if ENABLE(VALUE_PROFILER)
&gt; 
&gt; The file CodeBlock is a bit too big already, and this struct is non-trivial, I think we really need to add a new ValueProfile.h header.

OK, moved to a separate file.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.h:682
&gt; &gt; +        SegmentedVector&lt;ValueProfile, sizeof(ValueProfile) * 8&gt; m_valueProfiles;
&gt; 
&gt; This code is a little weird - I think the second argument to the template should be a count of ValueProfiles, not a size, so isn&apos;t this growing n^2 in the size of ValueProfile? - don&apos;t you just want 8 here?

Ooops, I misunderstood the meaning of that template argument.  Fixed.

&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JIT.cpp:377
&gt; &gt; +    unsigned numberOfValueProfiles = m_codeBlock-&gt;numberOfValueProfiles();
&gt; 
&gt; Is this just asserting that no slow cases add any new (FirstProfilingSite) value profiling code? - I think an comment here would be good.

Added a comment.  It&apos;s asserting that the slow case generation code uses existing ValueProfile instances rather than adding new ones, so that regardless of which path (fast or slow) generated the value it will go to the same ValueProfile, which is tied to that bytecode offset.

&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JIT.h:313
&gt; &gt; +#endif
&gt; 
&gt; Are value / scratch ever passed? - I didn&apos;t see any case of this.
&gt; If not, it may make the code simpler to remove these arguments.
&gt; Also, this function may trample regT2/regT3 - I think it&apos;s worth commenting this on the method, to try to make this more apparent.

Yeah, this was overly general.  Changed it to always use regT0 and regT3, with a comment saying how.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452724</commentid>
    <comment_count>8</comment_count>
      <attachid>104282</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-17 16:40:55 -0700</bug_when>
    <thetext>Created attachment 104282
the patch (fix review)

This will probably make qt and windos bots unhappy.  Will change to r? if/when they are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452727</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 16:47:28 -0700</bug_when>
    <thetext>Attachment 104282 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/bytecode/ValueProfile.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 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>452733</commentid>
    <comment_count>10</comment_count>
      <attachid>104284</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-17 16:52:55 -0700</bug_when>
    <thetext>Created attachment 104284
the patch (fix style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452775</commentid>
    <comment_count>11</comment_count>
      <attachid>104286</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-17 18:06:35 -0700</bug_when>
    <thetext>Created attachment 104286
the patch (fix more style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452777</commentid>
    <comment_count>12</comment_count>
      <attachid>104288</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-17 18:07:33 -0700</bug_when>
    <thetext>Created attachment 104288
value profiling enabled patch

Posting this to check if enabling value profiling breaks any builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454250</commentid>
    <comment_count>13</comment_count>
      <attachid>104286</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-19 18:03:07 -0700</bug_when>
    <thetext>Comment on attachment 104286
the patch (fix more style)

Looks like this patch makes the bots happy, going to land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454279</commentid>
    <comment_count>14</comment_count>
      <attachid>104286</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 19:18:04 -0700</bug_when>
    <thetext>Comment on attachment 104286
the patch (fix more style)

Clearing flags on attachment: 104286

Committed r93466: &lt;http://trac.webkit.org/changeset/93466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454280</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 19:18:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103334</attachid>
            <date>2011-08-09 00:58:23 -0700</date>
            <delta_ts>2011-08-09 01:10:52 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>valueprofile_patch_1.diff</filename>
            <type>text/plain</type>
            <size>20361</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI2NjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAK
KzIwMTEtMDgtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDIEpJVCBjdXJyZW50bHkgaGFzIG5vIGZhY2lsaXR5IHRvIHByb2ZpbGUgYW5kIHJlcG9y
dAorICAgICAgICB0aGUgdHlwZXMgb2YgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvZmls
ZSB0aGUgdmFsdWVzIHNlZW4gYXQgZnVuY3Rpb24gY2FsbHMgKGJvdGgKKyAgICAgICAgYXJndW1l
bnRzIGFuZCByZXN1bHRzKSBhbmQgaGVhcCBsb2Fkcy4gIFRoaXMgaXMgZG9uZSB3aXRoIGVtcGhh
c2lzCisgICAgICAgIG9uIHBlcmZvcm1hbmNlLiAgQSB2YWx1ZSBwcm9maWxpbmcgc2l0ZSBjb25z
aXN0cyBvZjogYWRkLCBhbmQsCisgICAgICAgIG1vdmUsIGFuZCBzdG9yZTsgbm8gYnJhbmNoaW5n
IGlzIG5lY2Vzc2FyeS4gIEVhY2ggdmFsdWUgcHJvZmlsaW5nCisgICAgICAgIHNpdGUgKGNhbGxl
ZCBhIFZhbHVlUHJvZmlsZSkgaGFzIGEgcmluZyBidWZmZXIgb2YgOCByZWNlbnRseS1zZWVuCisg
ICAgICAgIHZhbHVlcy4gIFZhbHVlUHJvZmlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2Nr
OyB0aGVyZSB3aWxsIGJlCisgICAgICAgIG9uZSBmb3IgZWFjaCBhcmd1bWVudCAoZXhjbHVkaW5n
IHRoaXMpIGFuZCBlYWNoIGhlYXAgbG9hZCBvciBjYWxsc2l0ZS4KKyAgICAgICAgRWFjaCB0aW1l
IGEgdmFsdWUgcHJvZmlsaW5nIHNpdGUgZXhlY3V0ZXMsIGl0IHN0b3JlcyB0aGUgdmFsdWUgaW50
bworICAgICAgICBhIHBzZXVkby1yYW5kb20gZWxlbWVudCBpbiB0aGUgVmFsdWVQcm9maWxlIGJ1
ZmZlci4gIFRoZSBwb2ludCBpcworICAgICAgICB0aGF0IGZvciBmcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUsIHdlIHdpbGwgaGF2ZSA4IHNvbWV3aGF0IHJlY2VudAorICAgICAgICB2YWx1ZXMgaW4g
dGhlIGJ1ZmZlciBhbmQgd2lsbCBiZSBhYmxlIHRvIG5vdCBvbmx5IGZpZ3VyZSBvdXQgd2hhdAor
ICAgICAgICB0eXBlIGl0IGlzLCBidXQgYWxzbyB0byBiZSBhYmxlIHRvIHJlYXNvbiBhYm91dCB0
aGUgYWN0dWFsIHZhbHVlcworICAgICAgICBpZiB3ZSB3aXNoIHRvIGRvIHNvLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LiAg
V2hlbiBlbmFibGVkLCBpdAorICAgICAgICByZXN1bHRzIGluIGEgMy43JSBzbG93LWRvd24gb24g
U3VuU3BpZGVyLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mU2FtcGxlcyk6CisgICAgICAgIChKU0M6OlZh
bHVlUHJvZmlsZTo6Y29tcHV0ZVByb2JhYmlsaXR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlOjpudW1iZXJPZkludDMycyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVy
T2ZEb3VibGVzKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpudW1iZXJPZkNlbGxzKToK
KyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mSW50MzIpOgorICAgICAg
ICAoSlNDOjpWYWx1ZVByb2ZpbGU6OnByb2JhYmlsaXR5T2ZEb3VibGUpOgorICAgICAgICAoSlND
OjpWYWx1ZVByb2ZpbGU6OnByb2JhYmlsaXR5T2ZDZWxsKToKKyAgICAgICAgKEpTQzo6Z2V0VmFs
dWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsX3B1
dF9yZXN1bHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToK
KyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDoKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmJpbmFyeVNl
YXJjaCk6CisgICAgICAgIChXVEY6OmdlbmVyaWNCaW5hcnlTZWFyY2gpOgorCiAyMDExLTA4LTA4
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNpbmcgbXByb3Rl
Y3QgdG8gY3JlYXRlIGd1YXJkIHBhZ2VzIGJyZWFrcyBvdXIgdXNlIG9mIG1hZHZpc2UgdG8gcmVs
ZWFzZSBleGVjdXRhYmxlIG1lbW9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDkyNjY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjgsNiAr
MTQyOCwyMyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAKIENv
ZGVCbG9jazo6fkNvZGVCbG9jaygpCiB7CisjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklM
RSkKKyAgICBwcmludGYoIlZhbHVlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsraSkgeworICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUoaSk7CisgICAgICAgIGlm
IChwcm9maWxlLT5ieXRlY29kZU9mZnNldCA8IDApIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9m
aWxlLT5ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgICAgICBwcmludGYoIiAgIGFyZyA9
ICV1OiAiLCBpICsgMSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcHJpbnRmKCIgICBi
YyA9ICVkOiAiLCBwcm9maWxlLT5ieXRlY29kZU9mZnNldCk7CisgICAgICAgIHByaW50Zigic2Ft
cGxlcyA9ICV1LCBpbnQzMiA9ICV1LCBkb3VibGUgPSAldSwgY2VsbCA9ICV1XG4iLAorICAgICAg
ICAgICAgICAgcHJvZmlsZS0+bnVtYmVyT2ZTYW1wbGVzKCksCisgICAgICAgICAgICAgICBwcm9m
aWxlLT5wcm9iYWJpbGl0eU9mSW50MzIoKSwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2Jh
YmlsaXR5T2ZEb3VibGUoKSwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZD
ZWxsKCkpOworICAgIH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEpJVCkKICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKICAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0uZGVyZWYoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDkyNjY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAj
aWYgRU5BQkxFKEpJVCkKQEAgLTIwMyw2ICsyMDQsOTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgc3RydWN0IFZhbHVl
UHJvZmlsZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1Y2tl
dHMgPSAzOyAvLyA4IGJ1Y2tldHMKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mQnVja2V0cyA9IDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgYnVja2V0SW5kZXhNYXNrID0gbnVtYmVyT2ZCdWNrZXRzIC0gMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNlcnRhaW50eSA9IG51bWJlck9mQnVja2V0cyAqIG51
bWJlck9mQnVja2V0czsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1ham9yaXR5ID0g
Y2VydGFpbnR5IC8gMjsKKworICAgICAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0
KQorICAgICAgICAgICAgOiBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsg
KytpKQorICAgICAgICAgICAgICAgIGJ1Y2tldHNbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcihK
U1ZhbHVlKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlNhbXBsZXMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSAwOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0
czsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSkKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0
ZVByb2JhYmlsaXR5KHVuc2lnbmVkIGNvdW50cywgdW5zaWduZWQgbnVtYmVyT2ZTYW1wbGVzKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mU2FtcGxlcykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb3VudHMgKiBjZXJ0YWludHkgLyBu
dW1iZXJPZlNhbXBsZXM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mSW50MzJzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgcmVz
dWx0ID0gMDsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1
Y2tldHM7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0
c1tpXS5nZXQoKS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCsrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZEb3VibGVzKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAgICAgICAgICAgICAgIGlm
ICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0RvdWJsZSgpKQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2Vs
bHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytp
KSB7CisgICAgICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgp
LmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIG5vdCBwYXJ0aWN1bGFybHkgb3B0aW1pemVkLCBpbiB0aGF0
IHRoZXkgd2lsbCBlYWNoCisgICAgICAgIC8vIHBlcmZvcm0gdHdvIHBhc3NlcyBvdmVyIHRoZSBi
dWNrZXRzIGFycmF5LiAgSG93ZXZlciwgdGhleSBhcmUKKyAgICAgICAgLy8gcHJvYmFibHkgdGhl
IGJlc3QgYmV0IHVubGVzcyB5b3UgYXJlIHN1cmUgdGhhdCB5b3Ugd2lsbCBiZSBtYWtpbmcKKyAg
ICAgICAgLy8gdGhlc2UgY2FsbHMgd2l0aCBoaWdoIGZyZXF1ZW5jeS4KKyAgICAgICAgCisgICAg
ICAgIHVuc2lnbmVkIHByb2JhYmlsaXR5T2ZJbnQzMigpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZJbnQzMnMoKSwgbnVtYmVy
T2ZTYW1wbGVzKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBwcm9i
YWJpbGl0eU9mRG91YmxlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNv
bXB1dGVQcm9iYWJpbGl0eShudW1iZXJPZkRvdWJsZXMoKSwgbnVtYmVyT2ZTYW1wbGVzKCkpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBwcm9iYWJpbGl0eU9mQ2VsbCgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHko
bnVtYmVyT2ZDZWxscygpLCBudW1iZXJPZlNhbXBsZXMoKSk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGludCBieXRlY29kZU9mZnNldDsgLy8gLTEgZm9yIHByb2xvZ3VlCisgICAgICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gYnVja2V0c1tudW1iZXJPZkJ1Y2tldHNdOworICAg
IH07CisKKyAgICBpbmxpbmUgaW50IGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFZhbHVl
UHJvZmlsZSogdmFsdWVQcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmls
ZS0+Ynl0ZWNvZGVPZmZzZXQ7CisgICAgfQorI2VuZGlmCisKICAgICBjbGFzcyBDb2RlQmxvY2sg
ewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKQEAgLTM4MSw2ICs0NzQsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
YWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEt
PmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAg
TWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVy
biBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CiAjZW5kaWYKKyAgICAgICAgCisjaWYg
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBWYWx1ZVByb2ZpbGUqIGFkZFZhbHVlUHJv
ZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fdmFsdWVQ
cm9maWxlcy5hcHBlbmQoVmFsdWVQcm9maWxlKGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAg
ICByZXR1cm4gJm1fdmFsdWVQcm9maWxlcy5sYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgdW5z
aWduZWQgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgeyByZXR1cm4gbV92YWx1ZVByb2ZpbGVzLnNp
emUoKTsgfQorICAgICAgICBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZShpbnQgaW5kZXgpIHsg
cmV0dXJuICZtX3ZhbHVlUHJvZmlsZXNbaW5kZXhdOyB9CisgICAgICAgIFZhbHVlUHJvZmlsZSog
dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpnZW5lcmljQmluYXJ5U2VhcmNoPFZhbHVlUHJv
ZmlsZSwgaW50LCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldD4obV92YWx1ZVByb2ZpbGVz
LCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCk7CisgICAgICAgIH0KKyNl
bmRpZgorCiAgICAgICAgIHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbmZvQ291bnQoKSBjb25zdAog
ICAgICAgICB7CiAjaWYgRU5BQkxFKEpJVCkgICAgCkBAIC01NjksNiArNjc3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxHbG9iYWxSZXNvbHZlSW5mbz4gbV9nbG9iYWxSZXNv
bHZlSW5mb3M7CiAgICAgICAgIFZlY3RvcjxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsK
ICAgICAgICAgVmVjdG9yPE1ldGhvZENhbGxMaW5rSW5mbz4gbV9tZXRob2RDYWxsTGlua0luZm9z
OworICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VmFsdWVQcm9maWxlLCBzaXplb2YoVmFsdWVQcm9m
aWxlKSAqIDg+IG1fdmFsdWVQcm9maWxlczsKICNlbmRpZgogCiAgICAgICAgIFZlY3Rvcjx1bnNp
Z25lZD4gbV9qdW1wVGFyZ2V0czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDkyNjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzIsNiArMzcyLDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXggPSAwOwogICAg
IG1fZ2xvYmFsUmVzb2x2ZUluZm9JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9
IDA7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHVuc2lnbmVkIG51bWJlck9mVmFs
dWVQcm9maWxlcyA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsKKyNlbmRp
ZgogCiAgICAgZm9yIChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yIGl0ZXIgPSBtX3Ns
b3dDYXNlcy5iZWdpbigpOyBpdGVyICE9IG1fc2xvd0Nhc2VzLmVuZCgpOykgewogI2lmIFVTRShK
U1ZBTFVFNjQpCkBAIC00NjEsNiArNDY1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKIAogICAgIEFTU0VSVChtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCA9
PSBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAgQVNTRVJUKG1f
Y2FsbExpbmtJbmZvSW5kZXggPT0gbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mby5z
aXplKCkpOworICAgIEFTU0VSVChudW1iZXJPZlZhbHVlUHJvZmlsZXMgPT0gbV9jb2RlQmxvY2st
Pm51bWJlck9mVmFsdWVQcm9maWxlcygpKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBSZXNl
dCB0aGlzLCBpbiBvcmRlciB0byBndWFyZCBpdHMgdXNlIHdpdGggQVNTRVJUcy4KQEAgLTQ5Miw2
ICs0OTcsMTQgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAg
ICAgICBlbWl0Q291bnQoY291bnRlcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKKyAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVPZmZzZXQgPT0gKHVuc2lnbmVkKS0xKTsK
KyAgICAgICAgZm9yIChpbnQgYXJndW1lbnRSZWdpc3RlciA9IC1SZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemUgLSBtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzICsgMTsgYXJndW1l
bnRSZWdpc3RlciA8IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7ICsrYXJndW1l
bnRSZWdpc3RlcikgeworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxGcmFtZVJlZ2lz
dGVyLCBhcmd1bWVudFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAgICAg
ICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKKyAgICAg
ICAgfQorI2VuZGlmCisKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBmYXN0IGxpbmtlZCBj
YWxsLCB3ZSBkbyBub3Qgc2V0IHRoaXMgdXAgaW4gdGhlIGNhbGxlci4KICAgICAgICAgZW1pdFB1
dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBSZWdpc3RlckZpbGU6OkNv
ZGVCbG9jayk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gOTI2NjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDQsNiArMzA0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFsbG9jYXRlQmFz
aWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCB2b2lkKiB2dGFibGUsIFJlZ2lzdGVySUQgcmVzdWx0
LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVz
dWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpT
RnVuY3Rpb24oRnVuY3Rpb25FeGVjdXRhYmxlKiwgUmVnaXN0ZXJJRCBzY29wZUNoYWluLCBSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKKyAgICAgICAgCisgICAgICAg
IGVudW0gVmFsdWVQcm9maWxpbmdTaXRlS2luZCB7IEZpcnN0UHJvZmlsaW5nU2l0ZSwgU3Vic2Vx
dWVudFByb2ZpbGluZ1NpdGUgfTsKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAg
IHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kLCBSZWdp
c3RlcklEIHZhbHVlID0gcmVnVDAsIFJlZ2lzdGVySUQgc2NyYXRjaCA9IChSZWdpc3RlcklEKS0x
KTsKKyNlbHNlCisgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2Zp
bGluZ1NpdGVLaW5kLCBSZWdpc3RlcklEID0gcmVnVDAsIFJlZ2lzdGVySUQgPSAoUmVnaXN0ZXJJ
RCktMSkgeyB9CisjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wg
Z2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3Ay
LCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gOTI2NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHZv
aWQgSklUOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmEKIHZvaWQgSklUOjplbWl0X29w
X2NhbGxfcHV0X3Jlc3VsdChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRz
dCA9IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMu
aAkocmV2aXNpb24gOTI2NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCwzNiBAQCBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24oCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKK2lubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShW
YWx1ZVByb2ZpbGluZ1NpdGVLaW5kIHNpdGVLaW5kLCBSZWdpc3RlcklEIHZhbHVlLCBSZWdpc3Rl
cklEIHNjcmF0Y2gpCit7CisgICAgaWYgKHNjcmF0Y2ggPT0gKFJlZ2lzdGVySUQpLTEpIHsKKyAg
ICAgICAgaWYgKHZhbHVlID09IHJlZ1QzKQorICAgICAgICAgICAgc2NyYXRjaCA9IHJlZ1QyOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzY3JhdGNoID0gcmVnVDM7CisgICAgfQorICAgIAor
ICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlOworICAgIGlmIChzaXRlS2luZCA9PSBGaXJz
dFByb2ZpbGluZ1NpdGUpCisgICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hZGRW
YWx1ZVByb2ZpbGUobV9ieXRlY29kZU9mZnNldCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VS
VChzaXRlS2luZCA9PSBTdWJzZXF1ZW50UHJvZmlsaW5nU2l0ZSk7CisgICAgICAgIHZhbHVlUHJv
ZmlsZSA9IG1fY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2J5dGVj
b2RlT2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKHZhbHVlUHJvZmlsZSk7CisgICAg
CisgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKKyAgICAgICAgYWRk
MzIoSW1tMzIoMSksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgZWxzZQorICAgICAgICBh
ZGQzMihJbW0zMigzKSwgYnVja2V0Q291bnRlclJlZ2lzdGVyKTsKKyAgICBhbmQzMihJbW0zMihW
YWx1ZVByb2ZpbGU6OmJ1Y2tldEluZGV4TWFzayksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7Cisg
ICAgbW92ZShJbW1QdHIodmFsdWVQcm9maWxlLT5idWNrZXRzKSwgc2NyYXRjaCk7CisgICAgc3Rv
cmVQdHIodmFsdWUsIEJhc2VJbmRleChzY3JhdGNoLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIsIFRp
bWVzRWlnaHQpKTsKK30KKyNlbmRpZgorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIAogaW5saW5l
IHZvaWQgSklUOjplbWl0TG9hZFRhZyh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAkocmV2aXNpb24gOTI2NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRyKEJhc2VJbmRleChy
ZWdUMiwgcmVnVDEsIFNjYWxlUHRyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3Zl
Y3RvclswXSkpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBy
ZWdUMCkpOwogCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUp
OwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMTM2LDYgKzEzNyw4
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChiYXNlLCByZWdUMik7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocHJv
cGVydHksIHJlZ1QyKTsKICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisKKyAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKFN1YnNlcXVlbnRQcm9maWxpbmdTaXRlKTsKIH0KIAogdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTMxOCw2ICszMjEsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3RpCiAgICAgY29tcGlsZUdl
dEJ5SWRIb3RQYXRoKGJhc2VWUmVnLCBpZGVudCk7CiAKICAgICBtYXRjaC5saW5rKHRoaXMpOwor
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOwogCiAgICAgLy8gV2UndmUgYWxyZWFkeSBn
ZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBnZXRfYnlfaWQsIHNvIG1ha2Ugc3VyZSBpdCdzIHNraXBw
ZWQgb3Zlci4KQEAgLTM0NSw2ICszNDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQo
SW5zdHJ1Y3Rpb24qCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdU
MCk7CiAgICAgY29tcGlsZUdldEJ5SWRIb3RQYXRoKGJhc2VWUmVnLCBpZGVudCk7CisgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CiB9CiAKQEAgLTM4Nyw2ICszOTIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0CiAgICAgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpKTsKIAogICAgIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UocmVzdWx0VlJlZywgYmFzZVZSZWcs
IGlkZW50LCBpdGVyLCBmYWxzZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShTdWJzZXF1
ZW50UHJvZmlsaW5nU2l0ZSk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZFNsb3dDYXNl
KGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2spCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiA5
MjY2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjplYXg7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRpOwogICAgICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6cjEwOworI2VuZGlmCisgICAgICAgIAogICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6
cjEyOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9
IFg4NlJlZ2lzdGVyczo6cjEzOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDkyNjY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM3LDYgKzEwMzcsMTUg
QEAKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCiAKKy8qIEN1cnJlbnRseSBvbmx5
IGltcGxlbWVudGVkIGZvciBKU1ZBTFVFNjQsIG9ubHkgdGVzdGVkIG9uIFBMQVRGT1JNKE1BQykg
Ki8KKyNpZiAhZGVmaW5lZChFTkFCTEVfVkFMVUVfUFJPRklMRVIpICYmIEVOQUJMRShKSVQpICYm
IFVTRShKU1ZBTFVFNjQpICYmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgRU5BQkxFX1ZBTFVFX1BS
T0ZJTEVSIDAKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoRU5BQkxFX1ZFUkJPU0VfVkFMVUVfUFJP
RklMRSkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorI2RlZmluZSBFTkFCTEVfVkVSQk9TRV9W
QUxVRV9QUk9GSUxFIDAKKyNlbmRpZgorCiAvKiBFbnN1cmUgdGhhdCBlaXRoZXIgdGhlIEpJVCBv
ciB0aGUgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gZW5hYmxlZC4gKi8KICNpZiAhZGVmaW5lZChFTkFC
TEVfSU5URVJQUkVURVIpICYmICFFTkFCTEUoSklUKQogI2RlZmluZSBFTkFCTEVfSU5URVJQUkVU
RVIgMQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZp
c2lvbiA5MjY2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNiw4ICsxMjYsOCBAQCB0ZW1wbGF0ZTxzaXplX3QgZGl2aXNv
cj4gaW5saW5lIHNpemVfdCByCiAvLyBCaW5hcnkgc2VhcmNoIGFsZ29yaXRobSwgY2FsbHMgZXh0
cmFjdEtleSBvbiBwcmUtc29ydGVkIGVsZW1lbnRzIGluIGFycmF5LAogLy8gY29tcGFyZXMgcmVz
dWx0IHdpdGgga2V5IChLZXlUeXBlcyBzaG91bGQgYmUgY29tcGFyYWJsZSB3aXRoICctLScsICc8
JywgJz4nKS4KIC8vIE9wdGltaXplZCBmb3IgY2FzZXMgd2hlcmUgdGhlIGFycmF5IGNvbnRhaW5z
IHRoZSBrZXksIGNoZWNrZWQgYnkgYXNzZXJ0aW9ucy4KLXRlbXBsYXRlPHR5cGVuYW1lIEFycmF5
VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJyYXlUeXBlKik+
Ci1pbmxpbmUgQXJyYXlUeXBlKiBiaW5hcnlTZWFyY2goQXJyYXlUeXBlKiBhcnJheSwgc2l6ZV90
IHNpemUsIEtleVR5cGUga2V5KQordGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwg
dHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJyYXlFbGVtZW50VHlwZSop
PgoraW5saW5lIEFycmF5RWxlbWVudFR5cGUqIGJpbmFyeVNlYXJjaChBcnJheUVsZW1lbnRUeXBl
KiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5KQogewogICAgIC8vIFRoZSBhcnJheSBt
dXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGVsZW1lbnQgKHByZS1jb25kaXRpb24sIGFycmF5IGRv
ZXMgY29uYXRpbiBrZXkpLgogICAgIC8vIElmIHRoZSBhcnJheSBvbmx5IGNvbnRhaW5zIG9uZSBl
bGVtZW50LCBubyBuZWVkIHRvIGRvIHRoZSBjb21wYXJpc29uLgpAQCAtMTU5LDYgKzE1OSw0MyBA
QCBpbmxpbmUgQXJyYXlUeXBlKiBiaW5hcnlTZWFyY2goQXJyYXlUeXBlCiAgICAgcmV0dXJuICZh
cnJheVswXTsKIH0KIAorLy8gTW9kaWZpZWQgYmluYXJ5U2VhcmNoKCkgYWxnb3JpdGhtIGRlc2ln
bmVkIGZvciBhcnJheS1saWtlIGNsYXNzZXMgdGhhdCBzdXBwb3J0CisvLyBvcGVyYXRvcltdIGJ1
dCBub3Qgb3BlcmF0b3IrPS4gIE9uZSBleGFtcGxlIG9mIGEgY2xhc3MgdGhhdCBxdWFsaWZpZXMg
aXMKKy8vIFNlZ21lbnRlZFZlY3Rvci4KK3RlbXBsYXRlPHR5cGVuYW1lIEFycmF5RWxlbWVudFR5
cGUsIHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUoKmV4dHJhY3RLZXkpKEFycmF5RWxlbWVudFR5
cGUqKSwgdHlwZW5hbWUgQXJyYXlUeXBlPgoraW5saW5lIEFycmF5RWxlbWVudFR5cGUqIGdlbmVy
aWNCaW5hcnlTZWFyY2goQXJyYXlUeXBlJiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5
KQoreworICAgIC8vIFRoZSBhcnJheSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGVsZW1lbnQg
KHByZS1jb25kaXRpb24sIGFycmF5IGRvZXMgY29uYXRpbiBrZXkpLgorICAgIC8vIElmIHRoZSBh
cnJheSBvbmx5IGNvbnRhaW5zIG9uZSBlbGVtZW50LCBubyBuZWVkIHRvIGRvIHRoZSBjb21wYXJp
c29uLgorICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHdoaWxlIChzaXplID4gMSkgeworICAg
ICAgICAvLyBQaWNrIGFuIGVsZW1lbnQgdG8gY2hlY2ssIGhhbGYgd2F5IHRocm91Z2ggdGhlIGFy
cmF5LCBhbmQgcmVhZCB0aGUgdmFsdWUuCisgICAgICAgIGludCBwb3MgPSAoc2l6ZSAtIDEpID4+
IDE7CisgICAgICAgIEtleVR5cGUgdmFsID0gZXh0cmFjdEtleSgmYXJyYXlbb2Zmc2V0ICsgcG9z
XSk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUga2V5IG1hdGNoZXMsIHN1Y2Nlc3MhCisg
ICAgICAgIGlmICh2YWwgPT0ga2V5KQorICAgICAgICAgICAgcmV0dXJuICZhcnJheVtvZmZzZXQg
KyBwb3NdOworICAgICAgICAvLyBUaGUgaXRlbSB3ZSBhcmUgbG9va2luZyBmb3IgaXMgc21hbGxl
ciB0aGFuIHRoZSBpdGVtIGJlaW5nIGNoZWNrOyByZWR1Y2UgdGhlIHZhbHVlIG9mICdzaXplJywK
KyAgICAgICAgLy8gY2hvcHBpbmcgb2ZmIHRoZSByaWdodCBoYW5kIGhhbGYgb2YgdGhlIGFycmF5
LgorICAgICAgICBlbHNlIGlmIChrZXkgPCB2YWwpCisgICAgICAgICAgICBzaXplID0gcG9zOwor
ICAgICAgICAvLyBEaXNjYXJkIGFsbCB2YWx1ZXMgaW4gdGhlIGxlZnQgaGFuZCBoYWxmIG9mIHRo
ZSBhcnJheSwgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgaXRlbSBhdCBwb3MuCisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgc2l6ZSAtPSAocG9zICsgMSk7CisgICAgICAgICAgICBvZmZzZXQg
Kz0gKHBvcyArIDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gJ3NpemUnIHNob3VsZCBuZXZl
ciByZWFjaCB6ZXJvLgorICAgICAgICBBU1NFUlQoc2l6ZSk7CisgICAgfQorICAgIAorICAgIC8v
IElmIHdlIHJlYWNoIHRoaXMgcG9pbnQgd2UndmUgY2hvcHBlZCBkb3duIHRvIG9uZSBlbGVtZW50
LCBubyBuZWVkIHRvIGNoZWNrIGl0IG1hdGNoZXMKKyAgICBBU1NFUlQoc2l6ZSA9PSAxKTsKKyAg
ICBBU1NFUlQoa2V5ID09IGV4dHJhY3RLZXkoJmFycmF5W29mZnNldF0pKTsKKyAgICByZXR1cm4g
JmFycmF5W29mZnNldF07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmJp
bmFyeVNlYXJjaDsK
</data>
<flag name="commit-queue"
          id="98913"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103335</attachid>
            <date>2011-08-09 01:10:52 -0700</date>
            <delta_ts>2011-08-17 16:40:55 -0700</delta_ts>
            <desc>the patch (fix style and build)</desc>
            <filename>valueprofile_patch_2.diff</filename>
            <type>text/plain</type>
            <size>20397</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI2NjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAK
KzIwMTEtMDgtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDIEpJVCBjdXJyZW50bHkgaGFzIG5vIGZhY2lsaXR5IHRvIHByb2ZpbGUgYW5kIHJlcG9y
dAorICAgICAgICB0aGUgdHlwZXMgb2YgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvZmls
ZSB0aGUgdmFsdWVzIHNlZW4gYXQgZnVuY3Rpb24gY2FsbHMgKGJvdGgKKyAgICAgICAgYXJndW1l
bnRzIGFuZCByZXN1bHRzKSBhbmQgaGVhcCBsb2Fkcy4gIFRoaXMgaXMgZG9uZSB3aXRoIGVtcGhh
c2lzCisgICAgICAgIG9uIHBlcmZvcm1hbmNlLiAgQSB2YWx1ZSBwcm9maWxpbmcgc2l0ZSBjb25z
aXN0cyBvZjogYWRkLCBhbmQsCisgICAgICAgIG1vdmUsIGFuZCBzdG9yZTsgbm8gYnJhbmNoaW5n
IGlzIG5lY2Vzc2FyeS4gIEVhY2ggdmFsdWUgcHJvZmlsaW5nCisgICAgICAgIHNpdGUgKGNhbGxl
ZCBhIFZhbHVlUHJvZmlsZSkgaGFzIGEgcmluZyBidWZmZXIgb2YgOCByZWNlbnRseS1zZWVuCisg
ICAgICAgIHZhbHVlcy4gIFZhbHVlUHJvZmlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2Nr
OyB0aGVyZSB3aWxsIGJlCisgICAgICAgIG9uZSBmb3IgZWFjaCBhcmd1bWVudCAoZXhjbHVkaW5n
IHRoaXMpIGFuZCBlYWNoIGhlYXAgbG9hZCBvciBjYWxsc2l0ZS4KKyAgICAgICAgRWFjaCB0aW1l
IGEgdmFsdWUgcHJvZmlsaW5nIHNpdGUgZXhlY3V0ZXMsIGl0IHN0b3JlcyB0aGUgdmFsdWUgaW50
bworICAgICAgICBhIHBzZXVkby1yYW5kb20gZWxlbWVudCBpbiB0aGUgVmFsdWVQcm9maWxlIGJ1
ZmZlci4gIFRoZSBwb2ludCBpcworICAgICAgICB0aGF0IGZvciBmcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUsIHdlIHdpbGwgaGF2ZSA4IHNvbWV3aGF0IHJlY2VudAorICAgICAgICB2YWx1ZXMgaW4g
dGhlIGJ1ZmZlciBhbmQgd2lsbCBiZSBhYmxlIHRvIG5vdCBvbmx5IGZpZ3VyZSBvdXQgd2hhdAor
ICAgICAgICB0eXBlIGl0IGlzLCBidXQgYWxzbyB0byBiZSBhYmxlIHRvIHJlYXNvbiBhYm91dCB0
aGUgYWN0dWFsIHZhbHVlcworICAgICAgICBpZiB3ZSB3aXNoIHRvIGRvIHNvLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LiAg
V2hlbiBlbmFibGVkLCBpdAorICAgICAgICByZXN1bHRzIGluIGEgMy43JSBzbG93LWRvd24gb24g
U3VuU3BpZGVyLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mU2FtcGxlcyk6CisgICAgICAgIChKU0M6OlZh
bHVlUHJvZmlsZTo6Y29tcHV0ZVByb2JhYmlsaXR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlOjpudW1iZXJPZkludDMycyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVy
T2ZEb3VibGVzKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpudW1iZXJPZkNlbGxzKToK
KyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mSW50MzIpOgorICAgICAg
ICAoSlNDOjpWYWx1ZVByb2ZpbGU6OnByb2JhYmlsaXR5T2ZEb3VibGUpOgorICAgICAgICAoSlND
OjpWYWx1ZVByb2ZpbGU6OnByb2JhYmlsaXR5T2ZDZWxsKToKKyAgICAgICAgKEpTQzo6Z2V0VmFs
dWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFZh
bHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsX3B1
dF9yZXN1bHQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToK
KyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDoKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmJpbmFyeVNl
YXJjaCk6CisgICAgICAgIChXVEY6OmdlbmVyaWNCaW5hcnlTZWFyY2gpOgorCiAyMDExLTA4LTA4
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNpbmcgbXByb3Rl
Y3QgdG8gY3JlYXRlIGd1YXJkIHBhZ2VzIGJyZWFrcyBvdXIgdXNlIG9mIG1hZHZpc2UgdG8gcmVs
ZWFzZSBleGVjdXRhYmxlIG1lbW9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDkyNjY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjgsNiAr
MTQyOCwyMyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAKIENv
ZGVCbG9jazo6fkNvZGVCbG9jaygpCiB7CisjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklM
RSkKKyAgICBwcmludGYoIlZhbHVlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsraSkgeworICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUoaSk7CisgICAgICAgIGlm
IChwcm9maWxlLT5ieXRlY29kZU9mZnNldCA8IDApIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9m
aWxlLT5ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgICAgICBwcmludGYoIiAgIGFyZyA9
ICV1OiAiLCBpICsgMSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcHJpbnRmKCIgICBi
YyA9ICVkOiAiLCBwcm9maWxlLT5ieXRlY29kZU9mZnNldCk7CisgICAgICAgIHByaW50Zigic2Ft
cGxlcyA9ICV1LCBpbnQzMiA9ICV1LCBkb3VibGUgPSAldSwgY2VsbCA9ICV1XG4iLAorICAgICAg
ICAgICAgICAgcHJvZmlsZS0+bnVtYmVyT2ZTYW1wbGVzKCksCisgICAgICAgICAgICAgICBwcm9m
aWxlLT5wcm9iYWJpbGl0eU9mSW50MzIoKSwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2Jh
YmlsaXR5T2ZEb3VibGUoKSwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZD
ZWxsKCkpOworICAgIH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEpJVCkKICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKICAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0uZGVyZWYoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDkyNjY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAj
aWYgRU5BQkxFKEpJVCkKQEAgLTIwMyw2ICsyMDQsOTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgc3RydWN0IFZhbHVl
UHJvZmlsZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1Y2tl
dHMgPSAzOyAvLyA4IGJ1Y2tldHMKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mQnVja2V0cyA9IDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgYnVja2V0SW5kZXhNYXNrID0gbnVtYmVyT2ZCdWNrZXRzIC0gMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNlcnRhaW50eSA9IG51bWJlck9mQnVja2V0cyAqIG51
bWJlck9mQnVja2V0czsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1ham9yaXR5ID0g
Y2VydGFpbnR5IC8gMjsKKworICAgICAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0
KQorICAgICAgICAgICAgOiBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsg
KytpKQorICAgICAgICAgICAgICAgIGJ1Y2tldHNbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcihK
U1ZhbHVlKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlNhbXBsZXMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSAwOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0
czsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSkKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0
ZVByb2JhYmlsaXR5KHVuc2lnbmVkIGNvdW50cywgdW5zaWduZWQgbnVtYmVyT2ZTYW1wbGVzKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mU2FtcGxlcykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb3VudHMgKiBjZXJ0YWludHkgLyBu
dW1iZXJPZlNhbXBsZXM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mSW50MzJzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgcmVz
dWx0ID0gMDsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1
Y2tldHM7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0
c1tpXS5nZXQoKS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCsrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZEb3VibGVzKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAgICAgICAgICAgICAgIGlm
ICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0RvdWJsZSgpKQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2Vs
bHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytp
KSB7CisgICAgICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgp
LmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIG5vdCBwYXJ0aWN1bGFybHkgb3B0aW1pemVkLCBpbiB0aGF0
IHRoZXkgd2lsbCBlYWNoCisgICAgICAgIC8vIHBlcmZvcm0gdHdvIHBhc3NlcyBvdmVyIHRoZSBi
dWNrZXRzIGFycmF5LiBIb3dldmVyLCB0aGV5IGFyZQorICAgICAgICAvLyBwcm9iYWJseSB0aGUg
YmVzdCBiZXQgdW5sZXNzIHlvdSBhcmUgc3VyZSB0aGF0IHlvdSB3aWxsIGJlIG1ha2luZworICAg
ICAgICAvLyB0aGVzZSBjYWxscyB3aXRoIGhpZ2ggZnJlcXVlbmN5LgorICAgICAgICAKKyAgICAg
ICAgdW5zaWduZWQgcHJvYmFiaWxpdHlPZkludDMyKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShudW1iZXJPZkludDMycygpLCBudW1iZXJP
ZlNhbXBsZXMoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIHByb2Jh
YmlsaXR5T2ZEb3VibGUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29t
cHV0ZVByb2JhYmlsaXR5KG51bWJlck9mRG91YmxlcygpLCBudW1iZXJPZlNhbXBsZXMoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIHByb2JhYmlsaXR5T2ZDZWxsKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShu
dW1iZXJPZkNlbGxzKCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgaW50IGJ5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKKyAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBidWNrZXRzW251bWJlck9mQnVja2V0c107CisgICAg
fTsKKworICAgIGlubGluZSBpbnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQoVmFsdWVQ
cm9maWxlKiB2YWx1ZVByb2ZpbGUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxl
LT5ieXRlY29kZU9mZnNldDsKKyAgICB9CisjZW5kaWYKKwogICAgIGNsYXNzIENvZGVCbG9jayB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwpAQCAtMzgxLDYgKzQ3NCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBh
ZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+
Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBN
ZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJu
IG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KICNlbmRpZgorICAgICAgICAKKyNpZiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIFZhbHVlUHJvZmlsZSogYWRkVmFsdWVQcm9m
aWxlKGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgbV92YWx1ZVBy
b2ZpbGVzLmFwcGVuZChWYWx1ZVByb2ZpbGUoYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAg
IHJldHVybiAmbV92YWx1ZVByb2ZpbGVzLmxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB7IHJldHVybiBtX3ZhbHVlUHJvZmlsZXMuc2l6
ZSgpOyB9CisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKGludCBpbmRleCkgeyBy
ZXR1cm4gJm1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KKyAgICAgICAgVmFsdWVQcm9maWxlKiB2
YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmdlbmVyaWNCaW5hcnlTZWFyY2g8VmFsdWVQcm9m
aWxlLCBpbnQsIGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PihtX3ZhbHVlUHJvZmlsZXMs
IG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgfQorI2Vu
ZGlmCisKICAgICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3VudCgpIGNvbnN0CiAg
ICAgICAgIHsKICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTU3MCw2ICs2NzgsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwog
ICAgICAgICBWZWN0b3I8TWV0aG9kQ2FsbExpbmtJbmZvPiBtX21ldGhvZENhbGxMaW5rSW5mb3M7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIFNlZ21lbnRlZFZl
Y3RvcjxWYWx1ZVByb2ZpbGUsIHNpemVvZihWYWx1ZVByb2ZpbGUpICogOD4gbV92YWx1ZVByb2Zp
bGVzOworI2VuZGlmCiAKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2p1bXBUYXJnZXRzOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiA5MjY2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcyLDYg
KzM3MiwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2dsb2JhbFJlc29sdmVJbmZv
SW5kZXggPSAwOwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOworICAgIAorI2lmICFBU1NF
UlRfRElTQUJMRUQgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIHVuc2lnbmVkIG51bWJl
ck9mVmFsdWVQcm9maWxlcyA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsK
KyNlbmRpZgogCiAgICAgZm9yIChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yIGl0ZXIg
PSBtX3Nsb3dDYXNlcy5iZWdpbigpOyBpdGVyICE9IG1fc2xvd0Nhc2VzLmVuZCgpOykgewogI2lm
IFVTRShKU1ZBTFVFNjQpCkBAIC00NjEsNiArNDY1LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKIAogICAgIEFTU0VSVChtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25J
bmRleCA9PSBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAgQVNT
RVJUKG1fY2FsbExpbmtJbmZvSW5kZXggPT0gbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9u
SW5mby5zaXplKCkpOworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBBU1NFUlQobnVt
YmVyT2ZWYWx1ZVByb2ZpbGVzID09IG1fY29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMo
KSk7CisjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBSZXNldCB0aGlzLCBpbiBvcmRl
ciB0byBndWFyZCBpdHMgdXNlIHdpdGggQVNTRVJUcy4KQEAgLTQ5Miw2ICs0OTksMTQgQEAgSklU
Q29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBlbWl0Q291bnQo
Y291bnRlcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAgICAg
QVNTRVJUKG1fYnl0ZWNvZGVPZmZzZXQgPT0gKHVuc2lnbmVkKS0xKTsKKyAgICAgICAgZm9yIChp
bnQgYXJndW1lbnRSZWdpc3RlciA9IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUg
LSBtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzICsgMTsgYXJndW1lbnRSZWdpc3RlciA8IC1S
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7ICsrYXJndW1lbnRSZWdpc3Rlcikgewor
ICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBhcmd1bWVudFJl
Z2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKKyAgICAgICAgfQorI2VuZGlmCisK
ICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBmYXN0IGxpbmtlZCBjYWxsLCB3ZSBkbyBub3Qg
c2V0IHRoaXMgdXAgaW4gdGhlIGNhbGxlci4KICAgICAgICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2Fs
bEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBSZWdpc3RlckZpbGU6OkNvZGVCbG9jayk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gOTI2NjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiArMzA0LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5
cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1
Y3R1cmVUeXBlLCB2b2lkKiB2dGFibGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0
b3JhZ2VQdHIpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGVtaXRBbGxvY2F0
ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklE
IHN0b3JhZ2VQdHIpOwogICAgICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24oRnVuY3Rp
b25FeGVjdXRhYmxlKiwgUmVnaXN0ZXJJRCBzY29wZUNoYWluLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKKyAgICAgICAgCisgICAgICAgIGVudW0gVmFsdWVQcm9m
aWxpbmdTaXRlS2luZCB7IEZpcnN0UHJvZmlsaW5nU2l0ZSwgU3Vic2VxdWVudFByb2ZpbGluZ1Np
dGUgfTsKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIHZvaWQgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kLCBSZWdpc3RlcklEIHZhbHVlID0g
cmVnVDAsIFJlZ2lzdGVySUQgc2NyYXRjaCA9IChSZWdpc3RlcklEKS0xKTsKKyNlbHNlCisgICAg
ICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kLCBS
ZWdpc3RlcklEID0gcmVnVDAsIFJlZ2lzdGVySUQgPSAoUmVnaXN0ZXJJRCktMSkgeyB9CisjZW5k
aWYKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3As
IGludDMyX3QmIGNvbnN0YW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAkocmV2aXNpb24gOTI2NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmEKIHZvaWQgSklUOjplbWl0X29wX2NhbGxfcHV0X3Jlc3Vs
dChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5n
U2l0ZSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gOTI2
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCwzNiBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxv
Y2F0ZUpTRnVuY3Rpb24oCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
K2lubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1Np
dGVLaW5kIHNpdGVLaW5kLCBSZWdpc3RlcklEIHZhbHVlLCBSZWdpc3RlcklEIHNjcmF0Y2gpCit7
CisgICAgaWYgKHNjcmF0Y2ggPT0gKFJlZ2lzdGVySUQpLTEpIHsKKyAgICAgICAgaWYgKHZhbHVl
ID09IHJlZ1QzKQorICAgICAgICAgICAgc2NyYXRjaCA9IHJlZ1QyOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzY3JhdGNoID0gcmVnVDM7CisgICAgfQorICAgIAorICAgIFZhbHVlUHJvZmls
ZSogdmFsdWVQcm9maWxlOworICAgIGlmIChzaXRlS2luZCA9PSBGaXJzdFByb2ZpbGluZ1NpdGUp
CisgICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUobV9i
eXRlY29kZU9mZnNldCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXRlS2luZCA9PSBT
dWJzZXF1ZW50UHJvZmlsaW5nU2l0ZSk7CisgICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJs
b2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2J5dGVjb2RlT2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgQVNTRVJUKHZhbHVlUHJvZmlsZSk7CisgICAgCisgICAgaWYgKG1fcmFu
ZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKKyAgICAgICAgYWRkMzIoSW1tMzIoMSksIGJ1
Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgZWxzZQorICAgICAgICBhZGQzMihJbW0zMigzKSwg
YnVja2V0Q291bnRlclJlZ2lzdGVyKTsKKyAgICBhbmQzMihJbW0zMihWYWx1ZVByb2ZpbGU6OmJ1
Y2tldEluZGV4TWFzayksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgbW92ZShJbW1QdHIo
dmFsdWVQcm9maWxlLT5idWNrZXRzKSwgc2NyYXRjaCk7CisgICAgc3RvcmVQdHIodmFsdWUsIEJh
c2VJbmRleChzY3JhdGNoLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIsIFRpbWVzRWlnaHQpKTsKK30K
KyNlbmRpZgorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIAogaW5saW5lIHZvaWQgSklUOjplbWl0
TG9hZFRhZyh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gOTI2
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV92YWwoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFNj
YWxlUHRyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkpLCByZWdU
MCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCkpOwogCisgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMTM2LDYgKzEzNyw4IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChi
YXNlLCByZWdUMik7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocHJvcGVydHksIHJlZ1QyKTsK
ICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKFN1
YnNlcXVlbnRQcm9maWxpbmdTaXRlKTsKIH0KIAogdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZz
ZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTMxOCw2ICszMjEsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3RpCiAgICAgY29tcGlsZUdldEJ5SWRIb3RQYXRoKGJh
c2VWUmVnLCBpZGVudCk7CiAKICAgICBtYXRjaC5saW5rKHRoaXMpOworICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKHJlc3VsdFZSZWcpOwogCiAgICAgLy8gV2UndmUgYWxyZWFkeSBnZW5lcmF0ZWQgdGhlIGZv
bGxvd2luZyBnZXRfYnlfaWQsIHNvIG1ha2Ugc3VyZSBpdCdzIHNraXBwZWQgb3Zlci4KQEAgLTM0
NSw2ICszNDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CiAgICAgY29tcGls
ZUdldEJ5SWRIb3RQYXRoKGJhc2VWUmVnLCBpZGVudCk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0VlJlZyk7CiB9CiAKQEAgLTM4Nyw2ICszOTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkKEluc3RydWN0CiAgICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKIAogICAgIGNv
bXBpbGVHZXRCeUlkU2xvd0Nhc2UocmVzdWx0VlJlZywgYmFzZVZSZWcsIGlkZW50LCBpdGVyLCBm
YWxzZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShTdWJzZXF1ZW50UHJvZmlsaW5nU2l0
ZSk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVn
LCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2spCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiA5MjY2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNiArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6ZWRpOwogICAgICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6cjEwOworI2VuZGlmCisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEyOwogICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6
cjEzOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDkyNjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM3LDYgKzEwMzcsMTUgQEAKICNkZWZpbmUgRU5B
QkxFX0RGR19KSVQgMQogI2VuZGlmCiAKKy8qIEN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGZv
ciBKU1ZBTFVFNjQsIG9ubHkgdGVzdGVkIG9uIFBMQVRGT1JNKE1BQykgKi8KKyNpZiAhZGVmaW5l
ZChFTkFCTEVfVkFMVUVfUFJPRklMRVIpICYmIEVOQUJMRShKSVQpICYmIFVTRShKU1ZBTFVFNjQp
ICYmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgRU5BQkxFX1ZBTFVFX1BST0ZJTEVSIDAKKyNlbmRp
ZgorCisjaWYgIWRlZmluZWQoRU5BQkxFX1ZFUkJPU0VfVkFMVUVfUFJPRklMRSkgJiYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQorI2RlZmluZSBFTkFCTEVfVkVSQk9TRV9WQUxVRV9QUk9GSUxFIDAK
KyNlbmRpZgorCiAvKiBFbnN1cmUgdGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0aGUgaW50ZXJwcmV0
ZXIgaGFzIGJlZW4gZW5hYmxlZC4gKi8KICNpZiAhZGVmaW5lZChFTkFCTEVfSU5URVJQUkVURVIp
ICYmICFFTkFCTEUoSklUKQogI2RlZmluZSBFTkFCTEVfSU5URVJQUkVURVIgMQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiA5MjY2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNiw4ICsxMjYsOCBAQCB0ZW1wbGF0ZTxzaXplX3QgZGl2aXNvcj4gaW5saW5lIHNpemVf
dCByCiAvLyBCaW5hcnkgc2VhcmNoIGFsZ29yaXRobSwgY2FsbHMgZXh0cmFjdEtleSBvbiBwcmUt
c29ydGVkIGVsZW1lbnRzIGluIGFycmF5LAogLy8gY29tcGFyZXMgcmVzdWx0IHdpdGgga2V5IChL
ZXlUeXBlcyBzaG91bGQgYmUgY29tcGFyYWJsZSB3aXRoICctLScsICc8JywgJz4nKS4KIC8vIE9w
dGltaXplZCBmb3IgY2FzZXMgd2hlcmUgdGhlIGFycmF5IGNvbnRhaW5zIHRoZSBrZXksIGNoZWNr
ZWQgYnkgYXNzZXJ0aW9ucy4KLXRlbXBsYXRlPHR5cGVuYW1lIEFycmF5VHlwZSwgdHlwZW5hbWUg
S2V5VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJyYXlUeXBlKik+Ci1pbmxpbmUgQXJyYXlU
eXBlKiBiaW5hcnlTZWFyY2goQXJyYXlUeXBlKiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUg
a2V5KQordGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlw
ZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJyYXlFbGVtZW50VHlwZSopPgoraW5saW5lIEFycmF5
RWxlbWVudFR5cGUqIGJpbmFyeVNlYXJjaChBcnJheUVsZW1lbnRUeXBlKiBhcnJheSwgc2l6ZV90
IHNpemUsIEtleVR5cGUga2V5KQogewogICAgIC8vIFRoZSBhcnJheSBtdXN0IGNvbnRhaW4gYXQg
bGVhc3Qgb25lIGVsZW1lbnQgKHByZS1jb25kaXRpb24sIGFycmF5IGRvZXMgY29uYXRpbiBrZXkp
LgogICAgIC8vIElmIHRoZSBhcnJheSBvbmx5IGNvbnRhaW5zIG9uZSBlbGVtZW50LCBubyBuZWVk
IHRvIGRvIHRoZSBjb21wYXJpc29uLgpAQCAtMTU5LDYgKzE1OSw0MyBAQCBpbmxpbmUgQXJyYXlU
eXBlKiBiaW5hcnlTZWFyY2goQXJyYXlUeXBlCiAgICAgcmV0dXJuICZhcnJheVswXTsKIH0KIAor
Ly8gTW9kaWZpZWQgYmluYXJ5U2VhcmNoKCkgYWxnb3JpdGhtIGRlc2lnbmVkIGZvciBhcnJheS1s
aWtlIGNsYXNzZXMgdGhhdCBzdXBwb3J0CisvLyBvcGVyYXRvcltdIGJ1dCBub3Qgb3BlcmF0b3Ir
PS4gT25lIGV4YW1wbGUgb2YgYSBjbGFzcyB0aGF0IHF1YWxpZmllcyBpcworLy8gU2VnbWVudGVk
VmVjdG9yLgordGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5
VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJyYXlFbGVtZW50VHlwZSopLCB0eXBlbmFtZSBB
cnJheVR5cGU+CitpbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogZ2VuZXJpY0JpbmFyeVNlYXJjaChB
cnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXkpCit7CisgICAgLy8gVGhl
IGFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudCAocHJlLWNvbmRpdGlvbiwg
YXJyYXkgZG9lcyBjb25hdGluIGtleSkuCisgICAgLy8gSWYgdGhlIGFycmF5IG9ubHkgY29udGFp
bnMgb25lIGVsZW1lbnQsIG5vIG5lZWQgdG8gZG8gdGhlIGNvbXBhcmlzb24uCisgICAgc2l6ZV90
IG9mZnNldCA9IDA7CisgICAgd2hpbGUgKHNpemUgPiAxKSB7CisgICAgICAgIC8vIFBpY2sgYW4g
ZWxlbWVudCB0byBjaGVjaywgaGFsZiB3YXkgdGhyb3VnaCB0aGUgYXJyYXksIGFuZCByZWFkIHRo
ZSB2YWx1ZS4KKyAgICAgICAgaW50IHBvcyA9IChzaXplIC0gMSkgPj4gMTsKKyAgICAgICAgS2V5
VHlwZSB2YWwgPSBleHRyYWN0S2V5KCZhcnJheVtvZmZzZXQgKyBwb3NdKTsKKyAgICAgICAgCisg
ICAgICAgIC8vIElmIHRoZSBrZXkgbWF0Y2hlcywgc3VjY2VzcyEKKyAgICAgICAgaWYgKHZhbCA9
PSBrZXkpCisgICAgICAgICAgICByZXR1cm4gJmFycmF5W29mZnNldCArIHBvc107CisgICAgICAg
IC8vIFRoZSBpdGVtIHdlIGFyZSBsb29raW5nIGZvciBpcyBzbWFsbGVyIHRoYW4gdGhlIGl0ZW0g
YmVpbmcgY2hlY2s7IHJlZHVjZSB0aGUgdmFsdWUgb2YgJ3NpemUnLAorICAgICAgICAvLyBjaG9w
cGluZyBvZmYgdGhlIHJpZ2h0IGhhbmQgaGFsZiBvZiB0aGUgYXJyYXkuCisgICAgICAgIGlmIChr
ZXkgPCB2YWwpCisgICAgICAgICAgICBzaXplID0gcG9zOworICAgICAgICAvLyBEaXNjYXJkIGFs
bCB2YWx1ZXMgaW4gdGhlIGxlZnQgaGFuZCBoYWxmIG9mIHRoZSBhcnJheSwgdXAgdG8gYW5kIGlu
Y2x1ZGluZyB0aGUgaXRlbSBhdCBwb3MuCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2l6
ZSAtPSAocG9zICsgMSk7CisgICAgICAgICAgICBvZmZzZXQgKz0gKHBvcyArIDEpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gJ3NpemUnIHNob3VsZCBuZXZlciByZWFjaCB6ZXJvLgorICAgICAg
ICBBU1NFUlQoc2l6ZSk7CisgICAgfQorICAgIAorICAgIC8vIElmIHdlIHJlYWNoIHRoaXMgcG9p
bnQgd2UndmUgY2hvcHBlZCBkb3duIHRvIG9uZSBlbGVtZW50LCBubyBuZWVkIHRvIGNoZWNrIGl0
IG1hdGNoZXMKKyAgICBBU1NFUlQoc2l6ZSA9PSAxKTsKKyAgICBBU1NFUlQoa2V5ID09IGV4dHJh
Y3RLZXkoJmFycmF5W29mZnNldF0pKTsKKyAgICByZXR1cm4gJmFycmF5W29mZnNldF07Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmJpbmFyeVNlYXJjaDsK
</data>
<flag name="review"
          id="98914"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104282</attachid>
            <date>2011-08-17 16:40:55 -0700</date>
            <delta_ts>2011-08-17 16:52:55 -0700</delta_ts>
            <desc>the patch (fix review)</desc>
            <filename>valueprofile_patch_3.diff</filename>
            <type>text/plain</type>
            <size>26439</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTMyNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAK
KzIwMTEtMDgtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDIEpJVCBjdXJyZW50bHkgaGFzIG5vIGZhY2lsaXR5IHRvIHByb2ZpbGUgYW5kIHJlcG9y
dAorICAgICAgICB0aGUgdHlwZXMgb2YgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvZmls
ZSB0aGUgdmFsdWVzIHNlZW4gYXQgZnVuY3Rpb24gY2FsbHMgKGJvdGgKKyAgICAgICAgYXJndW1l
bnRzIGFuZCByZXN1bHRzKSBhbmQgaGVhcCBsb2Fkcy4gIFRoaXMgaXMgZG9uZSB3aXRoIGVtcGhh
c2lzCisgICAgICAgIG9uIHBlcmZvcm1hbmNlLiAgQSB2YWx1ZSBwcm9maWxpbmcgc2l0ZSBjb25z
aXN0cyBvZjogYWRkLCBhbmQsCisgICAgICAgIG1vdmUsIGFuZCBzdG9yZTsgbm8gYnJhbmNoaW5n
IGlzIG5lY2Vzc2FyeS4gIEVhY2ggdmFsdWUgcHJvZmlsaW5nCisgICAgICAgIHNpdGUgKGNhbGxl
ZCBhIFZhbHVlUHJvZmlsZSkgaGFzIGEgcmluZyBidWZmZXIgb2YgOCByZWNlbnRseS1zZWVuCisg
ICAgICAgIHZhbHVlcy4gIFZhbHVlUHJvZmlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2Nr
OyB0aGVyZSB3aWxsIGJlCisgICAgICAgIG9uZSBmb3IgZWFjaCBhcmd1bWVudCAoZXhjbHVkaW5n
IHRoaXMpIGFuZCBlYWNoIGhlYXAgbG9hZCBvciBjYWxsc2l0ZS4KKyAgICAgICAgRWFjaCB0aW1l
IGEgdmFsdWUgcHJvZmlsaW5nIHNpdGUgZXhlY3V0ZXMsIGl0IHN0b3JlcyB0aGUgdmFsdWUgaW50
bworICAgICAgICBhIHBzZXVkby1yYW5kb20gZWxlbWVudCBpbiB0aGUgVmFsdWVQcm9maWxlIGJ1
ZmZlci4gIFRoZSBwb2ludCBpcworICAgICAgICB0aGF0IGZvciBmcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUsIHdlIHdpbGwgaGF2ZSA4IHNvbWV3aGF0IHJlY2VudAorICAgICAgICB2YWx1ZXMgaW4g
dGhlIGJ1ZmZlciBhbmQgd2lsbCBiZSBhYmxlIHRvIG5vdCBvbmx5IGZpZ3VyZSBvdXQgd2hhdAor
ICAgICAgICB0eXBlIGl0IGlzLCBidXQgYWxzbyB0byBiZSBhYmxlIHRvIHJlYXNvbiBhYm91dCB0
aGUgYWN0dWFsIHZhbHVlcworICAgICAgICBpZiB3ZSB3aXNoIHRvIGRvIHNvLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LiAg
V2hlbiBlbmFibGVkLCBpdAorICAgICAgICByZXN1bHRzIGluIGEgMy43JSBzbG93LWRvd24gb24g
U3VuU3BpZGVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6VmFsdWVQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpudW1iZXJPZlNhbXBsZXMpOgorICAgICAgICAoSlND
OjpWYWx1ZVByb2ZpbGU6OmNvbXB1dGVQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OlZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZJbnQzMnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51
bWJlck9mRG91Ymxlcyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxs
cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6cHJvYmFiaWxpdHlPZkludDMyKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mRG91YmxlKToKKyAgICAgICAg
KEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mQ2VsbCk6CisgICAgICAgIChKU0M6Omdl
dFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsX3B1dF9yZXN1bHQpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbWV0
aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSlNJ
bnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
U3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmJpbmFyeVNlYXJjaCk6CisgICAgICAgIChX
VEY6OmdlbmVyaWNCaW5hcnlTZWFyY2gpOgorCiAyMDExLTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNDIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dCBz
b21ldGltZXMgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAKIAkJMEJERkZBRTEwRkM2MTkzMTAwRDY5RUY0IC8qIE93bkZhc3RNYWxs
b2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBC
REZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAw
NjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3Bw
ICovOyB9OwogCQkwRjI5NDc5QzEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5QjEy
NkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi87IH07CisJCTBGOTYzQjM4MTNG
QzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEy
MyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAw
NjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKIAkJMTQw
NTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ1MEZBRkJBMkQwMDAw
MTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi87IH07CkBAIC03MjksNiArNzMwLDcgQEAK
IAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8q
IFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6
ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjk0NzlCMTI2RTY5
OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlY2ltYWxOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxv
Y2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4
QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxNjMsNiArMjE2NSw3IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY5NjNC
MzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTk2OUEwNzkwMEVE
MUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUw
MEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQk5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEg
LyogRXZhbENvZGVDYWNoZS5oICovLApAQCAtMjIzMCw2ICsyMjMzLDcgQEAKIAkJCQk4NkQzQjJD
NDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTI0MEUxNkZDOEEwMEIzNDQ2MCAv
KiBBcnJheVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U5MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA5MzI0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDMyLDYgKzE0MzIsMjMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogeworI2lmIEVOQUJMRShW
RVJCT1NFX1ZBTFVFX1BST0ZJTEUpCisgICAgcHJpbnRmKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxu
IiwgdGhpcyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9m
aWxlKGkpOworICAgICAgICBpZiAocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOworICAgICAgICAg
ICAgcHJpbnRmKCIgICBhcmcgPSAldTogIiwgaSArIDEpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHByaW50ZigiICAgYmMgPSAlZDogIiwgcHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICBwcmludGYoInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUsIGNl
bGwgPSAldVxuIiwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpLAor
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkludDMyKCksCisgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisgICAgICAgICAgICAgICBwcm9m
aWxlLT5wcm9iYWJpbGl0eU9mQ2VsbCgpKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLmRl
cmVmKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTEgQEAKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMzgxLDYgKzM4MywyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsg
fQogICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5k
ZXgpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KICNlbmRpZgorICAg
ICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIFZhbHVlUHJvZmlsZSog
YWRkVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV92YWx1ZVByb2ZpbGVzLmFwcGVuZChWYWx1ZVByb2ZpbGUoYnl0ZWNvZGVPZmZzZXQpKTsK
KyAgICAgICAgICAgIHJldHVybiAmbV92YWx1ZVByb2ZpbGVzLmxhc3QoKTsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB7IHJldHVybiBtX3ZhbHVl
UHJvZmlsZXMuc2l6ZSgpOyB9CisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKGlu
dCBpbmRleCkgeyByZXR1cm4gJm1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KKyAgICAgICAgVmFs
dWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZz
ZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmdlbmVyaWNCaW5hcnlTZWFy
Y2g8VmFsdWVQcm9maWxlLCBpbnQsIGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PihtX3Zh
bHVlUHJvZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0KTsKKyAg
ICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3Vu
dCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTU3Niw2ICs1OTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxs
TGlua0luZm9zOwogICAgICAgICBWZWN0b3I8TWV0aG9kQ2FsbExpbmtJbmZvPiBtX21ldGhvZENh
bGxMaW5rSW5mb3M7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxWYWx1ZVByb2ZpbGUsIDg+IG1fdmFsdWVQcm9maWxlczsKKyNlbmRp
ZgogCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9qdW1wVGFyZ2V0czsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQcm9maWxlX2gKKyNkZWZp
bmUgVmFsdWVQcm9maWxlX2gKKworI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBzdHJ1Y3QgVmFsdWVQ
cm9maWxlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvZ051bWJlck9mQnVja2V0
cyA9IDM7IC8vIDggYnVja2V0cworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZCdWNrZXRzID0gMSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHM7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBidWNrZXRJbmRleE1hc2sgPSBudW1iZXJPZkJ1Y2tldHMgLSAxOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2VydGFpbnR5ID0gbnVtYmVyT2ZCdWNrZXRzICogbnVt
YmVyT2ZCdWNrZXRzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWFqb3JpdHkgPSBj
ZXJ0YWludHkgLyAyOworCisgICAgICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQp
CisgICAgICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgYnVja2V0c1tpXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpT
VmFsdWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
U2FtcGxlcygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IDA7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRz
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldKQorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRl
UHJvYmFiaWxpdHkodW5zaWduZWQgY291bnRzLCB1bnNpZ25lZCBudW1iZXJPZlNhbXBsZXMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZTYW1wbGVzKQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvdW50cyAqIGNlcnRhaW50eSAvIG51
bWJlck9mU2FtcGxlczsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZJbnQzMnMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVj
a2V0czsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRz
W2ldLmdldCgpLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkRvdWJsZXMoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzRG91YmxlKCkpCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDZWxs
cygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldICYmIGJ1Y2tldHNbaV0uZ2V0KCku
aXNDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgbm90IHBhcnRpY3VsYXJseSBvcHRpbWl6ZWQsIGluIHRoYXQg
dGhleSB3aWxsIGVhY2gKKyAgICAgICAgLy8gcGVyZm9ybSB0d28gcGFzc2VzIG92ZXIgdGhlIGJ1
Y2tldHMgYXJyYXkuIEhvd2V2ZXIsIHRoZXkgYXJlCisgICAgICAgIC8vIHByb2JhYmx5IHRoZSBi
ZXN0IGJldCB1bmxlc3MgeW91IGFyZSBzdXJlIHRoYXQgeW91IHdpbGwgYmUgbWFraW5nCisgICAg
ICAgIC8vIHRoZXNlIGNhbGxzIHdpdGggaGlnaCBmcmVxdWVuY3kuCisgICAgICAgIAorICAgICAg
ICB1bnNpZ25lZCBwcm9iYWJpbGl0eU9mSW50MzIoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gY29tcHV0ZVByb2JhYmlsaXR5KG51bWJlck9mSW50MzJzKCksIG51bWJlck9m
U2FtcGxlcygpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgcHJvYmFi
aWxpdHlPZkRvdWJsZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb21w
dXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZEb3VibGVzKCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgcHJvYmFiaWxpdHlPZkNlbGwoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZVByb2JhYmlsaXR5KG51
bWJlck9mQ2VsbHMoKSwgbnVtYmVyT2ZTYW1wbGVzKCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpbnQgYnl0ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBwcm9sb2d1ZQorICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+IGJ1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKKyAgICB9
OworCisgICAgaW5saW5lIGludCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldChWYWx1ZVBy
b2ZpbGUqIHZhbHVlUHJvZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGUt
PmJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKyNlbmRpZgorCit9CisKKyNlbmRpZgorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcyLDYgKzM3MiwxNiBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2dsb2JhbFJlc29sdmVJbmZvSW5kZXggPSAw
OwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOworICAgIAorI2lmICFBU1NFUlRfRElTQUJM
RUQgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIC8vIFVzZSB0aGlzIHRvIGFzc2VydCB0
aGF0IHNsb3ctcGF0aCBjb2RlIGFzc29jaWF0ZXMgbmV3IHByb2ZpbGluZyBzaXRlcyB3aXRoIGV4
aXN0aW5nCisgICAgLy8gVmFsdWVQcm9maWxlcyByYXRoZXIgdGhhbiBjcmVhdGluZyBuZXcgb25l
cy4gVGhpcyBlbnN1cmVzIHRoYXQgZm9yIGEgZ2l2ZW4gaW5zdHJ1Y3Rpb24KKyAgICAvLyAoc2F5
LCBnZXRfYnlfaWQpIHdlIGdldCBjb21iaW5lZCBzdGF0aXN0aWNzIGZvciBib3RoIHRoZSBmYXN0
LXBhdGggZXhlY3V0aW9ucyBvZiB0aGF0CisgICAgLy8gaW5zdHJ1Y3Rpb25zIGFuZCB0aGUgc2xv
dy1wYXRoIGV4ZWN1dGlvbnMuIEZ1cnRoZXJtb3JlLCBpZiB0aGUgc2xvdy1wYXRoIGNvZGUgY3Jl
YXRlZAorICAgIC8vIG5ldyBWYWx1ZVByb2ZpbGVzIHRoZW4gdGhlIFZhbHVlUHJvZmlsZXMgd291
bGQgbm8gbG9uZ2VyIGJlIHNvcnRlZCBieSBieXRlY29kZSBvZmZzZXQsCisgICAgLy8gd2hpY2gg
d291bGQgYnJlYWsgdGhlIGludmFyaWFudCBuZWNlc3NhcnkgdG8gdXNlIENvZGVCbG9jazo6dmFs
dWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoKS4KKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVl
UHJvZmlsZXMgPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7CisjZW5kaWYK
IAogICAgIGZvciAoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciBpdGVyID0gbV9zbG93
Q2FzZXMuYmVnaW4oKTsgaXRlciAhPSBtX3Nsb3dDYXNlcy5lbmQoKTspIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtNDYxLDYgKzQ3MSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAKICAgICBBU1NFUlQobV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXggPT0g
bV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5zaXplKCkpOwogICAgIEFTU0VSVChtX2Nh
bGxMaW5rSW5mb0luZGV4ID09IG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm8uc2l6
ZSgpKTsKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgQVNTRVJUKG51bWJlck9mVmFs
dWVQcm9maWxlcyA9PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOworI2Vu
ZGlmCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gUmVzZXQgdGhpcywgaW4gb3JkZXIgdG8gZ3Vh
cmQgaXRzIHVzZSB3aXRoIEFTU0VSVHMuCkBAIC00OTIsNiArNTA1LDE0IEBAIEpJVENvZGUgSklU
Ojpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgZW1pdENvdW50KGNvdW50ZXIp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIEFTU0VSVCht
X2J5dGVjb2RlT2Zmc2V0ID09ICh1bnNpZ25lZCktMSk7CisgICAgICAgIGZvciAoaW50IGFyZ3Vt
ZW50UmVnaXN0ZXIgPSAtUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gbV9jb2Rl
QmxvY2stPm1fbnVtUGFyYW1ldGVycyArIDE7IGFyZ3VtZW50UmVnaXN0ZXIgPCAtUmVnaXN0ZXJG
aWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOyArK2FyZ3VtZW50UmVnaXN0ZXIpIHsKKyAgICAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgYXJndW1lbnRSZWdpc3RlciAq
IHNpemVvZihSZWdpc3RlcikpLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAg
IC8vIEluIHRoZSBjYXNlIG9mIGEgZmFzdCBsaW5rZWQgY2FsbCwgd2UgZG8gbm90IHNldCB0aGlz
IHVwIGluIHRoZSBjYWxsZXIuCiAgICAgICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhl
YWRlcihtX2NvZGVCbG9jaywgUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDYgKzMwNCwxNSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBT
dHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlw
ZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRy
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFs
T2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdl
UHRyKTsKICAgICAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKEZ1bmN0aW9uRXhlY3V0
YWJsZSosIFJlZ2lzdGVySUQgc2NvcGVDaGFpbiwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc3RvcmFnZVB0cik7CisgICAgICAgIAorICAgICAgICBlbnVtIFZhbHVlUHJvZmlsaW5nU2l0
ZUtpbmQgeyBGaXJzdFByb2ZpbGluZ1NpdGUsIFN1YnNlcXVlbnRQcm9maWxpbmdTaXRlIH07Cisj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0
aGUgdmFsdWUgdG8gcHJvZmlsZSBpcyBpbiByZWdUMCBhbmQgdGhhdCByZWdUMyBpcyBhdmFpbGFi
bGUgZm9yCisgICAgICAgIC8vIHNjcmF0Y2guCisgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kKTsKKyNlbHNlCisgICAgICAgIHZvaWQgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kKSB7IH0KKyNlbmRpZgog
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYm9vbCBnZXRPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVJbnQodW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIHVuc2lnbmVkJiBvcCwgaW50
MzJfdCYgY29uc3RhbnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGxJbml0aWFsaXplQ2FsbEZyYQogdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF9wdXRfcmVzdWx0KElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRl
KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiA5MzI0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MzAsNiArNDMwLDMyIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRl
SlNGdW5jdGlvbigKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQoraW5s
aW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsaW5nU2l0ZUtp
bmQgc2l0ZUtpbmQpCit7CisgICAgY29uc3QgUmVnaXN0ZXJJRCB2YWx1ZSA9IHJlZ1QwOworICAg
IGNvbnN0IFJlZ2lzdGVySUQgc2NyYXRjaCA9IHJlZ1QzOworICAgIAorICAgIFZhbHVlUHJvZmls
ZSogdmFsdWVQcm9maWxlOworICAgIGlmIChzaXRlS2luZCA9PSBGaXJzdFByb2ZpbGluZ1NpdGUp
CisgICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUobV9i
eXRlY29kZU9mZnNldCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXRlS2luZCA9PSBT
dWJzZXF1ZW50UHJvZmlsaW5nU2l0ZSk7CisgICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJs
b2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2J5dGVjb2RlT2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgQVNTRVJUKHZhbHVlUHJvZmlsZSk7CisgICAgCisgICAgaWYgKG1fcmFu
ZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKKyAgICAgICAgYWRkMzIoSW1tMzIoMSksIGJ1
Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgZWxzZQorICAgICAgICBhZGQzMihJbW0zMigzKSwg
YnVja2V0Q291bnRlclJlZ2lzdGVyKTsKKyAgICBhbmQzMihJbW0zMihWYWx1ZVByb2ZpbGU6OmJ1
Y2tldEluZGV4TWFzayksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgbW92ZShJbW1QdHIo
dmFsdWVQcm9maWxlLT5idWNrZXRzKSwgc2NyYXRjaCk7CisgICAgc3RvcmVQdHIodmFsdWUsIEJh
c2VJbmRleChzY3JhdGNoLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIsIFRpbWVzRWlnaHQpKTsKK30K
KyNlbmRpZgorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIAogaW5saW5lIHZvaWQgSklUOjplbWl0
TG9hZFRhZyh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gOTMy
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV92YWwoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFNj
YWxlUHRyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkpLCByZWdU
MCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCkpOwogCisgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMTM2LDYgKzEzNyw4IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChi
YXNlLCByZWdUMik7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocHJvcGVydHksIHJlZ1QyKTsK
ICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKFN1
YnNlcXVlbnRQcm9maWxpbmdTaXRlKTsKIH0KIAogdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZz
ZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTMxOCw2ICszMjEsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3RpCiAgICAgY29tcGlsZUdldEJ5SWRIb3RQYXRoKGJh
c2VWUmVnLCBpZGVudCk7CiAKICAgICBtYXRjaC5saW5rKHRoaXMpOworICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKHJlc3VsdFZSZWcpOwogCiAgICAgLy8gV2UndmUgYWxyZWFkeSBnZW5lcmF0ZWQgdGhlIGZv
bGxvd2luZyBnZXRfYnlfaWQsIHNvIG1ha2Ugc3VyZSBpdCdzIHNraXBwZWQgb3Zlci4KQEAgLTM0
NSw2ICszNDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CiAgICAgY29tcGls
ZUdldEJ5SWRIb3RQYXRoKGJhc2VWUmVnLCBpZGVudCk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0VlJlZyk7CiB9CiAKQEAgLTM4Nyw2ICszOTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkKEluc3RydWN0CiAgICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKIAogICAgIGNv
bXBpbGVHZXRCeUlkU2xvd0Nhc2UocmVzdWx0VlJlZywgYmFzZVZSZWcsIGlkZW50LCBpdGVyLCBm
YWxzZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShTdWJzZXF1ZW50UHJvZmlsaW5nU2l0
ZSk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVn
LCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2spCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNiArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6ZWRpOwogICAgICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6cjEwOworI2VuZGlmCisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEyOwogICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6
cjEzOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjgsNiArOTY4LDE1IEBACiAjZGVmaW5lIEVOQUJM
RV9ERkdfSklUIDEKICNlbmRpZgogCisvKiBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBmb3Ig
SlNWQUxVRTY0LCBvbmx5IHRlc3RlZCBvbiBQTEFURk9STShNQUMpICovCisjaWYgIWRlZmluZWQo
RU5BQkxFX1ZBTFVFX1BST0ZJTEVSKSAmJiBFTkFCTEUoSklUKSAmJiBVU0UoSlNWQUxVRTY0KSAm
JiBQTEFURk9STShNQUMpCisjZGVmaW5lIEVOQUJMRV9WQUxVRV9QUk9GSUxFUiAwCisjZW5kaWYK
KworI2lmICFkZWZpbmVkKEVOQUJMRV9WRVJCT1NFX1ZBTFVFX1BST0ZJTEUpICYmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKKyNkZWZpbmUgRU5BQkxFX1ZFUkJPU0VfVkFMVUVfUFJPRklMRSAwCisj
ZW5kaWYKKwogLyogRW5zdXJlIHRoYXQgZWl0aGVyIHRoZSBKSVQgb3IgdGhlIGludGVycHJldGVy
IGhhcyBiZWVuIGVuYWJsZWQuICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lOVEVSUFJFVEVSKSAm
JiAhRU5BQkxFKEpJVCkKICNkZWZpbmUgRU5BQkxFX0lOVEVSUFJFVEVSIDEKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gOTMyNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzAsOCArMTMwLDggQEAgZW51bSBCaW5hcnlTZWFyY2hNb2RlIHsKIAogLy8gQmluYXJ5IHNl
YXJjaCBhbGdvcml0aG0sIGNhbGxzIGV4dHJhY3RLZXkgb24gcHJlLXNvcnRlZCBlbGVtZW50cyBp
biBhcnJheSwKIC8vIGNvbXBhcmVzIHJlc3VsdCB3aXRoIGtleSAoS2V5VHlwZXMgc2hvdWxkIGJl
IGNvbXBhcmFibGUgd2l0aCAnLS0nLCAnPCcsICc+JykuCi10ZW1wbGF0ZTx0eXBlbmFtZSBBcnJh
eVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUoKmV4dHJhY3RLZXkpKEFycmF5VHlwZSop
PgotaW5saW5lIEFycmF5VHlwZSogYmluYXJ5U2VhcmNoKEFycmF5VHlwZSogYXJyYXksIHNpemVf
dCBzaXplLCBLZXlUeXBlIGtleSwgQmluYXJ5U2VhcmNoTW9kZSBtb2RlID0gS2V5TXVzdEJlUHJl
c2VudEluQXJyYXkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVsZW1lbnRUeXBlLCB0eXBlbmFt
ZSBLZXlUeXBlLCBLZXlUeXBlKCpleHRyYWN0S2V5KShBcnJheUVsZW1lbnRUeXBlKik+Citpbmxp
bmUgQXJyYXlFbGVtZW50VHlwZSogYmluYXJ5U2VhcmNoKEFycmF5RWxlbWVudFR5cGUqIGFycmF5
LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXksIEJpbmFyeVNlYXJjaE1vZGUgbW9kZSA9IEtleU11
c3RCZVByZXNlbnRJbkFycmF5KQogewogICAgIC8vIFRoZSBhcnJheSBtdXN0IGNvbnRhaW4gYXQg
bGVhc3Qgb25lIGVsZW1lbnQgKHByZS1jb25kaXRpb24sIGFycmF5IGRvZXMgY29udGFpbiBrZXkp
LgogICAgIC8vIElmIHRoZSBhcnJheSBjb250YWlucyBvbmx5IG9uZSBlbGVtZW50LCBubyBuZWVk
IHRvIGRvIHRoZSBjb21wYXJpc29uLgpAQCAtMTY4LDYgKzE2OCw0MyBAQCBpbmxpbmUgQXJyYXlU
eXBlKiBiaW5hcnlTZWFyY2goQXJyYXlUeXBlCiAgICAgcmV0dXJuICZhcnJheVswXTsKIH0KIAor
Ly8gTW9kaWZpZWQgYmluYXJ5U2VhcmNoKCkgYWxnb3JpdGhtIGRlc2lnbmVkIGZvciBhcnJheS1s
aWtlIGNsYXNzZXMgdGhhdCBzdXBwb3J0CisvLyBvcGVyYXRvcltdIGJ1dCBub3Qgb3BlcmF0b3Ir
PS4gT25lIGV4YW1wbGUgb2YgYSBjbGFzcyB0aGF0IHF1YWxpZmllcyBpcworLy8gU2VnbWVudGVk
VmVjdG9yLgordGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5
VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJyYXlFbGVtZW50VHlwZSopLCB0eXBlbmFtZSBB
cnJheVR5cGU+CitpbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogZ2VuZXJpY0JpbmFyeVNlYXJjaChB
cnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXkpCit7CisgICAgLy8gVGhl
IGFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudCAocHJlLWNvbmRpdGlvbiwg
YXJyYXkgZG9lcyBjb25hdGluIGtleSkuCisgICAgLy8gSWYgdGhlIGFycmF5IG9ubHkgY29udGFp
bnMgb25lIGVsZW1lbnQsIG5vIG5lZWQgdG8gZG8gdGhlIGNvbXBhcmlzb24uCisgICAgc2l6ZV90
IG9mZnNldCA9IDA7CisgICAgd2hpbGUgKHNpemUgPiAxKSB7CisgICAgICAgIC8vIFBpY2sgYW4g
ZWxlbWVudCB0byBjaGVjaywgaGFsZiB3YXkgdGhyb3VnaCB0aGUgYXJyYXksIGFuZCByZWFkIHRo
ZSB2YWx1ZS4KKyAgICAgICAgaW50IHBvcyA9IChzaXplIC0gMSkgPj4gMTsKKyAgICAgICAgS2V5
VHlwZSB2YWwgPSBleHRyYWN0S2V5KCZhcnJheVtvZmZzZXQgKyBwb3NdKTsKKyAgICAgICAgCisg
ICAgICAgIC8vIElmIHRoZSBrZXkgbWF0Y2hlcywgc3VjY2VzcyEKKyAgICAgICAgaWYgKHZhbCA9
PSBrZXkpCisgICAgICAgICAgICByZXR1cm4gJmFycmF5W29mZnNldCArIHBvc107CisgICAgICAg
IC8vIFRoZSBpdGVtIHdlIGFyZSBsb29raW5nIGZvciBpcyBzbWFsbGVyIHRoYW4gdGhlIGl0ZW0g
YmVpbmcgY2hlY2s7IHJlZHVjZSB0aGUgdmFsdWUgb2YgJ3NpemUnLAorICAgICAgICAvLyBjaG9w
cGluZyBvZmYgdGhlIHJpZ2h0IGhhbmQgaGFsZiBvZiB0aGUgYXJyYXkuCisgICAgICAgIGlmIChr
ZXkgPCB2YWwpCisgICAgICAgICAgICBzaXplID0gcG9zOworICAgICAgICAvLyBEaXNjYXJkIGFs
bCB2YWx1ZXMgaW4gdGhlIGxlZnQgaGFuZCBoYWxmIG9mIHRoZSBhcnJheSwgdXAgdG8gYW5kIGlu
Y2x1ZGluZyB0aGUgaXRlbSBhdCBwb3MuCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2l6
ZSAtPSAocG9zICsgMSk7CisgICAgICAgICAgICBvZmZzZXQgKz0gKHBvcyArIDEpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gJ3NpemUnIHNob3VsZCBuZXZlciByZWFjaCB6ZXJvLgorICAgICAg
ICBBU1NFUlQoc2l6ZSk7CisgICAgfQorICAgIAorICAgIC8vIElmIHdlIHJlYWNoIHRoaXMgcG9p
bnQgd2UndmUgY2hvcHBlZCBkb3duIHRvIG9uZSBlbGVtZW50LCBubyBuZWVkIHRvIGNoZWNrIGl0
IG1hdGNoZXMKKyAgICBBU1NFUlQoc2l6ZSA9PSAxKTsKKyAgICBBU1NFUlQoa2V5ID09IGV4dHJh
Y3RLZXkoJmFycmF5W29mZnNldF0pKTsKKyAgICByZXR1cm4gJmFycmF5W29mZnNldF07Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmJpbmFyeVNlYXJjaDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104284</attachid>
            <date>2011-08-17 16:52:55 -0700</date>
            <delta_ts>2011-08-17 18:06:35 -0700</delta_ts>
            <desc>the patch (fix style)</desc>
            <filename>valueprofile_patch_4.diff</filename>
            <type>text/plain</type>
            <size>26331</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTMyNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAK
KzIwMTEtMDgtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDIEpJVCBjdXJyZW50bHkgaGFzIG5vIGZhY2lsaXR5IHRvIHByb2ZpbGUgYW5kIHJlcG9y
dAorICAgICAgICB0aGUgdHlwZXMgb2YgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvZmls
ZSB0aGUgdmFsdWVzIHNlZW4gYXQgZnVuY3Rpb24gY2FsbHMgKGJvdGgKKyAgICAgICAgYXJndW1l
bnRzIGFuZCByZXN1bHRzKSBhbmQgaGVhcCBsb2Fkcy4gIFRoaXMgaXMgZG9uZSB3aXRoIGVtcGhh
c2lzCisgICAgICAgIG9uIHBlcmZvcm1hbmNlLiAgQSB2YWx1ZSBwcm9maWxpbmcgc2l0ZSBjb25z
aXN0cyBvZjogYWRkLCBhbmQsCisgICAgICAgIG1vdmUsIGFuZCBzdG9yZTsgbm8gYnJhbmNoaW5n
IGlzIG5lY2Vzc2FyeS4gIEVhY2ggdmFsdWUgcHJvZmlsaW5nCisgICAgICAgIHNpdGUgKGNhbGxl
ZCBhIFZhbHVlUHJvZmlsZSkgaGFzIGEgcmluZyBidWZmZXIgb2YgOCByZWNlbnRseS1zZWVuCisg
ICAgICAgIHZhbHVlcy4gIFZhbHVlUHJvZmlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2Nr
OyB0aGVyZSB3aWxsIGJlCisgICAgICAgIG9uZSBmb3IgZWFjaCBhcmd1bWVudCAoZXhjbHVkaW5n
IHRoaXMpIGFuZCBlYWNoIGhlYXAgbG9hZCBvciBjYWxsc2l0ZS4KKyAgICAgICAgRWFjaCB0aW1l
IGEgdmFsdWUgcHJvZmlsaW5nIHNpdGUgZXhlY3V0ZXMsIGl0IHN0b3JlcyB0aGUgdmFsdWUgaW50
bworICAgICAgICBhIHBzZXVkby1yYW5kb20gZWxlbWVudCBpbiB0aGUgVmFsdWVQcm9maWxlIGJ1
ZmZlci4gIFRoZSBwb2ludCBpcworICAgICAgICB0aGF0IGZvciBmcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUsIHdlIHdpbGwgaGF2ZSA4IHNvbWV3aGF0IHJlY2VudAorICAgICAgICB2YWx1ZXMgaW4g
dGhlIGJ1ZmZlciBhbmQgd2lsbCBiZSBhYmxlIHRvIG5vdCBvbmx5IGZpZ3VyZSBvdXQgd2hhdAor
ICAgICAgICB0eXBlIGl0IGlzLCBidXQgYWxzbyB0byBiZSBhYmxlIHRvIHJlYXNvbiBhYm91dCB0
aGUgYWN0dWFsIHZhbHVlcworICAgICAgICBpZiB3ZSB3aXNoIHRvIGRvIHNvLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LiAg
V2hlbiBlbmFibGVkLCBpdAorICAgICAgICByZXN1bHRzIGluIGEgMy43JSBzbG93LWRvd24gb24g
U3VuU3BpZGVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6VmFsdWVQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpudW1iZXJPZlNhbXBsZXMpOgorICAgICAgICAoSlND
OjpWYWx1ZVByb2ZpbGU6OmNvbXB1dGVQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OlZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZJbnQzMnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51
bWJlck9mRG91Ymxlcyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxs
cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6cHJvYmFiaWxpdHlPZkludDMyKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mRG91YmxlKToKKyAgICAgICAg
KEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mQ2VsbCk6CisgICAgICAgIChKU0M6Omdl
dFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsX3B1dF9yZXN1bHQpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbWV0
aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSlNJ
bnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
U3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmJpbmFyeVNlYXJjaCk6CisgICAgICAgIChX
VEY6OmdlbmVyaWNCaW5hcnlTZWFyY2gpOgorCiAyMDExLTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNDIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dCBz
b21ldGltZXMgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAKIAkJMEJERkZBRTEwRkM2MTkzMTAwRDY5RUY0IC8qIE93bkZhc3RNYWxs
b2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBC
REZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAw
NjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3Bw
ICovOyB9OwogCQkwRjI5NDc5QzEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5QjEy
NkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi87IH07CisJCTBGOTYzQjM4MTNG
QzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEy
MyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAw
NjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKIAkJMTQw
NTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ1MEZBRkJBMkQwMDAw
MTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi87IH07CkBAIC03MjksNiArNzMwLDcgQEAK
IAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8q
IFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6
ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjk0NzlCMTI2RTY5
OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlY2ltYWxOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxv
Y2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4
QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxNjMsNiArMjE2NSw3IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY5NjNC
MzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTk2OUEwNzkwMEVE
MUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUw
MEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQk5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEg
LyogRXZhbENvZGVDYWNoZS5oICovLApAQCAtMjIzMCw2ICsyMjMzLDcgQEAKIAkJCQk4NkQzQjJD
NDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTI0MEUxNkZDOEEwMEIzNDQ2MCAv
KiBBcnJheVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U5MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA5MzI0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDMyLDYgKzE0MzIsMjMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogeworI2lmIEVOQUJMRShW
RVJCT1NFX1ZBTFVFX1BST0ZJTEUpCisgICAgcHJpbnRmKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxu
IiwgdGhpcyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9m
aWxlKGkpOworICAgICAgICBpZiAocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOworICAgICAgICAg
ICAgcHJpbnRmKCIgICBhcmcgPSAldTogIiwgaSArIDEpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHByaW50ZigiICAgYmMgPSAlZDogIiwgcHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICBwcmludGYoInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUsIGNl
bGwgPSAldVxuIiwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpLAor
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkludDMyKCksCisgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisgICAgICAgICAgICAgICBwcm9m
aWxlLT5wcm9iYWJpbGl0eU9mQ2VsbCgpKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLmRl
cmVmKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTEgQEAKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMzgxLDYgKzM4MywyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsg
fQogICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5k
ZXgpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KICNlbmRpZgorICAg
ICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIFZhbHVlUHJvZmlsZSog
YWRkVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV92YWx1ZVByb2ZpbGVzLmFwcGVuZChWYWx1ZVByb2ZpbGUoYnl0ZWNvZGVPZmZzZXQpKTsK
KyAgICAgICAgICAgIHJldHVybiAmbV92YWx1ZVByb2ZpbGVzLmxhc3QoKTsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB7IHJldHVybiBtX3ZhbHVl
UHJvZmlsZXMuc2l6ZSgpOyB9CisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKGlu
dCBpbmRleCkgeyByZXR1cm4gJm1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KKyAgICAgICAgVmFs
dWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZz
ZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmdlbmVyaWNCaW5hcnlTZWFy
Y2g8VmFsdWVQcm9maWxlLCBpbnQsIGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PihtX3Zh
bHVlUHJvZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0KTsKKyAg
ICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3Vu
dCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTU3Niw2ICs1OTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxs
TGlua0luZm9zOwogICAgICAgICBWZWN0b3I8TWV0aG9kQ2FsbExpbmtJbmZvPiBtX21ldGhvZENh
bGxMaW5rSW5mb3M7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxWYWx1ZVByb2ZpbGUsIDg+IG1fdmFsdWVQcm9maWxlczsKKyNlbmRp
ZgogCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9qdW1wVGFyZ2V0czsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQcm9maWxlX2gKKyNkZWZp
bmUgVmFsdWVQcm9maWxlX2gKKworI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKK3N0cnVjdCBWYWx1ZVByb2Zp
bGUgeworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1Y2tldHMgPSAzOyAv
LyA4IGJ1Y2tldHMKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzID0g
MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ1Y2tl
dEluZGV4TWFzayA9IG51bWJlck9mQnVja2V0cyAtIDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNlcnRhaW50eSA9IG51bWJlck9mQnVja2V0cyAqIG51bWJlck9mQnVja2V0czsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWFqb3JpdHkgPSBjZXJ0YWludHkgLyAyOworCisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgOiBieXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKQorICAgICAgICAgICAgICAgIGJ1Y2tldHNbaV0u
c2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgIHVuc2lnbmVkIG51bWJlck9mU2FtcGxlcygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoISFidWNr
ZXRzW2ldKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgc3RhdGlj
IHVuc2lnbmVkIGNvbXB1dGVQcm9iYWJpbGl0eSh1bnNpZ25lZCBjb3VudHMsIHVuc2lnbmVkIG51
bWJlck9mU2FtcGxlcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlNhbXBs
ZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY291bnRz
ICogY2VydGFpbnR5IC8gbnVtYmVyT2ZTYW1wbGVzOworICAgICAgICB9CisgICAgICAgIAorICAg
IHVuc2lnbmVkIG51bWJlck9mSW50MzJzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghIWJ1Y2tldHNb
aV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZkRvdWJsZXMoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzRG91YmxlKCkpCisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJP
ZkNlbGxzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7
ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5n
ZXQoKS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIG5vdCBwYXJ0aWN1bGFybHkgb3B0aW1pemVkLCBpbiB0aGF0
IHRoZXkgd2lsbCBlYWNoCisgICAgLy8gcGVyZm9ybSB0d28gcGFzc2VzIG92ZXIgdGhlIGJ1Y2tl
dHMgYXJyYXkuIEhvd2V2ZXIsIHRoZXkgYXJlCisgICAgLy8gcHJvYmFibHkgdGhlIGJlc3QgYmV0
IHVubGVzcyB5b3UgYXJlIHN1cmUgdGhhdCB5b3Ugd2lsbCBiZSBtYWtpbmcKKyAgICAvLyB0aGVz
ZSBjYWxscyB3aXRoIGhpZ2ggZnJlcXVlbmN5LgorICAgICAgICAKKyAgICB1bnNpZ25lZCBwcm9i
YWJpbGl0eU9mSW50MzIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29t
cHV0ZVByb2JhYmlsaXR5KG51bWJlck9mSW50MzJzKCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICB1bnNpZ25lZCBwcm9iYWJpbGl0eU9mRG91YmxlKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShudW1i
ZXJPZkRvdWJsZXMoKSwgbnVtYmVyT2ZTYW1wbGVzKCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgIHVuc2lnbmVkIHByb2JhYmlsaXR5T2ZDZWxsKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShudW1iZXJPZkNlbGxzKCksIG51bWJlck9m
U2FtcGxlcygpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICBpbnQgYnl0ZWNvZGVPZmZzZXQ7
IC8vIC0xIGZvciBwcm9sb2d1ZQorICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gYnVja2V0
c1tudW1iZXJPZkJ1Y2tldHNdOworfTsKKworaW5saW5lIGludCBnZXRWYWx1ZVByb2ZpbGVCeXRl
Y29kZU9mZnNldChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSkKK3sKKyAgICByZXR1cm4gdmFs
dWVQcm9maWxlLT5ieXRlY29kZU9mZnNldDsKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZgorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcyLDYgKzM3
MiwxNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2dsb2JhbFJlc29sdmVJbmZvSW5k
ZXggPSAwOwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOworICAgIAorI2lmICFBU1NFUlRf
RElTQUJMRUQgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIC8vIFVzZSB0aGlzIHRvIGFz
c2VydCB0aGF0IHNsb3ctcGF0aCBjb2RlIGFzc29jaWF0ZXMgbmV3IHByb2ZpbGluZyBzaXRlcyB3
aXRoIGV4aXN0aW5nCisgICAgLy8gVmFsdWVQcm9maWxlcyByYXRoZXIgdGhhbiBjcmVhdGluZyBu
ZXcgb25lcy4gVGhpcyBlbnN1cmVzIHRoYXQgZm9yIGEgZ2l2ZW4gaW5zdHJ1Y3Rpb24KKyAgICAv
LyAoc2F5LCBnZXRfYnlfaWQpIHdlIGdldCBjb21iaW5lZCBzdGF0aXN0aWNzIGZvciBib3RoIHRo
ZSBmYXN0LXBhdGggZXhlY3V0aW9ucyBvZiB0aGF0CisgICAgLy8gaW5zdHJ1Y3Rpb25zIGFuZCB0
aGUgc2xvdy1wYXRoIGV4ZWN1dGlvbnMuIEZ1cnRoZXJtb3JlLCBpZiB0aGUgc2xvdy1wYXRoIGNv
ZGUgY3JlYXRlZAorICAgIC8vIG5ldyBWYWx1ZVByb2ZpbGVzIHRoZW4gdGhlIFZhbHVlUHJvZmls
ZXMgd291bGQgbm8gbG9uZ2VyIGJlIHNvcnRlZCBieSBieXRlY29kZSBvZmZzZXQsCisgICAgLy8g
d2hpY2ggd291bGQgYnJlYWsgdGhlIGludmFyaWFudCBuZWNlc3NhcnkgdG8gdXNlIENvZGVCbG9j
azo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoKS4KKyAgICB1bnNpZ25lZCBudW1iZXJP
ZlZhbHVlUHJvZmlsZXMgPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7Cisj
ZW5kaWYKIAogICAgIGZvciAoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciBpdGVyID0g
bV9zbG93Q2FzZXMuYmVnaW4oKTsgaXRlciAhPSBtX3Nsb3dDYXNlcy5lbmQoKTspIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQpAQCAtNDYxLDYgKzQ3MSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAKICAgICBBU1NFUlQobV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5k
ZXggPT0gbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5zaXplKCkpOwogICAgIEFTU0VS
VChtX2NhbGxMaW5rSW5mb0luZGV4ID09IG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbklu
Zm8uc2l6ZSgpKTsKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgQVNTRVJUKG51bWJl
ck9mVmFsdWVQcm9maWxlcyA9PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkp
OworI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gUmVzZXQgdGhpcywgaW4gb3JkZXIg
dG8gZ3VhcmQgaXRzIHVzZSB3aXRoIEFTU0VSVHMuCkBAIC00OTIsNiArNTA1LDE0IEBAIEpJVENv
ZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgZW1pdENvdW50KGNv
dW50ZXIpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIEFT
U0VSVChtX2J5dGVjb2RlT2Zmc2V0ID09ICh1bnNpZ25lZCktMSk7CisgICAgICAgIGZvciAoaW50
IGFyZ3VtZW50UmVnaXN0ZXIgPSAtUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0g
bV9jb2RlQmxvY2stPm1fbnVtUGFyYW1ldGVycyArIDE7IGFyZ3VtZW50UmVnaXN0ZXIgPCAtUmVn
aXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOyArK2FyZ3VtZW50UmVnaXN0ZXIpIHsKKyAg
ICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgYXJndW1lbnRSZWdp
c3RlciAqIHNpemVvZihSZWdpc3RlcikpLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CisgICAgICAgIH0KKyNlbmRpZgorCiAg
ICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgZmFzdCBsaW5rZWQgY2FsbCwgd2UgZG8gbm90IHNl
dCB0aGlzIHVwIGluIHRoZSBjYWxsZXIuCiAgICAgICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxG
cmFtZUhlYWRlcihtX2NvZGVCbG9jaywgUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDYgKzMwNCwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBl
bmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0
dXJlVHlwZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9y
YWdlUHRyKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBlbWl0QWxsb2NhdGVK
U0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBz
dG9yYWdlUHRyKTsKICAgICAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKEZ1bmN0aW9u
RXhlY3V0YWJsZSosIFJlZ2lzdGVySUQgc2NvcGVDaGFpbiwgUmVnaXN0ZXJJRCByZXN1bHQsIFJl
Z2lzdGVySUQgc3RvcmFnZVB0cik7CisgICAgICAgIAorICAgICAgICBlbnVtIFZhbHVlUHJvZmls
aW5nU2l0ZUtpbmQgeyBGaXJzdFByb2ZpbGluZ1NpdGUsIFN1YnNlcXVlbnRQcm9maWxpbmdTaXRl
IH07CisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICAvLyBUaGlzIGFzc3VtZXMg
dGhhdCB0aGUgdmFsdWUgdG8gcHJvZmlsZSBpcyBpbiByZWdUMCBhbmQgdGhhdCByZWdUMyBpcyBh
dmFpbGFibGUgZm9yCisgICAgICAgIC8vIHNjcmF0Y2guCisgICAgICAgIHZvaWQgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kKTsKKyNlbHNlCisgICAgICAgIHZv
aWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kKSB7IH0KKyNl
bmRpZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYm9vbCBnZXRPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVJbnQodW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIHVuc2lnbmVkJiBv
cCwgaW50MzJfdCYgY29uc3RhbnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYQogdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF9wdXRfcmVz
dWx0KEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxp
bmdTaXRlKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiA5
MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MzAsNiArNDMwLDMyIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFs
bG9jYXRlSlNGdW5jdGlvbigKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVS
KQoraW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsaW5n
U2l0ZUtpbmQgc2l0ZUtpbmQpCit7CisgICAgY29uc3QgUmVnaXN0ZXJJRCB2YWx1ZSA9IHJlZ1Qw
OworICAgIGNvbnN0IFJlZ2lzdGVySUQgc2NyYXRjaCA9IHJlZ1QzOworICAgIAorICAgIFZhbHVl
UHJvZmlsZSogdmFsdWVQcm9maWxlOworICAgIGlmIChzaXRlS2luZCA9PSBGaXJzdFByb2ZpbGlu
Z1NpdGUpCisgICAgICAgIHZhbHVlUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hZGRWYWx1ZVByb2Zp
bGUobV9ieXRlY29kZU9mZnNldCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXRlS2lu
ZCA9PSBTdWJzZXF1ZW50UHJvZmlsaW5nU2l0ZSk7CisgICAgICAgIHZhbHVlUHJvZmlsZSA9IG1f
Y29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2J5dGVjb2RlT2Zmc2V0
KTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKHZhbHVlUHJvZmlsZSk7CisgICAgCisgICAgaWYg
KG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKKyAgICAgICAgYWRkMzIoSW1tMzIo
MSksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgZWxzZQorICAgICAgICBhZGQzMihJbW0z
MigzKSwgYnVja2V0Q291bnRlclJlZ2lzdGVyKTsKKyAgICBhbmQzMihJbW0zMihWYWx1ZVByb2Zp
bGU6OmJ1Y2tldEluZGV4TWFzayksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgbW92ZShJ
bW1QdHIodmFsdWVQcm9maWxlLT5idWNrZXRzKSwgc2NyYXRjaCk7CisgICAgc3RvcmVQdHIodmFs
dWUsIEJhc2VJbmRleChzY3JhdGNoLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIsIFRpbWVzRWlnaHQp
KTsKK30KKyNlbmRpZgorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIAogaW5saW5lIHZvaWQgSklU
OjplbWl0TG9hZFRhZyh1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNp
b24gOTMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMiwgcmVn
VDEsIFNjYWxlUHRyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkp
LCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCkpOwog
CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMTM2LDYgKzEzNyw4IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChiYXNlLCByZWdUMik7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocHJvcGVydHksIHJl
Z1QyKTsKICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKFN1YnNlcXVlbnRQcm9maWxpbmdTaXRlKTsKIH0KIAogdm9pZCBKSVQ6OmNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJ
RCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTMxOCw2ICszMjEsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3RpCiAgICAgY29tcGlsZUdldEJ5SWRIb3RQ
YXRoKGJhc2VWUmVnLCBpZGVudCk7CiAKICAgICBtYXRjaC5saW5rKHRoaXMpOworICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKHJlc3VsdFZSZWcpOwogCiAgICAgLy8gV2UndmUgYWxyZWFkeSBnZW5lcmF0ZWQg
dGhlIGZvbGxvd2luZyBnZXRfYnlfaWQsIHNvIG1ha2Ugc3VyZSBpdCdzIHNraXBwZWQgb3Zlci4K
QEAgLTM0NSw2ICszNDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CiAgICAg
Y29tcGlsZUdldEJ5SWRIb3RQYXRoKGJhc2VWUmVnLCBpZGVudCk7CisgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0VlJlZyk7CiB9CiAKQEAgLTM4Nyw2ICszOTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0CiAgICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29k
ZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKIAog
ICAgIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UocmVzdWx0VlJlZywgYmFzZVZSZWcsIGlkZW50LCBp
dGVyLCBmYWxzZSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShTdWJzZXF1ZW50UHJvZmls
aW5nU2l0ZSk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1
bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2spCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiA5MzI0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNiArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6ZWRpOwogICAgICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6cjEwOworI2VuZGlmCisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEyOwogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6cjEzOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjgsNiArOTY4LDE1IEBACiAjZGVmaW5l
IEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgogCisvKiBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRl
ZCBmb3IgSlNWQUxVRTY0LCBvbmx5IHRlc3RlZCBvbiBQTEFURk9STShNQUMpICovCisjaWYgIWRl
ZmluZWQoRU5BQkxFX1ZBTFVFX1BST0ZJTEVSKSAmJiBFTkFCTEUoSklUKSAmJiBVU0UoSlNWQUxV
RTY0KSAmJiBQTEFURk9STShNQUMpCisjZGVmaW5lIEVOQUJMRV9WQUxVRV9QUk9GSUxFUiAwCisj
ZW5kaWYKKworI2lmICFkZWZpbmVkKEVOQUJMRV9WRVJCT1NFX1ZBTFVFX1BST0ZJTEUpICYmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKKyNkZWZpbmUgRU5BQkxFX1ZFUkJPU0VfVkFMVUVfUFJPRklM
RSAwCisjZW5kaWYKKwogLyogRW5zdXJlIHRoYXQgZWl0aGVyIHRoZSBKSVQgb3IgdGhlIGludGVy
cHJldGVyIGhhcyBiZWVuIGVuYWJsZWQuICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lOVEVSUFJF
VEVSKSAmJiAhRU5BQkxFKEpJVCkKICNkZWZpbmUgRU5BQkxFX0lOVEVSUFJFVEVSIDEKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gOTMyNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAsOCArMTMwLDggQEAgZW51bSBCaW5hcnlTZWFyY2hNb2RlIHsKIAogLy8gQmlu
YXJ5IHNlYXJjaCBhbGdvcml0aG0sIGNhbGxzIGV4dHJhY3RLZXkgb24gcHJlLXNvcnRlZCBlbGVt
ZW50cyBpbiBhcnJheSwKIC8vIGNvbXBhcmVzIHJlc3VsdCB3aXRoIGtleSAoS2V5VHlwZXMgc2hv
dWxkIGJlIGNvbXBhcmFibGUgd2l0aCAnLS0nLCAnPCcsICc+JykuCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBBcnJheVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUoKmV4dHJhY3RLZXkpKEFycmF5
VHlwZSopPgotaW5saW5lIEFycmF5VHlwZSogYmluYXJ5U2VhcmNoKEFycmF5VHlwZSogYXJyYXks
IHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSwgQmluYXJ5U2VhcmNoTW9kZSBtb2RlID0gS2V5TXVz
dEJlUHJlc2VudEluQXJyYXkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVsZW1lbnRUeXBlLCB0
eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlKCpleHRyYWN0S2V5KShBcnJheUVsZW1lbnRUeXBlKik+
CitpbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogYmluYXJ5U2VhcmNoKEFycmF5RWxlbWVudFR5cGUq
IGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXksIEJpbmFyeVNlYXJjaE1vZGUgbW9kZSA9
IEtleU11c3RCZVByZXNlbnRJbkFycmF5KQogewogICAgIC8vIFRoZSBhcnJheSBtdXN0IGNvbnRh
aW4gYXQgbGVhc3Qgb25lIGVsZW1lbnQgKHByZS1jb25kaXRpb24sIGFycmF5IGRvZXMgY29udGFp
biBrZXkpLgogICAgIC8vIElmIHRoZSBhcnJheSBjb250YWlucyBvbmx5IG9uZSBlbGVtZW50LCBu
byBuZWVkIHRvIGRvIHRoZSBjb21wYXJpc29uLgpAQCAtMTY4LDYgKzE2OCw0MyBAQCBpbmxpbmUg
QXJyYXlUeXBlKiBiaW5hcnlTZWFyY2goQXJyYXlUeXBlCiAgICAgcmV0dXJuICZhcnJheVswXTsK
IH0KIAorLy8gTW9kaWZpZWQgYmluYXJ5U2VhcmNoKCkgYWxnb3JpdGhtIGRlc2lnbmVkIGZvciBh
cnJheS1saWtlIGNsYXNzZXMgdGhhdCBzdXBwb3J0CisvLyBvcGVyYXRvcltdIGJ1dCBub3Qgb3Bl
cmF0b3IrPS4gT25lIGV4YW1wbGUgb2YgYSBjbGFzcyB0aGF0IHF1YWxpZmllcyBpcworLy8gU2Vn
bWVudGVkVmVjdG9yLgordGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5h
bWUgS2V5VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJyYXlFbGVtZW50VHlwZSopLCB0eXBl
bmFtZSBBcnJheVR5cGU+CitpbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogZ2VuZXJpY0JpbmFyeVNl
YXJjaChBcnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXkpCit7CisgICAg
Ly8gVGhlIGFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudCAocHJlLWNvbmRp
dGlvbiwgYXJyYXkgZG9lcyBjb25hdGluIGtleSkuCisgICAgLy8gSWYgdGhlIGFycmF5IG9ubHkg
Y29udGFpbnMgb25lIGVsZW1lbnQsIG5vIG5lZWQgdG8gZG8gdGhlIGNvbXBhcmlzb24uCisgICAg
c2l6ZV90IG9mZnNldCA9IDA7CisgICAgd2hpbGUgKHNpemUgPiAxKSB7CisgICAgICAgIC8vIFBp
Y2sgYW4gZWxlbWVudCB0byBjaGVjaywgaGFsZiB3YXkgdGhyb3VnaCB0aGUgYXJyYXksIGFuZCBy
ZWFkIHRoZSB2YWx1ZS4KKyAgICAgICAgaW50IHBvcyA9IChzaXplIC0gMSkgPj4gMTsKKyAgICAg
ICAgS2V5VHlwZSB2YWwgPSBleHRyYWN0S2V5KCZhcnJheVtvZmZzZXQgKyBwb3NdKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIElmIHRoZSBrZXkgbWF0Y2hlcywgc3VjY2VzcyEKKyAgICAgICAgaWYg
KHZhbCA9PSBrZXkpCisgICAgICAgICAgICByZXR1cm4gJmFycmF5W29mZnNldCArIHBvc107Cisg
ICAgICAgIC8vIFRoZSBpdGVtIHdlIGFyZSBsb29raW5nIGZvciBpcyBzbWFsbGVyIHRoYW4gdGhl
IGl0ZW0gYmVpbmcgY2hlY2s7IHJlZHVjZSB0aGUgdmFsdWUgb2YgJ3NpemUnLAorICAgICAgICAv
LyBjaG9wcGluZyBvZmYgdGhlIHJpZ2h0IGhhbmQgaGFsZiBvZiB0aGUgYXJyYXkuCisgICAgICAg
IGlmIChrZXkgPCB2YWwpCisgICAgICAgICAgICBzaXplID0gcG9zOworICAgICAgICAvLyBEaXNj
YXJkIGFsbCB2YWx1ZXMgaW4gdGhlIGxlZnQgaGFuZCBoYWxmIG9mIHRoZSBhcnJheSwgdXAgdG8g
YW5kIGluY2x1ZGluZyB0aGUgaXRlbSBhdCBwb3MuCisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgc2l6ZSAtPSAocG9zICsgMSk7CisgICAgICAgICAgICBvZmZzZXQgKz0gKHBvcyArIDEpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gJ3NpemUnIHNob3VsZCBuZXZlciByZWFjaCB6ZXJvLgor
ICAgICAgICBBU1NFUlQoc2l6ZSk7CisgICAgfQorICAgIAorICAgIC8vIElmIHdlIHJlYWNoIHRo
aXMgcG9pbnQgd2UndmUgY2hvcHBlZCBkb3duIHRvIG9uZSBlbGVtZW50LCBubyBuZWVkIHRvIGNo
ZWNrIGl0IG1hdGNoZXMKKyAgICBBU1NFUlQoc2l6ZSA9PSAxKTsKKyAgICBBU1NFUlQoa2V5ID09
IGV4dHJhY3RLZXkoJmFycmF5W29mZnNldF0pKTsKKyAgICByZXR1cm4gJmFycmF5W29mZnNldF07
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmJpbmFyeVNlYXJjaDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104286</attachid>
            <date>2011-08-17 18:06:35 -0700</date>
            <delta_ts>2011-08-19 19:18:04 -0700</delta_ts>
            <desc>the patch (fix more style)</desc>
            <filename>valueprofile_patch_5.diff</filename>
            <type>text/plain</type>
            <size>26119</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTMyNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAK
KzIwMTEtMDgtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDIEpJVCBjdXJyZW50bHkgaGFzIG5vIGZhY2lsaXR5IHRvIHByb2ZpbGUgYW5kIHJlcG9y
dAorICAgICAgICB0aGUgdHlwZXMgb2YgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvZmls
ZSB0aGUgdmFsdWVzIHNlZW4gYXQgZnVuY3Rpb24gY2FsbHMgKGJvdGgKKyAgICAgICAgYXJndW1l
bnRzIGFuZCByZXN1bHRzKSBhbmQgaGVhcCBsb2Fkcy4gIFRoaXMgaXMgZG9uZSB3aXRoIGVtcGhh
c2lzCisgICAgICAgIG9uIHBlcmZvcm1hbmNlLiAgQSB2YWx1ZSBwcm9maWxpbmcgc2l0ZSBjb25z
aXN0cyBvZjogYWRkLCBhbmQsCisgICAgICAgIG1vdmUsIGFuZCBzdG9yZTsgbm8gYnJhbmNoaW5n
IGlzIG5lY2Vzc2FyeS4gIEVhY2ggdmFsdWUgcHJvZmlsaW5nCisgICAgICAgIHNpdGUgKGNhbGxl
ZCBhIFZhbHVlUHJvZmlsZSkgaGFzIGEgcmluZyBidWZmZXIgb2YgOCByZWNlbnRseS1zZWVuCisg
ICAgICAgIHZhbHVlcy4gIFZhbHVlUHJvZmlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2Nr
OyB0aGVyZSB3aWxsIGJlCisgICAgICAgIG9uZSBmb3IgZWFjaCBhcmd1bWVudCAoZXhjbHVkaW5n
IHRoaXMpIGFuZCBlYWNoIGhlYXAgbG9hZCBvciBjYWxsc2l0ZS4KKyAgICAgICAgRWFjaCB0aW1l
IGEgdmFsdWUgcHJvZmlsaW5nIHNpdGUgZXhlY3V0ZXMsIGl0IHN0b3JlcyB0aGUgdmFsdWUgaW50
bworICAgICAgICBhIHBzZXVkby1yYW5kb20gZWxlbWVudCBpbiB0aGUgVmFsdWVQcm9maWxlIGJ1
ZmZlci4gIFRoZSBwb2ludCBpcworICAgICAgICB0aGF0IGZvciBmcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUsIHdlIHdpbGwgaGF2ZSA4IHNvbWV3aGF0IHJlY2VudAorICAgICAgICB2YWx1ZXMgaW4g
dGhlIGJ1ZmZlciBhbmQgd2lsbCBiZSBhYmxlIHRvIG5vdCBvbmx5IGZpZ3VyZSBvdXQgd2hhdAor
ICAgICAgICB0eXBlIGl0IGlzLCBidXQgYWxzbyB0byBiZSBhYmxlIHRvIHJlYXNvbiBhYm91dCB0
aGUgYWN0dWFsIHZhbHVlcworICAgICAgICBpZiB3ZSB3aXNoIHRvIGRvIHNvLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LiAg
V2hlbiBlbmFibGVkLCBpdAorICAgICAgICByZXN1bHRzIGluIGEgMy43JSBzbG93LWRvd24gb24g
U3VuU3BpZGVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6VmFsdWVQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpudW1iZXJPZlNhbXBsZXMpOgorICAgICAgICAoSlND
OjpWYWx1ZVByb2ZpbGU6OmNvbXB1dGVQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OlZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZJbnQzMnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51
bWJlck9mRG91Ymxlcyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxs
cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6cHJvYmFiaWxpdHlPZkludDMyKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mRG91YmxlKToKKyAgICAgICAg
KEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mQ2VsbCk6CisgICAgICAgIChKU0M6Omdl
dFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsX3B1dF9yZXN1bHQpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbWV0
aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSlNJ
bnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
U3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmJpbmFyeVNlYXJjaCk6CisgICAgICAgIChX
VEY6OmdlbmVyaWNCaW5hcnlTZWFyY2gpOgorCiAyMDExLTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNDIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dCBz
b21ldGltZXMgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAKIAkJMEJERkZBRTEwRkM2MTkzMTAwRDY5RUY0IC8qIE93bkZhc3RNYWxs
b2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBC
REZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAw
NjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3Bw
ICovOyB9OwogCQkwRjI5NDc5QzEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5QjEy
NkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi87IH07CisJCTBGOTYzQjM4MTNG
QzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEy
MyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAw
NjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKIAkJMTQw
NTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ1MEZBRkJBMkQwMDAw
MTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi87IH07CkBAIC03MjksNiArNzMwLDcgQEAK
IAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8q
IFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6
ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjk0NzlCMTI2RTY5
OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlY2ltYWxOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxv
Y2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4
QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxNjMsNiArMjE2NSw3IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY5NjNC
MzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTk2OUEwNzkwMEVE
MUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUw
MEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQk5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEg
LyogRXZhbENvZGVDYWNoZS5oICovLApAQCAtMjIzMCw2ICsyMjMzLDcgQEAKIAkJCQk4NkQzQjJD
NDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTI0MEUxNkZDOEEwMEIzNDQ2MCAv
KiBBcnJheVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U5MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA5MzI0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDMyLDYgKzE0MzIsMjMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogeworI2lmIEVOQUJMRShW
RVJCT1NFX1ZBTFVFX1BST0ZJTEUpCisgICAgcHJpbnRmKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxu
IiwgdGhpcyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9m
aWxlKGkpOworICAgICAgICBpZiAocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOworICAgICAgICAg
ICAgcHJpbnRmKCIgICBhcmcgPSAldTogIiwgaSArIDEpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHByaW50ZigiICAgYmMgPSAlZDogIiwgcHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICBwcmludGYoInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUsIGNl
bGwgPSAldVxuIiwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpLAor
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkludDMyKCksCisgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisgICAgICAgICAgICAgICBwcm9m
aWxlLT5wcm9iYWJpbGl0eU9mQ2VsbCgpKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLmRl
cmVmKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTEgQEAKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMzgxLDYgKzM4MywyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsg
fQogICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5k
ZXgpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KICNlbmRpZgorICAg
ICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIFZhbHVlUHJvZmlsZSog
YWRkVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV92YWx1ZVByb2ZpbGVzLmFwcGVuZChWYWx1ZVByb2ZpbGUoYnl0ZWNvZGVPZmZzZXQpKTsK
KyAgICAgICAgICAgIHJldHVybiAmbV92YWx1ZVByb2ZpbGVzLmxhc3QoKTsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB7IHJldHVybiBtX3ZhbHVl
UHJvZmlsZXMuc2l6ZSgpOyB9CisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKGlu
dCBpbmRleCkgeyByZXR1cm4gJm1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KKyAgICAgICAgVmFs
dWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZz
ZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmdlbmVyaWNCaW5hcnlTZWFy
Y2g8VmFsdWVQcm9maWxlLCBpbnQsIGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PihtX3Zh
bHVlUHJvZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0KTsKKyAg
ICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3Vu
dCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTU3Niw2ICs1OTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxs
TGlua0luZm9zOwogICAgICAgICBWZWN0b3I8TWV0aG9kQ2FsbExpbmtJbmZvPiBtX21ldGhvZENh
bGxMaW5rSW5mb3M7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxWYWx1ZVByb2ZpbGUsIDg+IG1fdmFsdWVQcm9maWxlczsKKyNlbmRp
ZgogCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9qdW1wVGFyZ2V0czsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQcm9maWxlX2gKKyNkZWZp
bmUgVmFsdWVQcm9maWxlX2gKKworI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKK3N0cnVjdCBWYWx1ZVByb2Zp
bGUgeworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1Y2tldHMgPSAzOyAv
LyA4IGJ1Y2tldHMKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzID0g
MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ1Y2tl
dEluZGV4TWFzayA9IG51bWJlck9mQnVja2V0cyAtIDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNlcnRhaW50eSA9IG51bWJlck9mQnVja2V0cyAqIG51bWJlck9mQnVja2V0czsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWFqb3JpdHkgPSBjZXJ0YWludHkgLyAyOworICAgIAorICAg
IFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIDogYnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpCisgICAgICAgICAgICBidWNrZXRzW2ldLnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbnVt
YmVyT2ZTYW1wbGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkg
eworICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSkKKyAgICAgICAgICAgICAgICByZXN1bHQr
KzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZVByb2JhYmlsaXR5KHVuc2lnbmVkIGNvdW50cywgdW5zaWdu
ZWQgbnVtYmVyT2ZTYW1wbGVzKQorICAgIHsKKyAgICAgICAgaWYgKCFudW1iZXJPZlNhbXBsZXMp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNvdW50cyAqIGNlcnRhaW50
eSAvIG51bWJlck9mU2FtcGxlczsKKyAgICB9CisgICAgICAgIAorICAgIHVuc2lnbmVkIG51bWJl
ck9mSW50MzJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewor
ICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzSW50MzIo
KSkKKyAgICAgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAgICAgCisgICAgdW5zaWduZWQgbnVtYmVyT2ZEb3VibGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAgICAgICAgICAg
aWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzRG91YmxlKCkpCisgICAgICAg
ICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9mQ2VsbHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7CisgICAgICAgICAgICBpZiAoISFidWNrZXRz
W2ldICYmIGJ1Y2tldHNbaV0uZ2V0KCkuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0
Kys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgICAgIAor
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG5vdCBwYXJ0aWN1bGFybHkgb3B0aW1pemVkLCBpbiB0
aGF0IHRoZXkgd2lsbCBlYWNoCisgICAgLy8gcGVyZm9ybSB0d28gcGFzc2VzIG92ZXIgdGhlIGJ1
Y2tldHMgYXJyYXkuIEhvd2V2ZXIsIHRoZXkgYXJlCisgICAgLy8gcHJvYmFibHkgdGhlIGJlc3Qg
YmV0IHVubGVzcyB5b3UgYXJlIHN1cmUgdGhhdCB5b3Ugd2lsbCBiZSBtYWtpbmcKKyAgICAvLyB0
aGVzZSBjYWxscyB3aXRoIGhpZ2ggZnJlcXVlbmN5LgorICAgICAgICAKKyAgICB1bnNpZ25lZCBw
cm9iYWJpbGl0eU9mSW50MzIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQ
cm9iYWJpbGl0eShudW1iZXJPZkludDMycygpLCBudW1iZXJPZlNhbXBsZXMoKSk7CisgICAgfQor
ICAgICAgICAKKyAgICB1bnNpZ25lZCBwcm9iYWJpbGl0eU9mRG91YmxlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZEb3VibGVzKCksIG51
bWJlck9mU2FtcGxlcygpKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgcHJvYmFiaWxpdHlP
ZkNlbGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShu
dW1iZXJPZkNlbGxzKCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAgICB9CisgICAgCisgICAgaW50
IGJ5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKKyAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+IGJ1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKK307CisKK2lubGluZSBpbnQgZ2V0
VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUpCit7
CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CisjZW5kaWYKKwor
fQorCisjZW5kaWYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
OTMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3Miw2ICszNzIsMTYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9nbG9i
YWxSZXNvbHZlSW5mb0luZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKKyAg
ICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVEICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAv
LyBVc2UgdGhpcyB0byBhc3NlcnQgdGhhdCBzbG93LXBhdGggY29kZSBhc3NvY2lhdGVzIG5ldyBw
cm9maWxpbmcgc2l0ZXMgd2l0aCBleGlzdGluZworICAgIC8vIFZhbHVlUHJvZmlsZXMgcmF0aGVy
IHRoYW4gY3JlYXRpbmcgbmV3IG9uZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZvciBhIGdpdmVuIGlu
c3RydWN0aW9uCisgICAgLy8gKHNheSwgZ2V0X2J5X2lkKSB3ZSBnZXQgY29tYmluZWQgc3RhdGlz
dGljcyBmb3IgYm90aCB0aGUgZmFzdC1wYXRoIGV4ZWN1dGlvbnMgb2YgdGhhdAorICAgIC8vIGlu
c3RydWN0aW9ucyBhbmQgdGhlIHNsb3ctcGF0aCBleGVjdXRpb25zLiBGdXJ0aGVybW9yZSwgaWYg
dGhlIHNsb3ctcGF0aCBjb2RlIGNyZWF0ZWQKKyAgICAvLyBuZXcgVmFsdWVQcm9maWxlcyB0aGVu
IHRoZSBWYWx1ZVByb2ZpbGVzIHdvdWxkIG5vIGxvbmdlciBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGUg
b2Zmc2V0LAorICAgIC8vIHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBpbnZhcmlhbnQgbmVjZXNzYXJ5
IHRvIHVzZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KCkuCisgICAg
dW5zaWduZWQgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzID0gbV9jb2RlQmxvY2stPm51bWJlck9mVmFs
dWVQcm9maWxlcygpOworI2VuZGlmCiAKICAgICBmb3IgKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3IgaXRlciA9IG1fc2xvd0Nhc2VzLmJlZ2luKCk7IGl0ZXIgIT0gbV9zbG93Q2FzZXMu
ZW5kKCk7KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQ2MSw2ICs0NzEsOSBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiAgICAgQVNTRVJUKG1fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbkluZGV4ID09IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uc2l6
ZSgpKTsKICAgICBBU1NFUlQobV9jYWxsTGlua0luZm9JbmRleCA9PSBtX2NhbGxTdHJ1Y3R1cmVT
dHViQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQor
ICAgIEFTU0VSVChudW1iZXJPZlZhbHVlUHJvZmlsZXMgPT0gbV9jb2RlQmxvY2stPm51bWJlck9m
VmFsdWVQcm9maWxlcygpKTsKKyNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIFJlc2V0
IHRoaXMsIGluIG9yZGVyIHRvIGd1YXJkIGl0cyB1c2Ugd2l0aCBBU1NFUlRzLgpAQCAtNDkyLDYg
KzUwNSwxNCBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAg
ICAgIGVtaXRDb3VudChjb3VudGVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQorICAgICAgICBBU1NFUlQobV9ieXRlY29kZU9mZnNldCA9PSAodW5zaWduZWQpLTEpOwor
ICAgICAgICBmb3IgKGludCBhcmd1bWVudFJlZ2lzdGVyID0gLVJlZ2lzdGVyRmlsZTo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZSAtIG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgKyAxOyBhcmd1bWVu
dFJlZ2lzdGVyIDwgLVJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgKythcmd1bWVu
dFJlZ2lzdGVyKSB7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIGFyZ3VtZW50UmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDApOworICAgICAg
ICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOworICAgICAg
ICB9CisjZW5kaWYKKwogICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhIGZhc3QgbGlua2VkIGNh
bGwsIHdlIGRvIG5vdCBzZXQgdGhpcyB1cCBpbiB0aGUgY2FsbGVyLgogICAgICAgICBlbWl0UHV0
SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIFJlZ2lzdGVyRmlsZTo6Q29k
ZUJsb2NrKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MzI0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
NCw2ICszMDQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIHZvaWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQs
IFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNG
dW5jdGlvbihGdW5jdGlvbkV4ZWN1dGFibGUqLCBSZWdpc3RlcklEIHNjb3BlQ2hhaW4sIFJlZ2lz
dGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOworICAgICAgICAKKyAgICAgICAg
ZW51bSBWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kIHsgRmlyc3RQcm9maWxpbmdTaXRlLCBTdWJzZXF1
ZW50UHJvZmlsaW5nU2l0ZSB9OworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAgICAg
Ly8gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIHRvIHByb2ZpbGUgaXMgaW4gcmVnVDAgYW5k
IHRoYXQgcmVnVDMgaXMgYXZhaWxhYmxlIGZvcgorICAgICAgICAvLyBzY3JhdGNoLgorICAgICAg
ICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxpbmdTaXRlS2luZCk7Cisj
ZWxzZQorICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxpbmdT
aXRlS2luZCkgeyB9CisjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJv
b2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQg
b3AyLCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gOTMyNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmEKIHZvaWQgSklUOjplbWl0
X29wX2NhbGxfcHV0X3Jlc3VsdChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50
IGRzdCA9IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhv
ZHMuaAkocmV2aXNpb24gOTMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCwzMiBAQCBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24oCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKK2lubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kIHNpdGVLaW5kKQoreworICAgIGNvbnN0IFJlZ2lzdGVy
SUQgdmFsdWUgPSByZWdUMDsKKyAgICBjb25zdCBSZWdpc3RlcklEIHNjcmF0Y2ggPSByZWdUMzsK
KyAgICAKKyAgICBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZTsKKyAgICBpZiAoc2l0ZUtpbmQg
PT0gRmlyc3RQcm9maWxpbmdTaXRlKQorICAgICAgICB2YWx1ZVByb2ZpbGUgPSBtX2NvZGVCbG9j
ay0+YWRkVmFsdWVQcm9maWxlKG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGVsc2UgeworICAgICAg
ICBBU1NFUlQoc2l0ZUtpbmQgPT0gU3Vic2VxdWVudFByb2ZpbGluZ1NpdGUpOworICAgICAgICB2
YWx1ZVByb2ZpbGUgPSBtX2NvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
bV9ieXRlY29kZU9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVCh2YWx1ZVByb2ZpbGUp
OworICAgIAorICAgIGlmIChtX3JhbmRvbUdlbmVyYXRvci5nZXRVaW50MzIoKSAmIDEpCisgICAg
ICAgIGFkZDMyKEltbTMyKDEpLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIpOworICAgIGVsc2UKKyAg
ICAgICAgYWRkMzIoSW1tMzIoMyksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgYW5kMzIo
SW1tMzIoVmFsdWVQcm9maWxlOjpidWNrZXRJbmRleE1hc2spLCBidWNrZXRDb3VudGVyUmVnaXN0
ZXIpOworICAgIG1vdmUoSW1tUHRyKHZhbHVlUHJvZmlsZS0+YnVja2V0cyksIHNjcmF0Y2gpOwor
ICAgIHN0b3JlUHRyKHZhbHVlLCBCYXNlSW5kZXgoc2NyYXRjaCwgYnVja2V0Q291bnRlclJlZ2lz
dGVyLCBUaW1lc0VpZ2h0KSk7Cit9CisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAK
IGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWRUYWcodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQg
dGFnKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgbG9hZFB0cihCYXNl
SW5kZXgocmVnVDIsIHJlZ1QxLCBTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFn
ZSwgbV92ZWN0b3JbMF0pKSwgcmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIo
WmVybywgcmVnVDApKTsKIAorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxp
bmdTaXRlKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTEzNiw2
ICsxMzcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAgICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQoYmFzZSwgcmVnVDIpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHByb3BlcnR5LCByZWdUMik7CiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOworCisgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShTdWJzZXF1ZW50UHJvZmlsaW5nU2l0ZSk7CiB9CiAKIHZvaWQg
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC0zMTgsNiAr
MzIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aQogICAgIGNv
bXBpbGVHZXRCeUlkSG90UGF0aChiYXNlVlJlZywgaWRlbnQpOwogCiAgICAgbWF0Y2gubGluayh0
aGlzKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsKIAogICAgIC8vIFdlJ3ZlIGFs
cmVhZHkgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZ2V0X2J5X2lkLCBzbyBtYWtlIHN1cmUgaXQn
cyBza2lwcGVkIG92ZXIuCkBAIC0zNDUsNiArMzQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKEluc3RydWN0aW9uKgogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJl
ZywgcmVnVDApOwogICAgIGNvbXBpbGVHZXRCeUlkSG90UGF0aChiYXNlVlJlZywgaWRlbnQpOwor
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOwogfQogCkBAIC0zODcsNiArMzkyLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdAogICAgIElkZW50aWZpZXIq
IGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKSk7CiAKICAgICBjb21waWxlR2V0QnlJZFNsb3dDYXNlKHJlc3VsdFZSZWcsIGJh
c2VWUmVnLCBpZGVudCwgaXRlciwgZmFsc2UpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
U3Vic2VxdWVudFByb2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRT
bG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNr
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2
aXNpb24gOTMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJl
Z2lzdGVyczo6ZWF4OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3Vt
ZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkaTsKICAgICAgICAgCisjaWYgRU5BQkxFKFZB
TFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3Vu
dGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxMDsKKyNlbmRpZgorICAgICAgICAKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OnIxMjsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVn
aXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxMzsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgdGFnVHlwZU51bWJlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTY4LDYgKzk2
OCwxNSBAQAogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYKIAorLyogQ3VycmVudGx5
IG9ubHkgaW1wbGVtZW50ZWQgZm9yIEpTVkFMVUU2NCwgb25seSB0ZXN0ZWQgb24gUExBVEZPUk0o
TUFDKSAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9WQUxVRV9QUk9GSUxFUikgJiYgRU5BQkxFKEpJ
VCkgJiYgVVNFKEpTVkFMVUU2NCkgJiYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBFTkFCTEVfVkFM
VUVfUFJPRklMRVIgMAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfVkVSQk9TRV9WQUxV
RV9QUk9GSUxFKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisjZGVmaW5lIEVOQUJMRV9WRVJC
T1NFX1ZBTFVFX1BST0ZJTEUgMAorI2VuZGlmCisKIC8qIEVuc3VyZSB0aGF0IGVpdGhlciB0aGUg
SklUIG9yIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBlbmFibGVkLiAqLwogI2lmICFkZWZpbmVk
KEVOQUJMRV9JTlRFUlBSRVRFUikgJiYgIUVOQUJMRShKSVQpCiAjZGVmaW5lIEVOQUJMRV9JTlRF
UlBSRVRFUiAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgJ
KHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRy
YXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw4IEBAIGVudW0gQmluYXJ5U2VhcmNo
TW9kZSB7CiAKIC8vIEJpbmFyeSBzZWFyY2ggYWxnb3JpdGhtLCBjYWxscyBleHRyYWN0S2V5IG9u
IHByZS1zb3J0ZWQgZWxlbWVudHMgaW4gYXJyYXksCiAvLyBjb21wYXJlcyByZXN1bHQgd2l0aCBr
ZXkgKEtleVR5cGVzIHNob3VsZCBiZSBjb21wYXJhYmxlIHdpdGggJy0tJywgJzwnLCAnPicpLgot
dGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlKCpl
eHRyYWN0S2V5KShBcnJheVR5cGUqKT4KLWlubGluZSBBcnJheVR5cGUqIGJpbmFyeVNlYXJjaChB
cnJheVR5cGUqIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXksIEJpbmFyeVNlYXJjaE1v
ZGUgbW9kZSA9IEtleU11c3RCZVByZXNlbnRJbkFycmF5KQordGVtcGxhdGU8dHlwZW5hbWUgQXJy
YXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtleSkoQXJy
YXlFbGVtZW50VHlwZSopPgoraW5saW5lIEFycmF5RWxlbWVudFR5cGUqIGJpbmFyeVNlYXJjaChB
cnJheUVsZW1lbnRUeXBlKiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBCaW5hcnlT
ZWFyY2hNb2RlIG1vZGUgPSBLZXlNdXN0QmVQcmVzZW50SW5BcnJheSkKIHsKICAgICAvLyBUaGUg
YXJyYXkgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBlbGVtZW50IChwcmUtY29uZGl0aW9uLCBh
cnJheSBkb2VzIGNvbnRhaW4ga2V5KS4KICAgICAvLyBJZiB0aGUgYXJyYXkgY29udGFpbnMgb25s
eSBvbmUgZWxlbWVudCwgbm8gbmVlZCB0byBkbyB0aGUgY29tcGFyaXNvbi4KQEAgLTE2OCw2ICsx
NjgsNDMgQEAgaW5saW5lIEFycmF5VHlwZSogYmluYXJ5U2VhcmNoKEFycmF5VHlwZQogICAgIHJl
dHVybiAmYXJyYXlbMF07CiB9CiAKKy8vIE1vZGlmaWVkIGJpbmFyeVNlYXJjaCgpIGFsZ29yaXRo
bSBkZXNpZ25lZCBmb3IgYXJyYXktbGlrZSBjbGFzc2VzIHRoYXQgc3VwcG9ydAorLy8gb3BlcmF0
b3JbXSBidXQgbm90IG9wZXJhdG9yKz0uIE9uZSBleGFtcGxlIG9mIGEgY2xhc3MgdGhhdCBxdWFs
aWZpZXMgaXMKKy8vIFNlZ21lbnRlZFZlY3Rvci4KK3RlbXBsYXRlPHR5cGVuYW1lIEFycmF5RWxl
bWVudFR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUoKmV4dHJhY3RLZXkpKEFycmF5RWxl
bWVudFR5cGUqKSwgdHlwZW5hbWUgQXJyYXlUeXBlPgoraW5saW5lIEFycmF5RWxlbWVudFR5cGUq
IGdlbmVyaWNCaW5hcnlTZWFyY2goQXJyYXlUeXBlJiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5
cGUga2V5KQoreworICAgIC8vIFRoZSBhcnJheSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGVs
ZW1lbnQgKHByZS1jb25kaXRpb24sIGFycmF5IGRvZXMgY29uYXRpbiBrZXkpLgorICAgIC8vIElm
IHRoZSBhcnJheSBvbmx5IGNvbnRhaW5zIG9uZSBlbGVtZW50LCBubyBuZWVkIHRvIGRvIHRoZSBj
b21wYXJpc29uLgorICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHdoaWxlIChzaXplID4gMSkg
eworICAgICAgICAvLyBQaWNrIGFuIGVsZW1lbnQgdG8gY2hlY2ssIGhhbGYgd2F5IHRocm91Z2gg
dGhlIGFycmF5LCBhbmQgcmVhZCB0aGUgdmFsdWUuCisgICAgICAgIGludCBwb3MgPSAoc2l6ZSAt
IDEpID4+IDE7CisgICAgICAgIEtleVR5cGUgdmFsID0gZXh0cmFjdEtleSgmYXJyYXlbb2Zmc2V0
ICsgcG9zXSk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUga2V5IG1hdGNoZXMsIHN1Y2Nl
c3MhCisgICAgICAgIGlmICh2YWwgPT0ga2V5KQorICAgICAgICAgICAgcmV0dXJuICZhcnJheVtv
ZmZzZXQgKyBwb3NdOworICAgICAgICAvLyBUaGUgaXRlbSB3ZSBhcmUgbG9va2luZyBmb3IgaXMg
c21hbGxlciB0aGFuIHRoZSBpdGVtIGJlaW5nIGNoZWNrOyByZWR1Y2UgdGhlIHZhbHVlIG9mICdz
aXplJywKKyAgICAgICAgLy8gY2hvcHBpbmcgb2ZmIHRoZSByaWdodCBoYW5kIGhhbGYgb2YgdGhl
IGFycmF5LgorICAgICAgICBpZiAoa2V5IDwgdmFsKQorICAgICAgICAgICAgc2l6ZSA9IHBvczsK
KyAgICAgICAgLy8gRGlzY2FyZCBhbGwgdmFsdWVzIGluIHRoZSBsZWZ0IGhhbmQgaGFsZiBvZiB0
aGUgYXJyYXksIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGl0ZW0gYXQgcG9zLgorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHNpemUgLT0gKHBvcyArIDEpOworICAgICAgICAgICAgb2Zmc2V0
ICs9IChwb3MgKyAxKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vICdzaXplJyBzaG91bGQgbmV2
ZXIgcmVhY2ggemVyby4KKyAgICAgICAgQVNTRVJUKHNpemUpOworICAgIH0KKyAgICAKKyAgICAv
LyBJZiB3ZSByZWFjaCB0aGlzIHBvaW50IHdlJ3ZlIGNob3BwZWQgZG93biB0byBvbmUgZWxlbWVu
dCwgbm8gbmVlZCB0byBjaGVjayBpdCBtYXRjaGVzCisgICAgQVNTRVJUKHNpemUgPT0gMSk7Cisg
ICAgQVNTRVJUKGtleSA9PSBleHRyYWN0S2V5KCZhcnJheVtvZmZzZXRdKSk7CisgICAgcmV0dXJu
ICZhcnJheVtvZmZzZXRdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpi
aW5hcnlTZWFyY2g7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104288</attachid>
            <date>2011-08-17 18:07:33 -0700</date>
            <delta_ts>2011-08-17 18:07:33 -0700</delta_ts>
            <desc>value profiling enabled patch</desc>
            <filename>valueprofile_enabled_patch_1.diff</filename>
            <type>text/plain</type>
            <size>26225</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTMyNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAK
KzIwMTEtMDgtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDIEpJVCBjdXJyZW50bHkgaGFzIG5vIGZhY2lsaXR5IHRvIHByb2ZpbGUgYW5kIHJlcG9y
dAorICAgICAgICB0aGUgdHlwZXMgb2YgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvZmls
ZSB0aGUgdmFsdWVzIHNlZW4gYXQgZnVuY3Rpb24gY2FsbHMgKGJvdGgKKyAgICAgICAgYXJndW1l
bnRzIGFuZCByZXN1bHRzKSBhbmQgaGVhcCBsb2Fkcy4gIFRoaXMgaXMgZG9uZSB3aXRoIGVtcGhh
c2lzCisgICAgICAgIG9uIHBlcmZvcm1hbmNlLiAgQSB2YWx1ZSBwcm9maWxpbmcgc2l0ZSBjb25z
aXN0cyBvZjogYWRkLCBhbmQsCisgICAgICAgIG1vdmUsIGFuZCBzdG9yZTsgbm8gYnJhbmNoaW5n
IGlzIG5lY2Vzc2FyeS4gIEVhY2ggdmFsdWUgcHJvZmlsaW5nCisgICAgICAgIHNpdGUgKGNhbGxl
ZCBhIFZhbHVlUHJvZmlsZSkgaGFzIGEgcmluZyBidWZmZXIgb2YgOCByZWNlbnRseS1zZWVuCisg
ICAgICAgIHZhbHVlcy4gIFZhbHVlUHJvZmlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgQ29kZUJsb2Nr
OyB0aGVyZSB3aWxsIGJlCisgICAgICAgIG9uZSBmb3IgZWFjaCBhcmd1bWVudCAoZXhjbHVkaW5n
IHRoaXMpIGFuZCBlYWNoIGhlYXAgbG9hZCBvciBjYWxsc2l0ZS4KKyAgICAgICAgRWFjaCB0aW1l
IGEgdmFsdWUgcHJvZmlsaW5nIHNpdGUgZXhlY3V0ZXMsIGl0IHN0b3JlcyB0aGUgdmFsdWUgaW50
bworICAgICAgICBhIHBzZXVkby1yYW5kb20gZWxlbWVudCBpbiB0aGUgVmFsdWVQcm9maWxlIGJ1
ZmZlci4gIFRoZSBwb2ludCBpcworICAgICAgICB0aGF0IGZvciBmcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUsIHdlIHdpbGwgaGF2ZSA4IHNvbWV3aGF0IHJlY2VudAorICAgICAgICB2YWx1ZXMgaW4g
dGhlIGJ1ZmZlciBhbmQgd2lsbCBiZSBhYmxlIHRvIG5vdCBvbmx5IGZpZ3VyZSBvdXQgd2hhdAor
ICAgICAgICB0eXBlIGl0IGlzLCBidXQgYWxzbyB0byBiZSBhYmxlIHRvIHJlYXNvbiBhYm91dCB0
aGUgYWN0dWFsIHZhbHVlcworICAgICAgICBpZiB3ZSB3aXNoIHRvIGRvIHNvLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LiAg
V2hlbiBlbmFibGVkLCBpdAorICAgICAgICByZXN1bHRzIGluIGEgMy43JSBzbG93LWRvd24gb24g
U3VuU3BpZGVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6VmFsdWVQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpudW1iZXJPZlNhbXBsZXMpOgorICAgICAgICAoSlND
OjpWYWx1ZVByb2ZpbGU6OmNvbXB1dGVQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OlZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZJbnQzMnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51
bWJlck9mRG91Ymxlcyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxs
cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6cHJvYmFiaWxpdHlPZkludDMyKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mRG91YmxlKToKKyAgICAgICAg
KEpTQzo6VmFsdWVQcm9maWxlOjpwcm9iYWJpbGl0eU9mQ2VsbCk6CisgICAgICAgIChKU0M6Omdl
dFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYWxsX3B1dF9yZXN1bHQpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbWV0
aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSlNJ
bnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
U3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmJpbmFyeVNlYXJjaCk6CisgICAgICAgIChX
VEY6OmdlbmVyaWNCaW5hcnlTZWFyY2gpOgorCiAyMDExLTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNDIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dCBz
b21ldGltZXMgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAKIAkJMEJERkZBRTEwRkM2MTkzMTAwRDY5RUY0IC8qIE93bkZhc3RNYWxs
b2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBC
REZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAw
NjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3Bw
ICovOyB9OwogCQkwRjI5NDc5QzEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5QjEy
NkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi87IH07CisJCTBGOTYzQjM4MTNG
QzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVBy
b2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEy
MyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAw
NjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKIAkJMTQw
NTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ1MEZBRkJBMkQwMDAw
MTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi87IH07CkBAIC03MjksNiArNzMwLDcgQEAK
IAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8q
IFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6
ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjk0NzlCMTI2RTY5
OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlY2ltYWxOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxv
Y2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4
QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxNjMsNiArMjE2NSw3IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY5NjNC
MzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTk2OUEwNzkwMEVE
MUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUw
MEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQk5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEg
LyogRXZhbENvZGVDYWNoZS5oICovLApAQCAtMjIzMCw2ICsyMjMzLDcgQEAKIAkJCQk4NkQzQjJD
NDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTI0MEUxNkZDOEEwMEIzNDQ2MCAv
KiBBcnJheVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U5MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA5MzI0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDMyLDYgKzE0MzIsMjMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogeworI2lmIEVOQUJMRShW
RVJCT1NFX1ZBTFVFX1BST0ZJTEUpCisgICAgcHJpbnRmKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxu
IiwgdGhpcyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9m
aWxlKGkpOworICAgICAgICBpZiAocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOworICAgICAgICAg
ICAgcHJpbnRmKCIgICBhcmcgPSAldTogIiwgaSArIDEpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHByaW50ZigiICAgYmMgPSAlZDogIiwgcHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICBwcmludGYoInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUsIGNl
bGwgPSAldVxuIiwKKyAgICAgICAgICAgICAgIHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpLAor
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkludDMyKCksCisgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisgICAgICAgICAgICAgICBwcm9m
aWxlLT5wcm9iYWJpbGl0eU9mQ2VsbCgpKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLmRl
cmVmKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTEgQEAKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMzgxLDYgKzM4MywyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsg
fQogICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5k
ZXgpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KICNlbmRpZgorICAg
ICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIFZhbHVlUHJvZmlsZSog
YWRkVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV92YWx1ZVByb2ZpbGVzLmFwcGVuZChWYWx1ZVByb2ZpbGUoYnl0ZWNvZGVPZmZzZXQpKTsK
KyAgICAgICAgICAgIHJldHVybiAmbV92YWx1ZVByb2ZpbGVzLmxhc3QoKTsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB7IHJldHVybiBtX3ZhbHVl
UHJvZmlsZXMuc2l6ZSgpOyB9CisgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKGlu
dCBpbmRleCkgeyByZXR1cm4gJm1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KKyAgICAgICAgVmFs
dWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZz
ZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmdlbmVyaWNCaW5hcnlTZWFy
Y2g8VmFsdWVQcm9maWxlLCBpbnQsIGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PihtX3Zh
bHVlUHJvZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0KTsKKyAg
ICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3Vu
dCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTU3Niw2ICs1OTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxs
TGlua0luZm9zOwogICAgICAgICBWZWN0b3I8TWV0aG9kQ2FsbExpbmtJbmZvPiBtX21ldGhvZENh
bGxMaW5rSW5mb3M7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxWYWx1ZVByb2ZpbGUsIDg+IG1fdmFsdWVQcm9maWxlczsKKyNlbmRp
ZgogCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9qdW1wVGFyZ2V0czsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmFsdWVQcm9maWxlX2gKKyNkZWZp
bmUgVmFsdWVQcm9maWxlX2gKKworI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKK3N0cnVjdCBWYWx1ZVByb2Zp
bGUgeworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1Y2tldHMgPSAzOyAv
LyA4IGJ1Y2tldHMKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzID0g
MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ1Y2tl
dEluZGV4TWFzayA9IG51bWJlck9mQnVja2V0cyAtIDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNlcnRhaW50eSA9IG51bWJlck9mQnVja2V0cyAqIG51bWJlck9mQnVja2V0czsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWFqb3JpdHkgPSBjZXJ0YWludHkgLyAyOworICAgIAorICAg
IFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIDogYnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpCisgICAgICAgICAgICBidWNrZXRzW2ldLnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbnVt
YmVyT2ZTYW1wbGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkg
eworICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSkKKyAgICAgICAgICAgICAgICByZXN1bHQr
KzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZVByb2JhYmlsaXR5KHVuc2lnbmVkIGNvdW50cywgdW5zaWdu
ZWQgbnVtYmVyT2ZTYW1wbGVzKQorICAgIHsKKyAgICAgICAgaWYgKCFudW1iZXJPZlNhbXBsZXMp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNvdW50cyAqIGNlcnRhaW50
eSAvIG51bWJlck9mU2FtcGxlczsKKyAgICB9CisgICAgICAgIAorICAgIHVuc2lnbmVkIG51bWJl
ck9mSW50MzJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewor
ICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzSW50MzIo
KSkKKyAgICAgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAgICAgCisgICAgdW5zaWduZWQgbnVtYmVyT2ZEb3VibGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAgICAgICAgICAg
aWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzRG91YmxlKCkpCisgICAgICAg
ICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9mQ2VsbHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7CisgICAgICAgICAgICBpZiAoISFidWNrZXRz
W2ldICYmIGJ1Y2tldHNbaV0uZ2V0KCkuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0
Kys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgICAgIAor
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG5vdCBwYXJ0aWN1bGFybHkgb3B0aW1pemVkLCBpbiB0
aGF0IHRoZXkgd2lsbCBlYWNoCisgICAgLy8gcGVyZm9ybSB0d28gcGFzc2VzIG92ZXIgdGhlIGJ1
Y2tldHMgYXJyYXkuIEhvd2V2ZXIsIHRoZXkgYXJlCisgICAgLy8gcHJvYmFibHkgdGhlIGJlc3Qg
YmV0IHVubGVzcyB5b3UgYXJlIHN1cmUgdGhhdCB5b3Ugd2lsbCBiZSBtYWtpbmcKKyAgICAvLyB0
aGVzZSBjYWxscyB3aXRoIGhpZ2ggZnJlcXVlbmN5LgorICAgICAgICAKKyAgICB1bnNpZ25lZCBw
cm9iYWJpbGl0eU9mSW50MzIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQ
cm9iYWJpbGl0eShudW1iZXJPZkludDMycygpLCBudW1iZXJPZlNhbXBsZXMoKSk7CisgICAgfQor
ICAgICAgICAKKyAgICB1bnNpZ25lZCBwcm9iYWJpbGl0eU9mRG91YmxlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZEb3VibGVzKCksIG51
bWJlck9mU2FtcGxlcygpKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgcHJvYmFiaWxpdHlP
ZkNlbGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShu
dW1iZXJPZkNlbGxzKCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAgICB9CisgICAgCisgICAgaW50
IGJ5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKKyAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+IGJ1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKK307CisKK2lubGluZSBpbnQgZ2V0
VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUpCit7
CisgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CisjZW5kaWYKKwor
fQorCisjZW5kaWYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
OTMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3Miw2ICszNzIsMTYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9nbG9i
YWxSZXNvbHZlSW5mb0luZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKKyAg
ICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVEICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAv
LyBVc2UgdGhpcyB0byBhc3NlcnQgdGhhdCBzbG93LXBhdGggY29kZSBhc3NvY2lhdGVzIG5ldyBw
cm9maWxpbmcgc2l0ZXMgd2l0aCBleGlzdGluZworICAgIC8vIFZhbHVlUHJvZmlsZXMgcmF0aGVy
IHRoYW4gY3JlYXRpbmcgbmV3IG9uZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZvciBhIGdpdmVuIGlu
c3RydWN0aW9uCisgICAgLy8gKHNheSwgZ2V0X2J5X2lkKSB3ZSBnZXQgY29tYmluZWQgc3RhdGlz
dGljcyBmb3IgYm90aCB0aGUgZmFzdC1wYXRoIGV4ZWN1dGlvbnMgb2YgdGhhdAorICAgIC8vIGlu
c3RydWN0aW9ucyBhbmQgdGhlIHNsb3ctcGF0aCBleGVjdXRpb25zLiBGdXJ0aGVybW9yZSwgaWYg
dGhlIHNsb3ctcGF0aCBjb2RlIGNyZWF0ZWQKKyAgICAvLyBuZXcgVmFsdWVQcm9maWxlcyB0aGVu
IHRoZSBWYWx1ZVByb2ZpbGVzIHdvdWxkIG5vIGxvbmdlciBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGUg
b2Zmc2V0LAorICAgIC8vIHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBpbnZhcmlhbnQgbmVjZXNzYXJ5
IHRvIHVzZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KCkuCisgICAg
dW5zaWduZWQgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzID0gbV9jb2RlQmxvY2stPm51bWJlck9mVmFs
dWVQcm9maWxlcygpOworI2VuZGlmCiAKICAgICBmb3IgKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3IgaXRlciA9IG1fc2xvd0Nhc2VzLmJlZ2luKCk7IGl0ZXIgIT0gbV9zbG93Q2FzZXMu
ZW5kKCk7KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTQ2MSw2ICs0NzEsOSBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiAgICAgQVNTRVJUKG1fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbkluZGV4ID09IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uc2l6
ZSgpKTsKICAgICBBU1NFUlQobV9jYWxsTGlua0luZm9JbmRleCA9PSBtX2NhbGxTdHJ1Y3R1cmVT
dHViQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQor
ICAgIEFTU0VSVChudW1iZXJPZlZhbHVlUHJvZmlsZXMgPT0gbV9jb2RlQmxvY2stPm51bWJlck9m
VmFsdWVQcm9maWxlcygpKTsKKyNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIFJlc2V0
IHRoaXMsIGluIG9yZGVyIHRvIGd1YXJkIGl0cyB1c2Ugd2l0aCBBU1NFUlRzLgpAQCAtNDkyLDYg
KzUwNSwxNCBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAg
ICAgIGVtaXRDb3VudChjb3VudGVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQorICAgICAgICBBU1NFUlQobV9ieXRlY29kZU9mZnNldCA9PSAodW5zaWduZWQpLTEpOwor
ICAgICAgICBmb3IgKGludCBhcmd1bWVudFJlZ2lzdGVyID0gLVJlZ2lzdGVyRmlsZTo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZSAtIG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgKyAxOyBhcmd1bWVu
dFJlZ2lzdGVyIDwgLVJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgKythcmd1bWVu
dFJlZ2lzdGVyKSB7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIGFyZ3VtZW50UmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDApOworICAgICAg
ICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOworICAgICAg
ICB9CisjZW5kaWYKKwogICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhIGZhc3QgbGlua2VkIGNh
bGwsIHdlIGRvIG5vdCBzZXQgdGhpcyB1cCBpbiB0aGUgY2FsbGVyLgogICAgICAgICBlbWl0UHV0
SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIFJlZ2lzdGVyRmlsZTo6Q29k
ZUJsb2NrKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MzI0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
NCw2ICszMDQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIHZvaWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQs
IFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNG
dW5jdGlvbihGdW5jdGlvbkV4ZWN1dGFibGUqLCBSZWdpc3RlcklEIHNjb3BlQ2hhaW4sIFJlZ2lz
dGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOworICAgICAgICAKKyAgICAgICAg
ZW51bSBWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kIHsgRmlyc3RQcm9maWxpbmdTaXRlLCBTdWJzZXF1
ZW50UHJvZmlsaW5nU2l0ZSB9OworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAgICAg
Ly8gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIHRvIHByb2ZpbGUgaXMgaW4gcmVnVDAgYW5k
IHRoYXQgcmVnVDMgaXMgYXZhaWxhYmxlIGZvcgorICAgICAgICAvLyBzY3JhdGNoLgorICAgICAg
ICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxpbmdTaXRlS2luZCk7Cisj
ZWxzZQorICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxpbmdT
aXRlS2luZCkgeyB9CisjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJv
b2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQg
b3AyLCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gOTMyNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmEKIHZvaWQgSklUOjplbWl0
X29wX2NhbGxfcHV0X3Jlc3VsdChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50
IGRzdCA9IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhv
ZHMuaAkocmV2aXNpb24gOTMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDYgKzQzMCwzMiBAQCBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTRnVuY3Rpb24oCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKK2lubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kIHNpdGVLaW5kKQoreworICAgIGNvbnN0IFJlZ2lzdGVy
SUQgdmFsdWUgPSByZWdUMDsKKyAgICBjb25zdCBSZWdpc3RlcklEIHNjcmF0Y2ggPSByZWdUMzsK
KyAgICAKKyAgICBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZTsKKyAgICBpZiAoc2l0ZUtpbmQg
PT0gRmlyc3RQcm9maWxpbmdTaXRlKQorICAgICAgICB2YWx1ZVByb2ZpbGUgPSBtX2NvZGVCbG9j
ay0+YWRkVmFsdWVQcm9maWxlKG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGVsc2UgeworICAgICAg
ICBBU1NFUlQoc2l0ZUtpbmQgPT0gU3Vic2VxdWVudFByb2ZpbGluZ1NpdGUpOworICAgICAgICB2
YWx1ZVByb2ZpbGUgPSBtX2NvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
bV9ieXRlY29kZU9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVCh2YWx1ZVByb2ZpbGUp
OworICAgIAorICAgIGlmIChtX3JhbmRvbUdlbmVyYXRvci5nZXRVaW50MzIoKSAmIDEpCisgICAg
ICAgIGFkZDMyKEltbTMyKDEpLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIpOworICAgIGVsc2UKKyAg
ICAgICAgYWRkMzIoSW1tMzIoMyksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgYW5kMzIo
SW1tMzIoVmFsdWVQcm9maWxlOjpidWNrZXRJbmRleE1hc2spLCBidWNrZXRDb3VudGVyUmVnaXN0
ZXIpOworICAgIG1vdmUoSW1tUHRyKHZhbHVlUHJvZmlsZS0+YnVja2V0cyksIHNjcmF0Y2gpOwor
ICAgIHN0b3JlUHRyKHZhbHVlLCBCYXNlSW5kZXgoc2NyYXRjaCwgYnVja2V0Q291bnRlclJlZ2lz
dGVyLCBUaW1lc0VpZ2h0KSk7Cit9CisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAK
IGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWRUYWcodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQg
dGFnKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHJldmlzaW9uIDkzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgbG9hZFB0cihCYXNl
SW5kZXgocmVnVDIsIHJlZ1QxLCBTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFn
ZSwgbV92ZWN0b3JbMF0pKSwgcmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIo
WmVybywgcmVnVDApKTsKIAorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxp
bmdTaXRlKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTEzNiw2
ICsxMzcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAgICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQoYmFzZSwgcmVnVDIpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHByb3BlcnR5LCByZWdUMik7CiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOworCisgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShTdWJzZXF1ZW50UHJvZmlsaW5nU2l0ZSk7CiB9CiAKIHZvaWQg
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC0zMTgsNiAr
MzIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aQogICAgIGNv
bXBpbGVHZXRCeUlkSG90UGF0aChiYXNlVlJlZywgaWRlbnQpOwogCiAgICAgbWF0Y2gubGluayh0
aGlzKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsKIAogICAgIC8vIFdlJ3ZlIGFs
cmVhZHkgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZ2V0X2J5X2lkLCBzbyBtYWtlIHN1cmUgaXQn
cyBza2lwcGVkIG92ZXIuCkBAIC0zNDUsNiArMzQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKEluc3RydWN0aW9uKgogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJl
ZywgcmVnVDApOwogICAgIGNvbXBpbGVHZXRCeUlkSG90UGF0aChiYXNlVlJlZywgaWRlbnQpOwor
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOwogfQogCkBAIC0zODcsNiArMzkyLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdAogICAgIElkZW50aWZpZXIq
IGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKSk7CiAKICAgICBjb21waWxlR2V0QnlJZFNsb3dDYXNlKHJlc3VsdFZSZWcsIGJh
c2VWUmVnLCBpZGVudCwgaXRlciwgZmFsc2UpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
U3Vic2VxdWVudFByb2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRT
bG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNr
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2
aXNpb24gOTMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJl
Z2lzdGVyczo6ZWF4OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3Vt
ZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkaTsKICAgICAgICAgCisjaWYgRU5BQkxFKFZB
TFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3Vu
dGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxMDsKKyNlbmRpZgorICAgICAgICAKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OnIxMjsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVn
aXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxMzsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgdGFnVHlwZU51bWJlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA5MzI0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTY1LDcgKzk2
NSwxNiBAQAogCiAvKiBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBmb3IgSlNWQUxVRTY0LCBv
bmx5IHRlc3RlZCBvbiBQTEFURk9STShNQUMpICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19K
SVQpICYmIEVOQUJMRShKSVQpICYmIFVTRShKU1ZBTFVFNjQpICYmIFBMQVRGT1JNKE1BQykKLSNk
ZWZpbmUgRU5BQkxFX0RGR19KSVQgMQorI2RlZmluZSBFTkFCTEVfREZHX0pJVCAwCisjZW5kaWYK
KworLyogQ3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgZm9yIEpTVkFMVUU2NCwgb25seSB0ZXN0
ZWQgb24gUExBVEZPUk0oTUFDKSAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9WQUxVRV9QUk9GSUxF
UikgJiYgRU5BQkxFKEpJVCkgJiYgVVNFKEpTVkFMVUU2NCkgJiYgUExBVEZPUk0oTUFDKQorI2Rl
ZmluZSBFTkFCTEVfVkFMVUVfUFJPRklMRVIgMQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFTkFC
TEVfVkVSQk9TRV9WQUxVRV9QUk9GSUxFKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisjZGVm
aW5lIEVOQUJMRV9WRVJCT1NFX1ZBTFVFX1BST0ZJTEUgMAogI2VuZGlmCiAKIC8qIEVuc3VyZSB0
aGF0IGVpdGhlciB0aGUgSklUIG9yIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBlbmFibGVkLiAq
LwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lv
biA5MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMCw4ICsxMzAsOCBAQCBlbnVtIEJpbmFyeVNlYXJjaE1vZGUgewog
CiAvLyBCaW5hcnkgc2VhcmNoIGFsZ29yaXRobSwgY2FsbHMgZXh0cmFjdEtleSBvbiBwcmUtc29y
dGVkIGVsZW1lbnRzIGluIGFycmF5LAogLy8gY29tcGFyZXMgcmVzdWx0IHdpdGgga2V5IChLZXlU
eXBlcyBzaG91bGQgYmUgY29tcGFyYWJsZSB3aXRoICctLScsICc8JywgJz4nKS4KLXRlbXBsYXRl
PHR5cGVuYW1lIEFycmF5VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSgqZXh0cmFjdEtl
eSkoQXJyYXlUeXBlKik+Ci1pbmxpbmUgQXJyYXlUeXBlKiBiaW5hcnlTZWFyY2goQXJyYXlUeXBl
KiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBCaW5hcnlTZWFyY2hNb2RlIG1vZGUg
PSBLZXlNdXN0QmVQcmVzZW50SW5BcnJheSkKK3RlbXBsYXRlPHR5cGVuYW1lIEFycmF5RWxlbWVu
dFR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUoKmV4dHJhY3RLZXkpKEFycmF5RWxlbWVu
dFR5cGUqKT4KK2lubGluZSBBcnJheUVsZW1lbnRUeXBlKiBiaW5hcnlTZWFyY2goQXJyYXlFbGVt
ZW50VHlwZSogYXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSwgQmluYXJ5U2VhcmNoTW9k
ZSBtb2RlID0gS2V5TXVzdEJlUHJlc2VudEluQXJyYXkpCiB7CiAgICAgLy8gVGhlIGFycmF5IG11
c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudCAocHJlLWNvbmRpdGlvbiwgYXJyYXkgZG9l
cyBjb250YWluIGtleSkuCiAgICAgLy8gSWYgdGhlIGFycmF5IGNvbnRhaW5zIG9ubHkgb25lIGVs
ZW1lbnQsIG5vIG5lZWQgdG8gZG8gdGhlIGNvbXBhcmlzb24uCkBAIC0xNjgsNiArMTY4LDQzIEBA
IGlubGluZSBBcnJheVR5cGUqIGJpbmFyeVNlYXJjaChBcnJheVR5cGUKICAgICByZXR1cm4gJmFy
cmF5WzBdOwogfQogCisvLyBNb2RpZmllZCBiaW5hcnlTZWFyY2goKSBhbGdvcml0aG0gZGVzaWdu
ZWQgZm9yIGFycmF5LWxpa2UgY2xhc3NlcyB0aGF0IHN1cHBvcnQKKy8vIG9wZXJhdG9yW10gYnV0
IG5vdCBvcGVyYXRvcis9LiBPbmUgZXhhbXBsZSBvZiBhIGNsYXNzIHRoYXQgcXVhbGlmaWVzIGlz
CisvLyBTZWdtZW50ZWRWZWN0b3IuCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVsZW1lbnRUeXBl
LCB0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlKCpleHRyYWN0S2V5KShBcnJheUVsZW1lbnRUeXBl
KiksIHR5cGVuYW1lIEFycmF5VHlwZT4KK2lubGluZSBBcnJheUVsZW1lbnRUeXBlKiBnZW5lcmlj
QmluYXJ5U2VhcmNoKEFycmF5VHlwZSYgYXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSkK
K3sKKyAgICAvLyBUaGUgYXJyYXkgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBlbGVtZW50IChw
cmUtY29uZGl0aW9uLCBhcnJheSBkb2VzIGNvbmF0aW4ga2V5KS4KKyAgICAvLyBJZiB0aGUgYXJy
YXkgb25seSBjb250YWlucyBvbmUgZWxlbWVudCwgbm8gbmVlZCB0byBkbyB0aGUgY29tcGFyaXNv
bi4KKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAoc2l6ZSA+IDEpIHsKKyAgICAg
ICAgLy8gUGljayBhbiBlbGVtZW50IHRvIGNoZWNrLCBoYWxmIHdheSB0aHJvdWdoIHRoZSBhcnJh
eSwgYW5kIHJlYWQgdGhlIHZhbHVlLgorICAgICAgICBpbnQgcG9zID0gKHNpemUgLSAxKSA+PiAx
OworICAgICAgICBLZXlUeXBlIHZhbCA9IGV4dHJhY3RLZXkoJmFycmF5W29mZnNldCArIHBvc10p
OworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhlIGtleSBtYXRjaGVzLCBzdWNjZXNzIQorICAg
ICAgICBpZiAodmFsID09IGtleSkKKyAgICAgICAgICAgIHJldHVybiAmYXJyYXlbb2Zmc2V0ICsg
cG9zXTsKKyAgICAgICAgLy8gVGhlIGl0ZW0gd2UgYXJlIGxvb2tpbmcgZm9yIGlzIHNtYWxsZXIg
dGhhbiB0aGUgaXRlbSBiZWluZyBjaGVjazsgcmVkdWNlIHRoZSB2YWx1ZSBvZiAnc2l6ZScsCisg
ICAgICAgIC8vIGNob3BwaW5nIG9mZiB0aGUgcmlnaHQgaGFuZCBoYWxmIG9mIHRoZSBhcnJheS4K
KyAgICAgICAgaWYgKGtleSA8IHZhbCkKKyAgICAgICAgICAgIHNpemUgPSBwb3M7CisgICAgICAg
IC8vIERpc2NhcmQgYWxsIHZhbHVlcyBpbiB0aGUgbGVmdCBoYW5kIGhhbGYgb2YgdGhlIGFycmF5
LCB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBpdGVtIGF0IHBvcy4KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBzaXplIC09IChwb3MgKyAxKTsKKyAgICAgICAgICAgIG9mZnNldCArPSAocG9z
ICsgMSk7CisgICAgICAgIH0KKworICAgICAgICAvLyAnc2l6ZScgc2hvdWxkIG5ldmVyIHJlYWNo
IHplcm8uCisgICAgICAgIEFTU0VSVChzaXplKTsKKyAgICB9CisgICAgCisgICAgLy8gSWYgd2Ug
cmVhY2ggdGhpcyBwb2ludCB3ZSd2ZSBjaG9wcGVkIGRvd24gdG8gb25lIGVsZW1lbnQsIG5vIG5l
ZWQgdG8gY2hlY2sgaXQgbWF0Y2hlcworICAgIEFTU0VSVChzaXplID09IDEpOworICAgIEFTU0VS
VChrZXkgPT0gZXh0cmFjdEtleSgmYXJyYXlbb2Zmc2V0XSkpOworICAgIHJldHVybiAmYXJyYXlb
b2Zmc2V0XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YmluYXJ5U2Vh
cmNoOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>