<?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>87039</bug_id>
          
          <creation_ts>2012-05-21 12:51:51 -0700</creation_ts>
          <short_desc>GC allocation trigger should be tuned to system RAM size</short_desc>
          <delta_ts>2012-05-22 13:46:50 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>jberlin</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>629398</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 12:51:51 -0700</bug_when>
    <thetext>GC allocation trigger should be tuned to system RAM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629405</commentid>
    <comment_count>1</comment_count>
      <attachid>143080</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 12:57:09 -0700</bug_when>
    <thetext>Created attachment 143080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629407</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 12:57:37 -0700</bug_when>
    <thetext>~&gt; cat 32mb_2x_report.txt 
Benchmark report for SunSpider, V8, V8Real, Kraken, JSBench, JSRegress, and DSP on admins-Mac-Pro (MacPro5,1).

VMs tested:
&quot;BASE&quot; at /Volumes/Big/ggaren/baseline-webkit/WebKitBuild/Release/DumpRenderTree (r117524)
&quot;PATCH&quot; at /Volumes/Big/ggaren/webkit/WebKitBuild/Release/DumpRenderTree (r117524)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                     BASE                     PATCH                                       
SunSpider:
   3d-cube                                      8.8941+-0.1494            8.8636+-0.1431        
   3d-morph                                     8.6683+-0.0933            8.5974+-0.0502        
   3d-raytrace                                 11.8269+-0.5472     ?     11.9260+-0.5203        ?
   access-binary-trees                          2.1292+-0.0343     ?      2.2526+-0.2923        ? might be 1.0579x slower
   access-fannkuch                              8.6984+-0.0413     ?      8.7087+-0.0588        ?
   access-nbody                                 4.5317+-0.0756     ?      4.5508+-0.0841        ?
   access-nsieve                                4.2925+-0.0497            4.2407+-0.0343          might be 1.0122x faster
   bitops-3bit-bits-in-byte                     1.6538+-0.0201            1.6388+-0.0171        
   bitops-bits-in-byte                          6.2694+-0.0583            6.2563+-0.0615        
   bitops-bitwise-and                           3.9500+-0.0110     ?      3.9664+-0.0302        ?
   bitops-nsieve-bits                           3.8138+-0.0123     ?      3.8339+-0.0270        ?
   controlflow-recursive                        2.8328+-0.0219     ?      2.8393+-0.0256        ?
   crypto-aes                                   9.2119+-0.1793            9.1912+-0.1895        
   crypto-md5                                   3.9639+-0.0915            3.9457+-0.0896        
   crypto-sha1                                  3.2359+-0.0738            3.2321+-0.0599        
   date-format-tofte                           15.3280+-1.4694           15.2775+-1.3986        
   date-format-xparb                           12.9319+-0.9340           12.4089+-0.8364          might be 1.0421x faster
   math-cordic                                  5.0354+-0.1118            5.0257+-0.1147        
   math-partial-sums                           10.6281+-0.0893           10.5541+-0.0589        
   math-spectral-norm                           3.4080+-0.0687            3.3910+-0.0528        
   regexp-dna                                  11.5131+-0.1319           11.4066+-0.1042        
   string-base64                                6.4778+-0.7862     ?      6.5431+-0.7522        ? might be 1.0101x slower
   string-fasta                                 9.5047+-0.4717            9.4673+-0.4634        
   string-tagcloud                             15.4579+-0.4264           15.4370+-0.4386        
   string-unpack-code                          25.7212+-0.9442           25.6505+-0.8775        
   string-validate-input                        9.6673+-0.6664            9.6198+-0.6672        

   &lt;arithmetic&gt; *                               8.0633+-0.1179            8.0317+-0.1152          might be 1.0039x faster
   &lt;geometric&gt;                                  6.5415+-0.0386            6.5313+-0.0554          might be 1.0016x faster
   &lt;harmonic&gt;                                   5.2563+-0.0137     ?      5.2599+-0.0433        ? might be 1.0007x slower

                                                     BASE                     PATCH                                       
V8:
   crypto                                      86.9521+-0.5854     ?     86.9597+-0.7046        ?
   deltablue                                  181.1783+-2.6885          180.0670+-2.3770        
   earley-boyer                               106.8531+-0.4001     ^    101.7632+-1.3013        ^ definitely 1.0500x faster
   raytrace                                    62.6496+-0.6298     ^     60.7331+-0.7870        ^ definitely 1.0316x faster
   regexp                                     107.0115+-0.6270     ?    108.1183+-0.6245        ? might be 1.0103x slower
   richards                                   167.4984+-4.0645          165.5703+-3.0512          might be 1.0116x faster
   splay                                      138.5698+-10.0919         124.0909+-10.3125         might be 1.1167x faster

   &lt;arithmetic&gt;                               121.5304+-1.3474     ^    118.1861+-1.0375        ^ definitely 1.0283x faster
   &lt;geometric&gt; *                              114.6376+-1.0229     ^    111.4174+-0.9473        ^ definitely 1.0289x faster
   &lt;harmonic&gt;                                 107.7348+-0.6623     ^    104.7347+-0.8084        ^ definitely 1.0286x faster

                                                     BASE                     PATCH                                       
V8Real:
   encrypt                                     0.49169+-0.00053    ^     0.48928+-0.00046       ^ definitely 1.0049x faster
   decrypt                                     8.57254+-0.01124          8.56885+-0.01264       
   deltablue                          x2       1.09060+-0.00943          1.08266+-0.01640       
   earley                                      3.50025+-0.03544          3.45556+-0.03352         might be 1.0129x faster
   boyer                                      18.06434+-0.08127    ^    16.72847+-0.13415       ^ definitely 1.0799x faster
   raytrace                           x2       7.99603+-0.13941          7.92574+-0.10814       
   regexp                             x2      31.12863+-0.15945    ^    30.58857+-0.10219       ^ definitely 1.0177x faster
   richards                           x2       0.43927+-0.00474          0.43835+-0.00383       
   splay                              x2       1.05560+-0.01627          1.05535+-0.01415       

   &lt;arithmetic&gt;                                8.14636+-0.03777    ^     7.95882+-0.02451       ^ definitely 1.0236x faster
   &lt;geometric&gt; *                               2.97308+-0.01216    ^     2.93787+-0.01247       ^ definitely 1.0120x faster
   &lt;harmonic&gt;                                  1.26243+-0.00570          1.25739+-0.00728         might be 1.0040x faster

                                                     BASE                     PATCH                                       
Kraken:
   ai-astar                                    948.255+-2.490            945.834+-2.084         
   audio-beat-detection                        233.030+-1.802            232.801+-1.644         
   audio-dft                                   336.217+-0.505      ?     336.707+-0.730         ?
   audio-fft                                   137.931+-0.244            137.356+-0.514         
   audio-oscillator                            370.937+-2.045      ?     372.775+-2.519         ?
   imaging-darkroom                            328.645+-2.116      ?     328.834+-2.179         ?
   imaging-desaturate                          252.515+-0.189      ^     252.142+-0.059         ^ definitely 1.0015x faster
   imaging-gaussian-blur                       525.784+-0.771            525.565+-0.498         
   json-parse-financial                         76.493+-0.280      ^      75.178+-0.267         ^ definitely 1.0175x faster
   json-stringify-tinderbox                     96.903+-0.387             96.843+-0.561         
   stanford-crypto-aes                         102.272+-0.650            101.105+-0.630           might be 1.0115x faster
   stanford-crypto-ccm                         108.876+-0.513      ?     109.114+-0.653         ?
   stanford-crypto-pbkdf2                      222.823+-0.946      ^     220.772+-0.861         ^ definitely 1.0093x faster
   stanford-crypto-sha256-iterative            108.472+-0.225      ?     108.650+-0.196         ?

   &lt;arithmetic&gt; *                              274.940+-0.360            274.548+-0.359           might be 1.0014x faster
   &lt;geometric&gt;                                 210.293+-0.242      ^     209.730+-0.274         ^ definitely 1.0027x faster
   &lt;harmonic&gt;                                  168.196+-0.262      ^     167.432+-0.256         ^ definitely 1.0046x faster

                                                     BASE                     PATCH                                       
JSBench:
   amazon                                      20.6667+-0.3128     ?     20.8333+-0.2473        ?
   facebook                                    77.5833+-1.6133     ?     78.0833+-1.9245        ?
   google                                     112.2500+-4.5019          109.0000+-1.6255          might be 1.0298x faster
   twitter                                     59.7500+-0.2874           59.3333+-0.4138        
   yahoo                                       25.5000+-0.3318     ?     25.9167+-0.1834        ? might be 1.0163x slower

   &lt;arithmetic&gt; *                              59.1500+-0.8872           58.6333+-0.4961          might be 1.0088x faster
   &lt;geometric&gt;                                 48.6889+-0.4728           48.6453+-0.3249          might be 1.0009x faster
   &lt;harmonic&gt;                                  39.6202+-0.3632     ?     39.8562+-0.2740        ? might be 1.0060x slower

                                                     BASE                     PATCH                                       
JSRegress:
   adapt-to-double-divide                      83.4449+-0.1224     ?     83.5295+-0.1573        ?
   aliased-arguments-getbyval                   4.6731+-0.3376            4.5395+-0.2956          might be 1.0294x faster
   arity-mismatch-inlining                      1.4191+-0.0251     ?      1.4315+-0.0318        ?
   big-int-mul                                 32.9276+-0.5568           32.6655+-0.4761        
   boolean-test                                 4.5333+-0.0345            4.5275+-0.0259        
   cast-int-to-double                          16.2419+-0.0161     ?     16.2871+-0.0744        ?
   cfg-simplify                                 7.5803+-0.0165     ?      7.5813+-0.0133        ?
   cmpeq-obj-to-obj-other                      16.6080+-0.2302     ?     16.8659+-0.2006        ? might be 1.0155x slower
   constant-test                               31.2405+-0.0972           31.1822+-0.1006        
   direct-arguments-getbyval                    0.8140+-0.0116            0.8115+-0.0146        
   double-pollution-getbyval                   10.0716+-0.0154     ?     10.0751+-0.0203        ?
   double-pollution-putbyoffset                 5.4735+-0.0803            5.4217+-0.0793        
   external-arguments-getbyval                  5.2910+-0.3174            5.2496+-0.3310        
   external-arguments-putbyval                  8.2970+-0.6693            8.2507+-0.6408        
   Float32Array-matrix-mult                    13.5300+-1.0099     ?     13.6370+-0.9756        ?
   fold-double-to-int                          38.6249+-0.1406           38.5781+-0.0806        
   function-dot-apply                           5.8333+-0.0385            5.7930+-0.0587        
   function-test                                5.3740+-0.0585     ^      5.2739+-0.0410        ^ definitely 1.0190x faster
   inline-arguments-access                      4.1494+-0.0279            4.1483+-0.0419        
   inline-arguments-local-escape               46.0531+-2.9262     ?     52.3115+-4.2389        ? might be 1.1359x slower
   int-overflow-local                         118.0483+-0.3662     ?    118.3313+-0.5207        ?
   Int16Array-bubble-sort                      81.0271+-2.4228           80.4548+-2.8448        
   Int16Array-load-int-mul                     18.1688+-0.1824           18.1451+-0.1931        
   Int8Array-load                               5.6627+-0.2763            5.4664+-0.0575          might be 1.0359x faster
   integer-divide                              17.0828+-0.0703           17.0743+-0.0811        
   method-on-number                           219.3700+-3.2640          218.6300+-3.5632        
   number-test                                  4.5098+-0.0160     ?      4.5275+-0.0261        ?
   object-test                                  4.8996+-0.0269            4.8714+-0.0283        
   poly-stricteq                              104.2680+-0.6172          103.7948+-0.3356        
   rare-osr-exit-on-local                     173.2102+-0.1526          173.0642+-0.1241        
   simple-activation-demo                      63.1580+-0.1389     ?     63.3731+-0.1316        ?
   slow-convergence                           103.9687+-0.6942     ?    104.1182+-0.6530        ?
   sparse-conditional                           2.0699+-0.0246            2.0646+-0.0161        
   string-hash                                 16.4398+-0.1261           16.2530+-0.1042          might be 1.0115x faster
   string-test                                  4.3049+-0.0373     ?      4.3897+-0.1093        ? might be 1.0197x slower
   tear-off-arguments                           4.6770+-0.3433            4.6492+-0.2970        
   to-int32-boolean                            33.1902+-0.2028     ?     33.2326+-0.1849        ?
   undefined-test                               4.8569+-0.0254     ?      4.8610+-0.0521        ?

   &lt;arithmetic&gt;                                34.7656+-0.1482     ?     34.8806+-0.2190        ? might be 1.0033x slower
   &lt;geometric&gt; *                               13.9761+-0.1355     ?     13.9857+-0.1514        ? might be 1.0007x slower
   &lt;harmonic&gt;                                   6.3049+-0.0579            6.2913+-0.0655          might be 1.0022x faster

                                                     BASE                     PATCH                                       
DSP:
   filtrr-posterize-tint                       56.6053+-0.6600           55.7920+-0.7078          might be 1.0146x faster
   filtrr-tint-contrast-sat-bright             94.0750+-1.4638     ^     85.9276+-0.8660        ^ definitely 1.0948x faster
   filtrr-tint-sat-adj-contr-mult             109.7405+-1.1978          108.5290+-0.7462          might be 1.0112x faster
   filtrr-blur-overlay-sat-contr              268.6270+-3.0472          266.4193+-4.5360        
   filtrr-sat-blur-mult-sharpen-contr         336.7590+-4.4060          334.5542+-5.6051        
   filtrr-sepia-bias                           38.3369+-0.7928     ?     38.4364+-0.6893        ?
   route9-vp8                         x5     1883.9348+-17.6787    ?   1886.5193+-12.0586       ?

   &lt;arithmetic&gt;                               938.5289+-8.2715          938.3868+-5.7269          might be 1.0002x faster
   &lt;geometric&gt; *                              404.9495+-1.8710     ^    400.5049+-1.2215        ^ definitely 1.0111x faster
   &lt;harmonic&gt;                                 150.9540+-1.2331     ^    148.2329+-1.2560        ^ definitely 1.0184x faster

                                                     BASE                     PATCH                                       
All benchmarks:
   &lt;arithmetic&gt;                               147.5150+-0.7835          147.2358+-0.5412          might be 1.0019x faster
   &lt;geometric&gt;                                 22.4585+-0.1002           22.3522+-0.1044          might be 1.0048x faster
   &lt;harmonic&gt;                                   5.1313+-0.0177            5.1181+-0.0261          might be 1.0026x faster

                                                     BASE                     PATCH                                       
Geomean of preferred means:
   &lt;scaled-result&gt;                             42.5566+-0.1818     ^     42.1645+-0.1087        ^ definitely 1.0093x faster

~&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629746</commentid>
    <comment_count>3</comment_count>
      <attachid>143144</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 17:19:53 -0700</bug_when>
    <thetext>Created attachment 143144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629748</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 17:20:32 -0700</bug_when>
    <thetext>Re-uploading to trigger EWS, since I coded the UNIX and WINDOWS versions blind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629750</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 17:22:59 -0700</bug_when>
    <thetext>Attachment 143144 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/WTF/wtf/AmountOfRAM.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/AmountOfRAM.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/AmountOfRAM.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629769</commentid>
    <comment_count>6</comment_count>
      <attachid>143144</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 17:43:00 -0700</bug_when>
    <thetext>Comment on attachment 143144
Patch

Attachment 143144 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12730811</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629784</commentid>
    <comment_count>7</comment_count>
      <attachid>143153</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 17:51:38 -0700</bug_when>
    <thetext>Created attachment 143153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629803</commentid>
    <comment_count>8</comment_count>
      <attachid>143157</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 18:09:12 -0700</bug_when>
    <thetext>Created attachment 143157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629805</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 18:11:45 -0700</bug_when>
    <thetext>Attachment 143157 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/WTF/wtf/AmountOfRAM.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/AmountOfRAM.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/AmountOfRAM.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629822</commentid>
    <comment_count>10</comment_count>
      <attachid>143157</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 18:31:23 -0700</bug_when>
    <thetext>Comment on attachment 143157
Patch

Attachment 143157 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12733810</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629865</commentid>
    <comment_count>11</comment_count>
      <attachid>143157</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 19:31:48 -0700</bug_when>
    <thetext>Comment on attachment 143157
Patch

Attachment 143157 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12736795</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629901</commentid>
    <comment_count>12</comment_count>
      <attachid>143157</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 20:33:11 -0700</bug_when>
    <thetext>Comment on attachment 143157
Patch

Attachment 143157 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12749169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629926</commentid>
    <comment_count>13</comment_count>
      <attachid>143157</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 21:35:23 -0700</bug_when>
    <thetext>Comment on attachment 143157
Patch

Attachment 143157 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12748282</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629944</commentid>
    <comment_count>14</comment_count>
      <attachid>143192</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 22:51:42 -0700</bug_when>
    <thetext>Created attachment 143192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629946</commentid>
    <comment_count>15</comment_count>
      <attachid>143193</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-21 22:54:19 -0700</bug_when>
    <thetext>Created attachment 143193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629949</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 22:58:47 -0700</bug_when>
    <thetext>Attachment 143193 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/WTF/wtf/AmountOfRAM.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/AmountOfRAM.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/AmountOfRAM.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629964</commentid>
    <comment_count>17</comment_count>
      <attachid>143193</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 23:17:09 -0700</bug_when>
    <thetext>Comment on attachment 143193
Patch

Attachment 143193 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12739714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630015</commentid>
    <comment_count>18</comment_count>
      <attachid>143205</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-22 00:08:47 -0700</bug_when>
    <thetext>Created attachment 143205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630022</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 00:12:31 -0700</bug_when>
    <thetext>Attachment 143205 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/WTF/wtf/AmountOfRAM.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630043</commentid>
    <comment_count>20</comment_count>
      <attachid>143205</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-22 00:38:54 -0700</bug_when>
    <thetext>Comment on attachment 143205
Patch

Attachment 143205 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12749233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630501</commentid>
    <comment_count>21</comment_count>
      <attachid>143323</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-22 10:16:42 -0700</bug_when>
    <thetext>Created attachment 143323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630507</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 10:20:05 -0700</bug_when>
    <thetext>Attachment 143323 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/WTF/wtf/AmountOfRAM.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 16 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>630564</commentid>
    <comment_count>23</comment_count>
      <attachid>143323</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-22 11:15:17 -0700</bug_when>
    <thetext>Comment on attachment 143323
Patch

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

&gt; Source/JavaScriptCore/heap/Heap.cpp:49
&gt; +static const size_t largeHeapSize = 32 * MB;
&gt; +static const size_t smallHeapSize = 1 * MB;

Can you add “why” comments?

&gt; Source/JavaScriptCore/heap/Heap.cpp:158
&gt; +    if (heapSize &lt; ramSize / 4)
&gt; +        return 2 * heapSize;
&gt; +    if (heapSize &lt; ramSize / 2)
&gt; +        return 1.5 * heapSize;
&gt; +    return 1.25 * heapSize;

Can you add “why” comments?

&gt; Source/JavaScriptCore/heap/Heap.cpp:237
&gt; +    , m_ramSize(WTF::amountOfRAM())

The bug title calls this “system RAM” but you chose the term “amount of RAM”. Also not clear why an explicit WTF prefix is needed or helpful.

&gt; Source/WTF/wtf/AmountOfRAM.cpp:76
&gt; +    static size_t amountOfRAM = computeAmountOfRAM();

Could be static const.

&gt; Source/WTF/wtf/AmountOfRAM.h:31
&gt; +WTF_EXPORT_PRIVATE size_t amountOfRAM();

This file is missing &quot;using WTF::amountOfRAM&quot;.

&gt; Source/WTF/wtf/StdLibExtras.h:110
&gt;  static const size_t KB = 1024;

Should be lowercase K. Not for this patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630654</commentid>
    <comment_count>24</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-22 12:17:02 -0700</bug_when>
    <thetext>Committed r118019: &lt;http://trac.webkit.org/changeset/118019&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630679</commentid>
    <comment_count>25</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-22 13:03:27 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Committed r118019: &lt;http://trac.webkit.org/changeset/118019&gt;

Speculative build fix in http://trac.webkit.org/changeset/118031. Can you please check that it is the right fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630714</commentid>
    <comment_count>26</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-22 13:46:50 -0700</bug_when>
    <thetext>Follow-up build fix: &lt;http://trac.webkit.org/changeset/118035&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143080</attachid>
            <date>2012-05-21 12:57:09 -0700</date>
            <delta_ts>2012-05-21 17:19:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120521125708.patch</filename>
            <type>text/plain</type>
            <size>20962</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3ODA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDEyLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDUtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBtYWtlIGRpc3RjaGVjay4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMTc1MjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
OSArMzUsOSBAQAogI2luY2x1ZGUgIlRyYWNpbmcuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5l
cy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvQW1vdW50T2ZSQU0uaD4K
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNDUsMTQgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIG5hbWVzcGFjZSB7IAogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLXN0YXRpYyBj
b25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBQTEFU
Rk9STShJT1MpCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlSGVhcFNpemUgPSA4ICogMTAyNCAq
IDEwMjQ7Ci0jZWxzZQotc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUhlYXBTaXplID0gNTEyICog
MTAyNDsKLSNlbmRpZgotc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbEhlYXBTaXplID0gNTEyICog
MTAyNDsKK3N0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDMyICogTUI7CitzdGF0
aWMgY29uc3Qgc2l6ZV90IHNtYWxsSGVhcFNpemUgPSAxICogTUI7CiAKICNpZiBFTkFCTEUoR0Nf
TE9HR0lORykKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTE0OCwxNCArMTQyLDIyIEBAIHN0cnVj
dCBHQ0NvdW50ZXIgewogI2RlZmluZSBHQ0NPVU5URVIobmFtZSwgdmFsdWUpIGRvIHsgfSB3aGls
ZSAoZmFsc2UpCiAjZW5kaWYKIAotc3RhdGljIHNpemVfdCBoZWFwU2l6ZUZvckhpbnQoSGVhcFNp
emUgaGVhcFNpemUpCitzdGF0aWMgaW5saW5lIHNpemVfdCBtaW5IZWFwU2l6ZShIZWFwVHlwZSBo
ZWFwVHlwZSwgc2l6ZV90IHJhbVNpemUpCiB7Ci0gICAgaWYgKGhlYXBTaXplID09IExhcmdlSGVh
cCkKLSAgICAgICAgcmV0dXJuIGxhcmdlSGVhcFNpemU7Ci0gICAgQVNTRVJUKGhlYXBTaXplID09
IFNtYWxsSGVhcCk7CisgICAgaWYgKGhlYXBUeXBlID09IExhcmdlSGVhcCkKKyAgICAgICAgcmV0
dXJuIG1pbihsYXJnZUhlYXBTaXplLCByYW1TaXplIC8gNCk7CiAgICAgcmV0dXJuIHNtYWxsSGVh
cFNpemU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHByb3BvcnRpb25hbEhlYXBTaXplKHNp
emVfdCBoZWFwU2l6ZSwgc2l6ZV90IHJhbVNpemUpCit7CisgICAgaWYgKGhlYXBTaXplIDwgcmFt
U2l6ZSAvIDQpCisgICAgICAgIHJldHVybiAyICogaGVhcFNpemU7CisgICAgaWYgKGhlYXBTaXpl
IDwgcmFtU2l6ZSAvIDIpCisgICAgICAgIHJldHVybiAxLjUgKiBoZWFwU2l6ZTsKKyAgICByZXR1
cm4gMS4yNSAqIGhlYXBTaXplOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNoYXJl
ZEluc3RhbmNlVGhyZWFkU3RhdGUoKQogewogICAgIGlmICghSlNMb2NrOjpsb2NrQ291bnQoKSkK
QEAgLTIzMCw5ICsyMzIsMTAgQEAgaW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBSZWNv
cmRUeQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSGVhcDo6SGVhcChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhlYXBTaXplKQotICAgIDogbV9oZWFwU2l6ZShoZWFw
U2l6ZSkKLSAgICAsIG1fbWluQnl0ZXNQZXJDeWNsZShoZWFwU2l6ZUZvckhpbnQoaGVhcFNpemUp
KQorSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBUeXBlIGhlYXBUeXBl
KQorICAgIDogbV9oZWFwVHlwZShoZWFwVHlwZSkKKyAgICAsIG1fcmFtU2l6ZShXVEY6OmFtb3Vu
dE9mUkFNKCkpCisgICAgLCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlw
ZSwgbV9yYW1TaXplKSkKICAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKICAgICAsIG1f
Ynl0ZXNBbGxvY2F0ZWRMaW1pdChtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX2J5dGVzQWxs
b2NhdGVkKDApCkBAIC03MDYsMTUgKzcwOSwxNSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBU
b2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIG1fYnl0ZXNBYmFuZG9uZWQgPSAwOwogICAgIH0KIAot
ICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNhbCBHQyBjaHVybiBpbiBsYXJnZSBoZWFwcywgd2Ug
c2V0IHRoZSBuZXcgYWxsb2NhdGlvbiAKLSAgICAvLyBsaW1pdCB0byBiZSB0aGUgY3VycmVudCBz
aXplIG9mIHRoZSBoZWFwLiBUaGlzIGhldXJpc3RpYyAKLSAgICAvLyBpcyBhIGJpdCBhcmJpdHJh
cnkuIFVzaW5nIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGhlYXAgYWZ0ZXIgdGhpcyAKLSAgICAv
LyBjb2xsZWN0aW9uIGdpdmVzIHVzIGEgMlggbXVsdGlwbGllciwgd2hpY2ggaXMgYSAxOjEgKGhl
YXAgc2l6ZSA6Ci0gICAgLy8gbmV3IGJ5dGVzIGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5kIHNl
ZW1zIHRvIHdvcmsgd2VsbCBpbiBiZW5jaG1hcmtzLgotICAgIHNpemVfdCBuZXdTaXplID0gc2l6
ZSgpOworICAgIHNpemVfdCBjdXJyZW50SGVhcFNpemUgPSBzaXplKCk7CiAgICAgaWYgKGZ1bGxH
QykgewotICAgICAgICBtX3NpemVBZnRlckxhc3RDb2xsZWN0ID0gbmV3U2l6ZTsKLSAgICAgICAg
bV9ieXRlc0FsbG9jYXRlZExpbWl0ID0gbWF4KG5ld1NpemUsIG1fbWluQnl0ZXNQZXJDeWNsZSk7
CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisKKyAg
ICAgICAgLy8gVG8gYXZvaWQgcGF0aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5k
IHZlcnkgbGFyZ2UgaGVhcHMsIHdlIHNldAorICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24g
bGltaXQgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCisgICAg
ICAgIC8vIGZpeGVkIG1pbmltdW0uCisgICAgICAgIHNpemVfdCBtYXhIZWFwU2l6ZSA9IG1heCht
aW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShj
dXJyZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkpOworICAgICAgICBtX2J5dGVzQWxsb2NhdGVkTGlt
aXQgPSBtYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKICAgICB9CiAgICAgbV9ieXRlc0Fs
bG9jYXRlZCA9IDA7CiAgICAgZG91YmxlIGxhc3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1l
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMTc1MjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDggKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBlbnVtIE9wZXJhdGlvbkluUHJvZ3Jl
c3MgeyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgQ29sbGVjdGlvbiB9OwogCi0gICAgLy8gSGVh
cCBzaXplIGhpbnQuCi0gICAgZW51bSBIZWFwU2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07
CisgICAgZW51bSBIZWFwVHlwZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CiAKICAgICBjbGFz
cyBIZWFwIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGVhcCk7CkBAIC05MCw3ICs4
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIo
Y29uc3QgSlNDZWxsKiwgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB1aW50OF90KiBhZGRyZXNz
T2ZDYXJkRm9yKEpTQ2VsbCopOwogCi0gICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNp
emUpOworICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSosIEhlYXBUeXBlKTsKICAgICAgICAgfkhl
YXAoKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6
ZSgpOwogCkBAIC0xOTcsNyArMTk2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lz
dGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCk7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0Fs
bG9jYXRvcigpOwogCi0gICAgICAgIGNvbnN0IEhlYXBTaXplIG1faGVhcFNpemU7CisgICAgICAg
IGNvbnN0IEhlYXBUeXBlIG1faGVhcFR5cGU7CisgICAgICAgIGNvbnN0IHNpemVfdCBtX3JhbVNp
emU7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNp
emVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDExNzUyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw4ICsxMTMsOCBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0
YWJsZUFsCiB9CiAjZW5kaWYKIAotSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0
YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhl
YXBTaXplIGhlYXBTaXplKQotICAgIDogaGVhcCh0aGlzLCBoZWFwU2l6ZSkKK0pTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFj
a1R5cGUgdGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKKyAgICA6IGhlYXAodGhp
cywgaGVhcFR5cGUpCiAgICAgLCBnbG9iYWxEYXRhVHlwZShnbG9iYWxEYXRhVHlwZSkKICAgICAs
IGNsaWVudERhdGEoMCkKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkp
CkBAIC0yODIsMTkgKzI4MiwxOSBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogI2Vu
ZGlmCiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUNv
bnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNz
UmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAoVGhy
ZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSlNHbG9iYWxEYXRhKEFQSUNvbnRleHRHcm91cCwgdHlwZSwgaGVhcFNpemUpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShBUElDb250ZXh0R3JvdXAsIHR5
cGUsIGhlYXBUeXBlKSk7CiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERh
dGE6OmNyZWF0ZShUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNz
UmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBl
IHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNH
bG9iYWxEYXRhKERlZmF1bHQsIHR5cGUsIGhlYXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBKU0dsb2JhbERhdGEoRGVmYXVsdCwgdHlwZSwgaGVhcFR5cGUpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFsRGF0YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNr
VHlwZSB0eXBlLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBK
U0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFwU2l6ZSk7CisgICAgcmV0
dXJuIGNyZWF0ZSh0eXBlLCBoZWFwVHlwZSk7CiB9CiAKIGJvb2wgSlNHbG9iYWxEYXRhOjpzaGFy
ZWRJbnN0YW5jZUV4aXN0cygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTE3NTI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw5ICsxNDUs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VF
eGlzdHMoKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsRGF0YSYg
c2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFz
c1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0g
U21hbGxIZWFwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8
SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNt
YWxsSGVhcCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRl
Q29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNy
ZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFr
ZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNr
VHlwZSwgSGVhcFR5cGUgPSBTbWFsbEhlYXApOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+
SlNHbG9iYWxEYXRhKCk7CiAKICAgICAgICAgdm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhy
ZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFkcygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJl
YWRzKCk7IH0KQEAgLTM3Myw3ICszNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAK
LSAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhl
YXBTaXplKTsKKyAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFj
a1R5cGUsIEhlYXBUeXBlKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZElu
c3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogI2lm
IEVOQUJMRShBU1NFTUJMRVIpICYmIChFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5B
QkxFKExMSU5UKSkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTc4MDkpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA1LTIxICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgR0MgYWxsb2NhdGlvbiB0cmln
Z2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBtZWFz
dXJpbmcgc3lzdGVtIFJBTS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9q
L1dURi52Y3Byb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL0Ftb3VudE9mUkFNLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAg
ICAgICAoV1RGOjpjb21wdXRlQW1vdW50T2ZSQU0pOgorICAgICAgICAoV1RGOjphbW91bnRPZlJB
TSk6CisgICAgICAgICogd3RmL0Ftb3VudE9mUkFNLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJh
cy5oOgorICAgICAgICAoV1RGKToKKwogMjAxMi0wNS0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ1NTOiBNb3ZlIGR1cGxpY2F0ZSBwcm9wZXJ0eSBlbGlt
aW5hdGlvbiB0byBwYXJzZXIuCkluZGV4OiBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
MTc1MjQpCisrKyBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDggQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL051
bGxQdHIuaCBcCiAgICAgU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5jcHAgXAogICAgIFNv
dXJjZS9XVEYvd3RmL051bWJlck9mQ29yZXMuaCBcCisgICAgU291cmNlL1dURi93dGYvQW1vdW50
T2ZSQU0uY3BwIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5oIFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNv
dXJjZS5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmggXApJbmRleDog
U291cmNlL1dURi9XVEYuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5neXBpCShy
ZXZpc2lvbiAxMTc1MjQpCisrKyBTb3VyY2UvV1RGL1dURi5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTIsNiArMTUyLDggQEAKICAgICAgICAgICAgICd3dGYvTnVsbFB0ci5jcHAnLAogICAgICAg
ICAgICAgJ3d0Zi9OdW1iZXJPZkNvcmVzLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bWJlck9m
Q29yZXMuaCcsCisgICAgICAgICAgICAnd3RmL0Ftb3VudE9mUkFNLmNwcCcsCisgICAgICAgICAg
ICAnd3RmL0Ftb3VudE9mUkFNLmgnLAogICAgICAgICAgICAgJ3d0Zi9PU0FsbG9jYXRvclBvc2l4
LmNwcCcsCiAgICAgICAgICAgICAnd3RmL09TQWxsb2NhdG9yV2luLmNwcCcsCiAgICAgICAgICAg
ICAnd3RmL09TUmFuZG9tU291cmNlLmNwcCcsCkluZGV4OiBTb3VyY2UvV1RGL1dURi5wcm8KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9XVEYucHJvCShyZXZpc2lvbiAxMTc1MjQpCisrKyBTb3Vy
Y2UvV1RGL1dURi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgTm90Rm91bmQuaCBcCiAgICAgTnVsbFB0ci5oIFwKICAgICBOdW1iZXJPZkNvcmVz
LmggXAorICAgIEFtb3VudE9mUkFNLmggXAogICAgIE9TQWxsb2NhdG9yLmggXAogICAgIE9TUmFu
ZG9tU291cmNlLmggXAogICAgIE93bkFycmF5UHRyLmggXApAQCAtMTkwLDYgKzE5MSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIE1ldGFBbGxvY2F0b3IuY3BwIFwKICAgICBOdWxsUHRyLmNwcCBcCiAg
ICAgTnVtYmVyT2ZDb3Jlcy5jcHAgXAorICAgIEFtb3VudE9mUkFNLmNwcCBcCiAgICAgT1NSYW5k
b21Tb3VyY2UuY3BwIFwKICAgICBxdC9NYWluVGhyZWFkUXQuY3BwIFwKICAgICBxdC9TdHJpbmdR
dC5jcHAgXApJbmRleDogU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oJKHJldmlzaW9uIDExNzUyNCkK
KysrIFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05
MDEsNiArOTAxLDE0IEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0
aD0iLi5cd3RmXEFtb3VudE9mUkFNLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJ
UmVsYXRpdmVQYXRoPSIuLlx3dGZcQW1vdW50T2ZSQU0uaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8
RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcTnVtYmVyT2ZDb3Jlcy5jcHAiCiAJCQk+CiAJ
CTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTE3NTI0KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDggQEAKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEg
LyogQW1vdW50T2ZSQU0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLzsg
fTsKKwkJMTQzRjYxMjAxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBE
QjUxNEEgLyogQW1vdW50T2ZSQU0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBODc2REJEODE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzZEQkQ3MTUx
ODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovOyB9OwogCQlBOEE0NzM3RjE1MUE4MjVCMDA0
MTIzRkYgLyogQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi87IH07
CiAJCUE4QTQ3MzgwMTUxQTgyNUIwMDQxMjNGRiAvKiBBbHdheXNJbmxpbmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjU1MTUxQTgyNUEwMDQx
MjNGRiAvKiBBbHdheXNJbmxpbmUuaCAqLzsgfTsKQEAgLTI0MCw2ICsyNDIsOCBAQAogLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLworCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50T2ZSQU0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQW1vdW50T2ZSQU0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogQW1v
dW50T2ZSQU0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW1vdW50T2ZSQU0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2
IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4
Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNkYxNDY4OUM0NzAwRTc4Qjc2IC8qIENvbXBp
bGVyVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlclZlcnNpb24ueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzQsNiArNTM4LDggQEAKIAkJQTg3
NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9m
UkFNLmNwcCAqLywKKwkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50T2ZSQU0u
aCAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi8sCiAJ
CQkJQThBNDcyNTUxNTFBODI1QTAwNDEyM0ZGIC8qIEFsd2F5c0lubGluZS5oICovLAogCQkJCUE4
QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCkBAIC0xMDIzLDYg
KzEwMjksNyBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmln
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50
T2ZSQU0uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTE2OCw2ICsxMTc1LDcgQEAKIAkJCQlBOEE0NzQ3
NzE1MUE4MjVCMDA0MTIzRkYgLyogVVJMRXNjYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3NDdCMTUxQTgyNUIwMDQxMjNGRiAvKiBVUkxTZWdtZW50cy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50T2ZSQU0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFtb3Vu
dE9mUkFNLmgiCisKKyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKKyNpZiBPUyhEQVJXSU4pCisj
aW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8
c3lzL3N5c2N0bC5oPgorI2VsaWYgT1MoVU5JWCkKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbGlm
IE9TKFdJTkRPV1MpCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgPHN5cy9zeXNwYWdlLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdU
RiB7CisKK3N0YXRpYyBjb25zdCBzaXplX3QgYW1vdW50T2ZSQU1HdWVzcyA9IDEyOCAqIE1COwor
CitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBbW91bnRPZlJBTSgpCit7CisjaWYgT1MoREFSV0lOKQor
ICAgIGludCBtaWJbMl07CisgICAgaW50NjRfdCBhbW91bnRPZlJBTTsKKyAgICBzaXplX3QgbGVu
Z3RoOworCisgICAgbWliWzBdID0gQ1RMX0hXOworICAgIG1pYlsxXSA9IEhXX01FTVNJWkU7Cisg
ICAgbGVuZ3RoID0gc2l6ZW9mKGludDY0X3QpOworICAgIGludCBzeXNjdGxSZXN1bHQgPSBzeXNj
dGwobWliLCAyLCAmYW1vdW50T2ZSQU0sICZsZW5ndGgsIDAsIDApOworICAgIGlmIChzeXNjdGxS
ZXN1bHQgPT0gLTEpCisgICAgICAgIHJldHVybiBhbW91bnRPZlJBTUd1ZXNzOworICAgIHJldHVy
biBhbW91bnRPZlJBTTsKKyNlbGlmIE9TKFVOSVgpCisgICAgbG9uZyBwYWdlcyA9IHN5c2NvbmYo
X1NDX1BIWVNfUEFHRVMpOworICAgIGxvbmcgcGFnZVNpemUgPSBzeXNjb25mKF9TQ19QQUdFX1NJ
WkUpOworICAgIGlmIChwYWdlcyA9PSAtMSB8fCBwYWdlU2l6ZSA9PSAtMSkKKyAgICAgICAgcmV0
dXJuIGFtb3VudE9mUkFNR3Vlc3M7CisgICAgcmV0dXJuIHBhZ2VzICogcGFnZVNpemU7CisjZWxp
ZiBPUyhXSU5ET1dTKQorICAgIE1FTU9SWVNUQVRVU0VYIHN0YXR1czsKKyAgICBzdGF0dXMuZHdM
ZW5ndGggPSBzaXplb2Yoc3RhdHVzKTsKKyAgICBib29sIHJlc3VsdCA9IEdsb2JhbE1lbW9yeVN0
YXR1c0V4KCZzdGF0dXMpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gYW1vdW50
T2ZSQU1HdWVzczsKKyAgICByZXR1cm4gc3RhdHVzLnVsbFRvdGFsUGh5czsKKyNlbmRpZgorfQor
CitzaXplX3QgYW1vdW50T2ZSQU0oKQoreworICAgIHN0YXRpYyBzaXplX3QgYW1vdW50T2ZSQU0g
PSBjb21wdXRlQW1vdW50T2ZSQU0oKTsKKyAgICByZXR1cm4gYW1vdW50T2ZSQU07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQW1vdW50T2ZSQU1faAorI2RlZmluZSBBbW91bnRPZlJB
TV9oCisKK25hbWVzcGFjZSBXVEYgeworCitzaXplX3QgYW1vdW50T2ZSQU0oKTsKKworfQorCisj
ZW5kaWYgLy8gQW1vdW50T2ZSQU1faApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDExNzUyNCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw3IEBAIFNFVChXVEZfSEVBREVSUwogICAgIE5vdEZvdW5kLmgKICAgICBO
dWxsUHRyLmgKICAgICBOdW1iZXJPZkNvcmVzLmgKKyAgICBBbW91bnRPZlJBTS5oCiAgICAgT1NB
bGxvY2F0b3IuaAogICAgIE9TUmFuZG9tU291cmNlLmgKICAgICBPd25BcnJheVB0ci5oCkBAIC0x
NDgsNiArMTQ5LDcgQEAgU0VUKFdURl9TT1VSQ0VTCiAgICAgTWV0YUFsbG9jYXRvci5jcHAKICAg
ICBPU1JhbmRvbVNvdXJjZS5jcHAKICAgICBOdW1iZXJPZkNvcmVzLmNwcAorICAgIEFtb3VudE9m
UkFNLmNwcAogICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAKICAgICBQYWdlQmxvY2suY3Bw
CiAgICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCShy
ZXZpc2lvbiAxMTc1MjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIFR5cGVQdHIgcmVpbnRlcnByZXRfY2FzdF9wdHIo
Y29uc3Qgdm9pZCoKIG5hbWVzcGFjZSBXVEYgewogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IEtCID0g
MTAyNDsKK3N0YXRpYyBjb25zdCBzaXplX3QgTUIgPSAxMDI0ICogMTAyNDsKIAogaW5saW5lIGJv
b2wgaXNQb2ludGVyQWxpZ25lZCh2b2lkKiBwKQogewpAQCAtMzA0LDYgKzMwNSw3IEBAIGlubGlu
ZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWwKIH0KIAogdXNpbmcgV1RGOjpLQjsK
K3VzaW5nIFdURjo6TUI7CiB1c2luZyBXVEY6OmlzUG9pbnRlckFsaWduZWQ7CiB1c2luZyBXVEY6
OmlzOEJ5dGVBbGlnbmVkOwogdXNpbmcgV1RGOjpiaW5hcnlTZWFyY2g7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143144</attachid>
            <date>2012-05-21 17:19:53 -0700</date>
            <delta_ts>2012-05-21 17:51:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120521171952.patch</filename>
            <type>text/plain</type>
            <size>21009</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3ODQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDExLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDQtMzAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBCeXRlY29kZSBkdW1wcyBzaG91bGQgY29udGFpbiBkYXRhIGFib3V0IHRoZSBz
dGF0ZSBvZiBnZXRfYnlfaWQgY2FjaGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAkocmV2aXNpb24gMTE3ODQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlICJUcmFjaW5n
LmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8d3RmL0Ftb3VudE9mUkFNLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAKLQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTQ1
LDE0ICs0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgeyAKIAotI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlSGVhcFNpemUgPSAx
NiAqIDEwMjQgKiAxMDI0OwotI2VsaWYgUExBVEZPUk0oSU9TKQotc3RhdGljIGNvbnN0IHNpemVf
dCBsYXJnZUhlYXBTaXplID0gOCAqIDEwMjQgKiAxMDI0OwotI2Vsc2UKLXN0YXRpYyBjb25zdCBz
aXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDUxMiAqIDEwMjQ7Ci0jZW5kaWYKLXN0YXRpYyBjb25zdCBz
aXplX3Qgc21hbGxIZWFwU2l6ZSA9IDUxMiAqIDEwMjQ7CitzdGF0aWMgY29uc3Qgc2l6ZV90IGxh
cmdlSGVhcFNpemUgPSAzMiAqIE1COworc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbEhlYXBTaXpl
ID0gMSAqIE1COwogCiAjaWYgRU5BQkxFKEdDX0xPR0dJTkcpCiAjaWYgQ09NUElMRVIoQ0xBTkcp
CkBAIC0xNDgsMTQgKzE0MiwyMiBAQCBzdHJ1Y3QgR0NDb3VudGVyIHsKICNkZWZpbmUgR0NDT1VO
VEVSKG5hbWUsIHZhbHVlKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQogI2VuZGlmCiAKLXN0YXRpYyBz
aXplX3QgaGVhcFNpemVGb3JIaW50KEhlYXBTaXplIGhlYXBTaXplKQorc3RhdGljIGlubGluZSBz
aXplX3QgbWluSGVhcFNpemUoSGVhcFR5cGUgaGVhcFR5cGUsIHNpemVfdCByYW1TaXplKQogewot
ICAgIGlmIChoZWFwU2l6ZSA9PSBMYXJnZUhlYXApCi0gICAgICAgIHJldHVybiBsYXJnZUhlYXBT
aXplOwotICAgIEFTU0VSVChoZWFwU2l6ZSA9PSBTbWFsbEhlYXApOworICAgIGlmIChoZWFwVHlw
ZSA9PSBMYXJnZUhlYXApCisgICAgICAgIHJldHVybiBtaW4obGFyZ2VIZWFwU2l6ZSwgcmFtU2l6
ZSAvIDQpOwogICAgIHJldHVybiBzbWFsbEhlYXBTaXplOwogfQogCitzdGF0aWMgaW5saW5lIHNp
emVfdCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShzaXplX3QgaGVhcFNpemUsIHNpemVfdCByYW1TaXpl
KQoreworICAgIGlmIChoZWFwU2l6ZSA8IHJhbVNpemUgLyA0KQorICAgICAgICByZXR1cm4gMiAq
IGhlYXBTaXplOworICAgIGlmIChoZWFwU2l6ZSA8IHJhbVNpemUgLyAyKQorICAgICAgICByZXR1
cm4gMS41ICogaGVhcFNpemU7CisgICAgcmV0dXJuIDEuMjUgKiBoZWFwU2l6ZTsKK30KKwogc3Rh
dGljIGlubGluZSBib29sIGlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0YXRlKCkKIHsKICAg
ICBpZiAoIUpTTG9jazo6bG9ja0NvdW50KCkpCkBAIC0yMzAsOSArMjMyLDEwIEBAIGlubGluZSBQ
YXNzT3duUHRyPFR5cGVDb3VudFNldD4gUmVjb3JkVHkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCiAKLUhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWFwU2l6ZSBoZWFw
U2l6ZSkKLSAgICA6IG1faGVhcFNpemUoaGVhcFNpemUpCi0gICAgLCBtX21pbkJ5dGVzUGVyQ3lj
bGUoaGVhcFNpemVGb3JIaW50KGhlYXBTaXplKSkKK0hlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBIZWFwVHlwZSBoZWFwVHlwZSkKKyAgICA6IG1faGVhcFR5cGUoaGVhcFR5cGUp
CisgICAgLCBtX3JhbVNpemUoV1RGOjphbW91bnRPZlJBTSgpKQorICAgICwgbV9taW5CeXRlc1Bl
ckN5Y2xlKG1pbkhlYXBTaXplKG1faGVhcFR5cGUsIG1fcmFtU2l6ZSkpCiAgICAgLCBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0KDApCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkTGltaXQobV9taW5CeXRl
c1BlckN5Y2xlKQogICAgICwgbV9ieXRlc0FsbG9jYXRlZCgwKQpAQCAtNzIyLDE1ICs3MjUsMTUg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAgICBtX2J5
dGVzQWJhbmRvbmVkID0gMDsKICAgICB9CiAKLSAgICAvLyBUbyBhdm9pZCBwYXRob2xvZ2ljYWwg
R0MgY2h1cm4gaW4gbGFyZ2UgaGVhcHMsIHdlIHNldCB0aGUgbmV3IGFsbG9jYXRpb24gCi0gICAg
Ly8gbGltaXQgdG8gYmUgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcC4gVGhpcyBoZXVyaXN0
aWMgCi0gICAgLy8gaXMgYSBiaXQgYXJiaXRyYXJ5LiBVc2luZyB0aGUgY3VycmVudCBzaXplIG9m
IHRoZSBoZWFwIGFmdGVyIHRoaXMgCi0gICAgLy8gY29sbGVjdGlvbiBnaXZlcyB1cyBhIDJYIG11
bHRpcGxpZXIsIHdoaWNoIGlzIGEgMToxIChoZWFwIHNpemUgOgotICAgIC8vIG5ldyBieXRlcyBh
bGxvY2F0ZWQpIHByb3BvcnRpb24sIGFuZCBzZWVtcyB0byB3b3JrIHdlbGwgaW4gYmVuY2htYXJr
cy4KLSAgICBzaXplX3QgbmV3U2l6ZSA9IHNpemUoKTsKKyAgICBzaXplX3QgY3VycmVudEhlYXBT
aXplID0gc2l6ZSgpOwogICAgIGlmIChmdWxsR0MpIHsKLSAgICAgICAgbV9zaXplQWZ0ZXJMYXN0
Q29sbGVjdCA9IG5ld1NpemU7Ci0gICAgICAgIG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdCA9IG1heChu
ZXdTaXplLCBtX21pbkJ5dGVzUGVyQ3ljbGUpOworICAgICAgICBtX3NpemVBZnRlckxhc3RDb2xs
ZWN0ID0gY3VycmVudEhlYXBTaXplOworCisgICAgICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNh
bCBHQyBjaHVybiBpbiB2ZXJ5IHNtYWxsIGFuZCB2ZXJ5IGxhcmdlIGhlYXBzLCB3ZSBzZXQKKyAg
ICAgICAgLy8gdGhlIG5ldyBhbGxvY2F0aW9uIGxpbWl0IGJhc2VkIG9uIHRoZSBjdXJyZW50IHNp
emUgb2YgdGhlIGhlYXAsIHdpdGggYQorICAgICAgICAvLyBmaXhlZCBtaW5pbXVtLgorICAgICAg
ICBzaXplX3QgbWF4SGVhcFNpemUgPSBtYXgobWluSGVhcFNpemUobV9oZWFwVHlwZSwgbV9yYW1T
aXplKSwgcHJvcG9ydGlvbmFsSGVhcFNpemUoY3VycmVudEhlYXBTaXplLCBtX3JhbVNpemUpKTsK
KyAgICAgICAgbV9ieXRlc0FsbG9jYXRlZExpbWl0ID0gbWF4SGVhcFNpemUgLSBjdXJyZW50SGVh
cFNpemU7CiAgICAgfQogICAgIG1fYnl0ZXNBbGxvY2F0ZWQgPSAwOwogICAgIGRvdWJsZSBsYXN0
R0NFbmRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMTE3ODQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw4ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgZW51bSBPcGVyYXRpb25JblByb2dyZXNzIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24s
IENvbGxlY3Rpb24gfTsKIAotICAgIC8vIEhlYXAgc2l6ZSBoaW50LgotICAgIGVudW0gSGVhcFNp
emUgeyBTbWFsbEhlYXAsIExhcmdlSGVhcCB9OworICAgIGVudW0gSGVhcFR5cGUgeyBTbWFsbEhl
YXAsIExhcmdlSGVhcCB9OwogCiAgICAgY2xhc3MgSGVhcCB7CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEhlYXApOwpAQCAtOTAsNyArODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOwogICAg
ICAgICBzdGF0aWMgdWludDhfdCogYWRkcmVzc09mQ2FyZEZvcihKU0NlbGwqKTsKIAotICAgICAg
ICBIZWFwKEpTR2xvYmFsRGF0YSosIEhlYXBTaXplKTsKKyAgICAgICAgSGVhcChKU0dsb2JhbERh
dGEqLCBIZWFwVHlwZSk7CiAgICAgICAgIH5IZWFwKCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKIApAQCAtMTk3LDcgKzE5Niw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpOwogICAg
ICAgICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IoKTsKIAotICAgICAgICBjb25zdCBI
ZWFwU2l6ZSBtX2hlYXBTaXplOworICAgICAgICBjb25zdCBIZWFwVHlwZSBtX2hlYXBUeXBlOwor
ICAgICAgICBjb25zdCBzaXplX3QgbV9yYW1TaXplOwogICAgICAgICBjb25zdCBzaXplX3QgbV9t
aW5CeXRlc1BlckN5Y2xlOwogICAgICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCShyZXZpc2lvbiAxMTc4NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAgc3RhdGlj
IGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbAogfQogI2VuZGlmCiAKLUpTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRT
dGFja1R5cGUgdGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKLSAgICA6IGhlYXAo
dGhpcywgaGVhcFNpemUpCitKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
ZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZFN0YWNrVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCisgICAgOiBoZWFwKHRoaXMsIGhlYXBUeXBlKQogICAgICwgZ2xvYmFsRGF0
YVR5cGUoZ2xvYmFsRGF0YVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0b3BDYWxs
RnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQpAQCAtMjg2LDE5ICsyODYsMTkgQEAgSlNHbG9i
YWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPEpTR2xvYmFs
RGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlIHR5
cGUsIEhlYXBTaXplIGhlYXBTaXplKQorUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFs
RGF0YTo6Y3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShBUElDb250
ZXh0R3JvdXAsIHR5cGUsIGhlYXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0ds
b2JhbERhdGEoQVBJQ29udGV4dEdyb3VwLCB0eXBlLCBoZWFwVHlwZSkpOwogfQogCi1QYXNzUmVm
UHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlIHR5
cGUsIEhlYXBTaXplIGhlYXBTaXplKQorUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFs
RGF0YTo6Y3JlYXRlKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShEZWZhdWx0LCB0eXBlLCBoZWFw
U2l6ZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKERlZmF1bHQsIHR5
cGUsIGhlYXBUeXBlKSk7CiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERh
dGE6OmNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUp
CitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQoVGhy
ZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVybiBjcmVh
dGUodHlwZSwgaGVhcFNpemUpOworICAgIHJldHVybiBjcmVhdGUodHlwZSwgaGVhcFR5cGUpOwog
fQogCiBib29sIEpTR2xvYmFsRGF0YTo6c2hhcmVkSW5zdGFuY2VFeGlzdHMoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEx
Nzg0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjYsOSArMTY2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUo
VGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKFRo
cmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUs
IEhlYXBTaXplID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlw
ZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVm
UHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSwgSGVhcFR5cGUg
PSBTbWFsbEhlYXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNy
ZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlID0gU21hbGxIZWFwKTsK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTR2xvYmFsRGF0YSgpOwogCiAgICAgICAgIHZv
aWQgbWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKSB7IGhlYXAubWFjaGluZVRocmVhZHMo
KS5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOyB9CkBAIC0zOTgsNyArMzk4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCi0gICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CisgICAgICAgIEpTR2xvYmFsRGF0
YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlwZSk7CiAgICAgICAgIHN0
YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZv
aWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiAoRU5BQkxF
KENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpCkluZGV4OiBTb3VyY2UvV1RG
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24g
MTE3ODQ4KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNyBAQAorMjAxMi0wNS0yMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgor
CisgICAgICAgIEdDIGFsbG9jYXRpb24gdHJpZ2dlciBzaG91bGQgYmUgdHVuZWQgdG8gc3lzdGVt
IFJBTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcw
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBhIGhlbHBlciBmdW5jdGlvbiBmb3IgbWVhc3VyaW5nIHN5c3RlbSBSQU0uCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5neXBpOgorICAgICAgICAqIFdU
Ri5wcm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAqIFdURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9BbW91bnRPZlJBTS5jcHA6
IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6Y29tcHV0ZUFtb3VudE9mUkFN
KToKKyAgICAgICAgKFdURjo6YW1vdW50T2ZSQU0pOgorICAgICAgICAqIHd0Zi9BbW91bnRPZlJB
TS5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAgICAgICAgKFdURik6CisKIDIwMTIt
MDUtMjEgIEVtaWwgQSBFa2x1bmQgPGVhZUBjaHJvbWl1bS5vcmc+IGFuZCBMZXZpIFdlaW50cmF1
YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBFbmFibGUgU1VCUElYRUxfTEFZT1VU
IGZlYXR1cmUgZmxhZyBvbiBDaHJvbWl1bQpJbmRleDogU291cmNlL1dURi9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTE3ODQ4KQorKysgU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC04NCw2ICs4NCw4IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9OdWxsUHRyLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL051bWJlck9mQ29yZXMuY3BwIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9OdW1iZXJPZkNvcmVzLmggXAorICAgIFNvdXJjZS9XVEYvd3Rm
L0Ftb3VudE9mUkFNLmNwcCBcCisgICAgU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uaCBcCiAg
ICAgU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaCBcCiAgICAgU291cmNlL1dURi93dGYvT1NS
YW5kb21Tb3VyY2UuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNvdXJjZS5oIFwK
SW5kZXg6IFNvdXJjZS9XVEYvV1RGLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
Z3lwaQkocmV2aXNpb24gMTE3ODQ4KQorKysgU291cmNlL1dURi9XVEYuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMTUzLDYgKzE1Myw4IEBACiAgICAgICAgICAgICAnd3RmL051bGxQdHIuY3BwJywK
ICAgICAgICAgICAgICd3dGYvTnVtYmVyT2ZDb3Jlcy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9O
dW1iZXJPZkNvcmVzLmgnLAorICAgICAgICAgICAgJ3d0Zi9BbW91bnRPZlJBTS5jcHAnLAorICAg
ICAgICAgICAgJ3d0Zi9BbW91bnRPZlJBTS5oJywKICAgICAgICAgICAgICd3dGYvT1NBbGxvY2F0
b3JQb3NpeC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9PU0FsbG9jYXRvcldpbi5jcHAnLAogICAg
ICAgICAgICAgJ3d0Zi9PU1JhbmRvbVNvdXJjZS5jcHAnLApJbmRleDogU291cmNlL1dURi9XVEYu
cHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnBybwkocmV2aXNpb24gMTE3ODQ4KQor
KysgU291cmNlL1dURi9XVEYucHJvCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIEhF
QURFUlMgKz0gXAogICAgIE5vdEZvdW5kLmggXAogICAgIE51bGxQdHIuaCBcCiAgICAgTnVtYmVy
T2ZDb3Jlcy5oIFwKKyAgICBBbW91bnRPZlJBTS5oIFwKICAgICBPU0FsbG9jYXRvci5oIFwKICAg
ICBPU1JhbmRvbVNvdXJjZS5oIFwKICAgICBPd25BcnJheVB0ci5oIFwKQEAgLTE5MSw2ICsxOTIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBNZXRhQWxsb2NhdG9yLmNwcCBcCiAgICAgTnVsbFB0ci5j
cHAgXAogICAgIE51bWJlck9mQ29yZXMuY3BwIFwKKyAgICBBbW91bnRPZlJBTS5jcHAgXAogICAg
IE9TUmFuZG9tU291cmNlLmNwcCBcCiAgICAgcXQvTWFpblRocmVhZFF0LmNwcCBcCiAgICAgcXQv
U3RyaW5nUXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCShyZXZpc2lvbiAx
MTc4NDgpCisrKyBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtOTA1LDYgKzkwNSwxNCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHd0ZlxBbW91bnRPZlJBTS5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZp
bGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXEFtb3VudE9mUkFNLmgiCisJCQk+CisJCTwvRmls
ZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXE51bWJlck9mQ29yZXMuY3BwIgog
CQkJPgogCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExNzg0OCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw4IEBACiAJb2JqZWN0cyA9IHsK
IAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQzRjYxMUYxNTY1RjBGOTAw
REI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5j
cHAgKi87IH07CisJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRjYxMUUxNTY1
RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYwMzIxQkMxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFy
cmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjAz
MjFCQjE1NkFBOEQxMDA2RUJBRjYgLyogQml0QXJyYXkuaCAqLzsgfTsKIAkJQTg3NkRCRDgxNTE4
MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAq
LzsgfTsKIAkJQThBNDczN0YxNTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTQxNTFBODI1QTAw
NDEyM0ZGIC8qIEFsaWdubWVudC5oICovOyB9OwpAQCAtMjQxLDYgKzI0Myw4IEBACiAvKiBFbmQg
UEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCisJCTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbW91bnRPZlJBTS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91
bnRPZlJBTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbW91bnRPZlJBTS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjAzMjFCQjE1NkFBOEQxMDA2RUJBRjYg
LyogQml0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0QXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2
IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4
Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNiw2ICs1NDAsOCBAQAogCQlBODc2REJENjE1MTgx
NkU1MDBEQURCOTUgLyogd3RmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50T2ZSQU0uY3BwICov
LAorCQkJCTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oICovLAogCQkJ
CUE4QTQ3MjU0MTUxQTgyNUEwMDQxMjNGRiAvKiBBbGlnbm1lbnQuaCAqLywKIAkJCQlBOEE0NzI1
NTE1MUE4MjVBMDA0MTIzRkYgLyogQWx3YXlzSW5saW5lLmggKi8sCiAJCQkJQThBNDcyNTYxNTFB
ODI1QTAwNDEyM0ZGIC8qIEFycmF5QnVmZmVyLmNwcCAqLywKQEAgLTEwMjcsNiArMTAzMyw3IEBA
CiAJCQkJQThBNDc0ODAxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDc0ODcxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0xMTcyLDYgKzExNzksNyBAQAogCQkJCUE4QTQ3NDc3MTUxQTgyNUIw
MDQxMjNGRiAvKiBVUkxFc2NhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0N0IxNTFB
ODI1QjAwNDEyM0ZGIC8qIFVSTFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTE0M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQW1vdW50T2ZSQU0uaCIK
KworI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2lmIE9TKERBUldJTikKKyNpbmNsdWRlIDxz
eXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3Rs
Lmg+CisjZWxpZiBPUyhVTklYKQorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VsaWYgT1MoV0lORE9X
UykKKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
aW5jbHVkZSA8c3lzL3N5c3BhZ2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworc3Rh
dGljIGNvbnN0IHNpemVfdCBhbW91bnRPZlJBTUd1ZXNzID0gMTI4ICogTUI7CisKK3N0YXRpYyBz
aXplX3QgY29tcHV0ZUFtb3VudE9mUkFNKCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgaW50IG1p
YlsyXTsKKyAgICBpbnQ2NF90IGFtb3VudE9mUkFNOworICAgIHNpemVfdCBsZW5ndGg7CisKKyAg
ICBtaWJbMF0gPSBDVExfSFc7CisgICAgbWliWzFdID0gSFdfTUVNU0laRTsKKyAgICBsZW5ndGgg
PSBzaXplb2YoaW50NjRfdCk7CisgICAgaW50IHN5c2N0bFJlc3VsdCA9IHN5c2N0bChtaWIsIDIs
ICZhbW91bnRPZlJBTSwgJmxlbmd0aCwgMCwgMCk7CisgICAgaWYgKHN5c2N0bFJlc3VsdCA9PSAt
MSkKKyAgICAgICAgcmV0dXJuIGFtb3VudE9mUkFNR3Vlc3M7CisgICAgcmV0dXJuIGFtb3VudE9m
UkFNOworI2VsaWYgT1MoVU5JWCkKKyAgICBsb25nIHBhZ2VzID0gc3lzY29uZihfU0NfUEhZU19Q
QUdFUyk7CisgICAgbG9uZyBwYWdlU2l6ZSA9IHN5c2NvbmYoX1NDX1BBR0VfU0laRSk7CisgICAg
aWYgKHBhZ2VzID09IC0xIHx8IHBhZ2VTaXplID09IC0xKQorICAgICAgICByZXR1cm4gYW1vdW50
T2ZSQU1HdWVzczsKKyAgICByZXR1cm4gcGFnZXMgKiBwYWdlU2l6ZTsKKyNlbGlmIE9TKFdJTkRP
V1MpCisgICAgTUVNT1JZU1RBVFVTRVggc3RhdHVzOworICAgIHN0YXR1cy5kd0xlbmd0aCA9IHNp
emVvZihzdGF0dXMpOworICAgIGJvb2wgcmVzdWx0ID0gR2xvYmFsTWVtb3J5U3RhdHVzRXgoJnN0
YXR1cyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBhbW91bnRPZlJBTUd1ZXNz
OworICAgIHJldHVybiBzdGF0dXMudWxsVG90YWxQaHlzOworI2VuZGlmCit9CisKK3NpemVfdCBh
bW91bnRPZlJBTSgpCit7CisgICAgc3RhdGljIHNpemVfdCBhbW91bnRPZlJBTSA9IGNvbXB1dGVB
bW91bnRPZlJBTSgpOworICAgIHJldHVybiBhbW91bnRPZlJBTTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RG
L3d0Zi9BbW91bnRPZlJBTS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBBbW91bnRPZlJBTV9oCisjZGVmaW5lIEFtb3VudE9mUkFNX2gKKworbmFt
ZXNwYWNlIFdURiB7CisKK3NpemVfdCBhbW91bnRPZlJBTSgpOworCit9CisKKyNlbmRpZiAvLyBB
bW91bnRPZlJBTV9oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE3ODQ4KQor
KysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYg
KzUyLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaAog
ICAgIE51bWJlck9mQ29yZXMuaAorICAgIEFtb3VudE9mUkFNLmgKICAgICBPU0FsbG9jYXRvci5o
CiAgICAgT1NSYW5kb21Tb3VyY2UuaAogICAgIE93bkFycmF5UHRyLmgKQEAgLTE0OSw2ICsxNTAs
NyBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE9TUmFuZG9t
U291cmNlLmNwcAogICAgIE51bWJlck9mQ29yZXMuY3BwCisgICAgQW1vdW50T2ZSQU0uY3BwCiAg
ICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcAogICAgIFBhZ2VCbG9jay5jcHAKICAgICBQYXJh
bGxlbEpvYnNHZW5lcmljLmNwcApJbmRleDogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDEx
Nzg0OCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgsNiArMTA4LDcgQEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lk
KgogbmFtZXNwYWNlIFdURiB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0Oworc3Rh
dGljIGNvbnN0IHNpemVfdCBNQiA9IDEwMjQgKiAxMDI0OwogCiBpbmxpbmUgYm9vbCBpc1BvaW50
ZXJBbGlnbmVkKHZvaWQqIHApCiB7CkBAIC0zMDQsNiArMzA1LDcgQEAgaW5saW5lIHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bAogfQogCiB1c2luZyBXVEY6OktCOwordXNpbmcgV1RG
OjpNQjsKIHVzaW5nIFdURjo6aXNQb2ludGVyQWxpZ25lZDsKIHVzaW5nIFdURjo6aXM4Qnl0ZUFs
aWduZWQ7CiB1c2luZyBXVEY6OmJpbmFyeVNlYXJjaDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143153</attachid>
            <date>2012-05-21 17:51:38 -0700</date>
            <delta_ts>2012-05-21 18:09:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120521175139.patch</filename>
            <type>text/plain</type>
            <size>22542</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3ODQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDExLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDQtMzAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBCeXRlY29kZSBkdW1wcyBzaG91bGQgY29udGFpbiBkYXRhIGFib3V0IHRoZSBz
dGF0ZSBvZiBnZXRfYnlfaWQgY2FjaGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTE3ODQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwxMyArMTAyLDExIEBAIEVY
UE9SVFMKICAgICA/Y29udmVydFVURjE2VG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJz
aW9uUmVzdWx0QDEyQFBBUEJfV1BCX1dQQVBBRFBBRF9OQFoKICAgICA/Y29udmVydFVURjhUb1VU
RjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJEUEJEUEFQQV9X
UEFfV19OQFoKICAgICA/Y3JlYXRlQEpTRnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0
ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJASEFCVlVTdHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2lj
QDJAM0BaCi0gICAgP2NyZWF0ZUBKU0dsb2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBW
SlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJA
QFoKICAgICA/Y3JlYXRlQE9wYXF1ZUpTU3RyaW5nQEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVl
SlNTdHJpbmdAQEBXVEZAQEFCVlVTdHJpbmdASlNDQEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpT
Q0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBBQlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0Ay
QEBaCiAgICAgP2NyZWF0ZUVtcHR5U3RyaW5nQFNtYWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0ds
b2JhbERhdGFAMkBAWgogICAgID9jcmVhdGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZF
eGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRp
b25FeGNlcHRpb25ASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKLSAg
ICA/Y3JlYXRlTGVha2VkQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0ds
b2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0SGVhcFNpemVAMkBAWgog
ICAgID9jcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQ
QVZFeGVjU3RhdGVAMUBAWgogICAgID9jcmVhdGVSYW5nZUVycm9yQEpTQ0BAWUFQQVZKU09iamVj
dEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgogICAgID9jcmVhdGVSZWZlcmVuY2VF
cnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMTc4NDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsOSArMzUsOSBAQAogI2luY2x1ZGUgIlRyYWNpbmcuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5s
aW5lcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvQW1vdW50T2ZSQU0u
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNDUsMTQgKzQ1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIG5hbWVzcGFjZSB7IAogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLXN0YXRp
YyBjb25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBQ
TEFURk9STShJT1MpCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlSGVhcFNpemUgPSA4ICogMTAy
NCAqIDEwMjQ7Ci0jZWxzZQotc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUhlYXBTaXplID0gNTEy
ICogMTAyNDsKLSNlbmRpZgotc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbEhlYXBTaXplID0gNTEy
ICogMTAyNDsKK3N0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDMyICogTUI7Citz
dGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsSGVhcFNpemUgPSAxICogTUI7CiAKICNpZiBFTkFCTEUo
R0NfTE9HR0lORykKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTE0OCwxNCArMTQyLDIyIEBAIHN0
cnVjdCBHQ0NvdW50ZXIgewogI2RlZmluZSBHQ0NPVU5URVIobmFtZSwgdmFsdWUpIGRvIHsgfSB3
aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAotc3RhdGljIHNpemVfdCBoZWFwU2l6ZUZvckhpbnQoSGVh
cFNpemUgaGVhcFNpemUpCitzdGF0aWMgaW5saW5lIHNpemVfdCBtaW5IZWFwU2l6ZShIZWFwVHlw
ZSBoZWFwVHlwZSwgc2l6ZV90IHJhbVNpemUpCiB7Ci0gICAgaWYgKGhlYXBTaXplID09IExhcmdl
SGVhcCkKLSAgICAgICAgcmV0dXJuIGxhcmdlSGVhcFNpemU7Ci0gICAgQVNTRVJUKGhlYXBTaXpl
ID09IFNtYWxsSGVhcCk7CisgICAgaWYgKGhlYXBUeXBlID09IExhcmdlSGVhcCkKKyAgICAgICAg
cmV0dXJuIG1pbihsYXJnZUhlYXBTaXplLCByYW1TaXplIC8gNCk7CiAgICAgcmV0dXJuIHNtYWxs
SGVhcFNpemU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHByb3BvcnRpb25hbEhlYXBTaXpl
KHNpemVfdCBoZWFwU2l6ZSwgc2l6ZV90IHJhbVNpemUpCit7CisgICAgaWYgKGhlYXBTaXplIDwg
cmFtU2l6ZSAvIDQpCisgICAgICAgIHJldHVybiAyICogaGVhcFNpemU7CisgICAgaWYgKGhlYXBT
aXplIDwgcmFtU2l6ZSAvIDIpCisgICAgICAgIHJldHVybiAxLjUgKiBoZWFwU2l6ZTsKKyAgICBy
ZXR1cm4gMS4yNSAqIGhlYXBTaXplOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNo
YXJlZEluc3RhbmNlVGhyZWFkU3RhdGUoKQogewogICAgIGlmICghSlNMb2NrOjpsb2NrQ291bnQo
KSkKQEAgLTIzMCw5ICsyMzIsMTAgQEAgaW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBS
ZWNvcmRUeQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSGVhcDo6SGVhcChKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhlYXBTaXplKQotICAgIDogbV9oZWFwU2l6ZSho
ZWFwU2l6ZSkKLSAgICAsIG1fbWluQnl0ZXNQZXJDeWNsZShoZWFwU2l6ZUZvckhpbnQoaGVhcFNp
emUpKQorSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBUeXBlIGhlYXBU
eXBlKQorICAgIDogbV9oZWFwVHlwZShoZWFwVHlwZSkKKyAgICAsIG1fcmFtU2l6ZShXVEY6OmFt
b3VudE9mUkFNKCkpCisgICAgLCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFw
VHlwZSwgbV9yYW1TaXplKSkKICAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKICAgICAs
IG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdChtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX2J5dGVz
QWxsb2NhdGVkKDApCkBAIC03MjIsMTUgKzcyNSwxNSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dl
ZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIG1fYnl0ZXNBYmFuZG9uZWQgPSAwOwogICAgIH0K
IAotICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNhbCBHQyBjaHVybiBpbiBsYXJnZSBoZWFwcywg
d2Ugc2V0IHRoZSBuZXcgYWxsb2NhdGlvbiAKLSAgICAvLyBsaW1pdCB0byBiZSB0aGUgY3VycmVu
dCBzaXplIG9mIHRoZSBoZWFwLiBUaGlzIGhldXJpc3RpYyAKLSAgICAvLyBpcyBhIGJpdCBhcmJp
dHJhcnkuIFVzaW5nIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGhlYXAgYWZ0ZXIgdGhpcyAKLSAg
ICAvLyBjb2xsZWN0aW9uIGdpdmVzIHVzIGEgMlggbXVsdGlwbGllciwgd2hpY2ggaXMgYSAxOjEg
KGhlYXAgc2l6ZSA6Ci0gICAgLy8gbmV3IGJ5dGVzIGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5k
IHNlZW1zIHRvIHdvcmsgd2VsbCBpbiBiZW5jaG1hcmtzLgotICAgIHNpemVfdCBuZXdTaXplID0g
c2l6ZSgpOworICAgIHNpemVfdCBjdXJyZW50SGVhcFNpemUgPSBzaXplKCk7CiAgICAgaWYgKGZ1
bGxHQykgewotICAgICAgICBtX3NpemVBZnRlckxhc3RDb2xsZWN0ID0gbmV3U2l6ZTsKLSAgICAg
ICAgbV9ieXRlc0FsbG9jYXRlZExpbWl0ID0gbWF4KG5ld1NpemUsIG1fbWluQnl0ZXNQZXJDeWNs
ZSk7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisK
KyAgICAgICAgLy8gVG8gYXZvaWQgcGF0aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwg
YW5kIHZlcnkgbGFyZ2UgaGVhcHMsIHdlIHNldAorICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRp
b24gbGltaXQgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCisg
ICAgICAgIC8vIGZpeGVkIG1pbmltdW0uCisgICAgICAgIHNpemVfdCBtYXhIZWFwU2l6ZSA9IG1h
eChtaW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6
ZShjdXJyZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkpOworICAgICAgICBtX2J5dGVzQWxsb2NhdGVk
TGltaXQgPSBtYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKICAgICB9CiAgICAgbV9ieXRl
c0FsbG9jYXRlZCA9IDA7CiAgICAgZG91YmxlIGxhc3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRU
aW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMTc4NDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDggKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBlbnVtIE9wZXJhdGlvbkluUHJv
Z3Jlc3MgeyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgQ29sbGVjdGlvbiB9OwogCi0gICAgLy8g
SGVhcCBzaXplIGhpbnQuCi0gICAgZW51bSBIZWFwU2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFw
IH07CisgICAgZW51bSBIZWFwVHlwZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CiAKICAgICBj
bGFzcyBIZWFwIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGVhcCk7CkBAIC05MCw3
ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJp
ZXIoY29uc3QgSlNDZWxsKiwgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB1aW50OF90KiBhZGRy
ZXNzT2ZDYXJkRm9yKEpTQ2VsbCopOwogCi0gICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVh
cFNpemUpOworICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSosIEhlYXBUeXBlKTsKICAgICAgICAg
fkhlYXAoKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsYXN0Q2hhbmNlVG9GaW5h
bGl6ZSgpOwogCkBAIC0xOTcsNyArMTk2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCk7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9j
a0FsbG9jYXRvcigpOwogCi0gICAgICAgIGNvbnN0IEhlYXBTaXplIG1faGVhcFNpemU7CisgICAg
ICAgIGNvbnN0IEhlYXBUeXBlIG1faGVhcFR5cGU7CisgICAgICAgIGNvbnN0IHNpemVfdCBtX3Jh
bVNpemU7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAg
IHNpemVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDExNzg0OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNyw4ICsxMTcsOCBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhl
Y3V0YWJsZUFsCiB9CiAjZW5kaWYKIAotSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFs
RGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUs
IEhlYXBTaXplIGhlYXBTaXplKQotICAgIDogaGVhcCh0aGlzLCBoZWFwU2l6ZSkKK0pTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRT
dGFja1R5cGUgdGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKKyAgICA6IGhlYXAo
dGhpcywgaGVhcFR5cGUpCiAgICAgLCBnbG9iYWxEYXRhVHlwZShnbG9iYWxEYXRhVHlwZSkKICAg
ICAsIGNsaWVudERhdGEoMCkKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVy
KCkpCkBAIC0yODYsMTkgKzI4NiwxOSBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQog
I2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0
ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAo
VGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKEFQSUNvbnRleHRHcm91cCwgdHlwZSwgaGVhcFNpemUp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShBUElDb250ZXh0R3JvdXAs
IHR5cGUsIGhlYXBUeXBlKSk7CiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2Jh
bERhdGE6OmNyZWF0ZShUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tU
eXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SlNHbG9iYWxEYXRhKERlZmF1bHQsIHR5cGUsIGhlYXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0dsb2JhbERhdGEoRGVmYXVsdCwgdHlwZSwgaGVhcFR5cGUpKTsKIH0KIAotUGFz
c1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFsRGF0YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0
YWNrVHlwZSB0eXBlLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRh
PiBKU0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFwU2l6ZSk7CisgICAg
cmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFwVHlwZSk7CiB9CiAKIGJvb2wgSlNHbG9iYWxEYXRhOjpz
aGFyZWRJbnN0YW5jZUV4aXN0cygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTE3ODQ4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw5ICsx
NjYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFu
Y2VFeGlzdHMoKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsRGF0
YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXpl
ID0gU21hbGxIZWFwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9
IFNtYWxsSGVhcCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3Jl
YXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+
IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlID0gU21hbGxIZWFwKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVM
ZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0
YWNrVHlwZSwgSGVhcFR5cGUgPSBTbWFsbEhlYXApOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB+SlNHbG9iYWxEYXRhKCk7CiAKICAgICAgICAgdm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxl
VGhyZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFkcygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVU
aHJlYWRzKCk7IH0KQEAgLTM5OCw3ICszOTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAg
ICAKLSAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUs
IEhlYXBTaXplKTsKKyAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRT
dGFja1R5cGUsIEhlYXBUeXBlKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJl
ZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwog
I2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIChFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKSkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTc4NDgpCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA1LTIxICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgR0MgYWxsb2NhdGlvbiB0
cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBt
ZWFzdXJpbmcgc3lzdGVtIFJBTS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNw
cm9qL1dURi52Y3Byb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0Ftb3VudE9mUkFNLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgor
ICAgICAgICAoV1RGOjpjb21wdXRlQW1vdW50T2ZSQU0pOgorICAgICAgICAoV1RGOjphbW91bnRP
ZlJBTSk6CisgICAgICAgICogd3RmL0Ftb3VudE9mUkFNLmg6IEFkZGVkLgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1N0ZExpYkV4
dHJhcy5oOgorICAgICAgICAoV1RGKToKKwogMjAxMi0wNS0yMSAgRW1pbCBBIEVrbHVuZCA8ZWFl
QGNocm9taXVtLm9yZz4gYW5kIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEVuYWJsZSBTVUJQSVhFTF9MQVlPVVQgZmVhdHVyZSBmbGFnIG9uIENocm9taXVt
CkluZGV4OiBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTc4NDgpCisrKyBTb3VyY2Uv
V1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDggQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL051bGxQdHIuaCBcCiAgICAgU291
cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL051bWJl
ck9mQ29yZXMuaCBcCisgICAgU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uY3BwIFwKKyAgICBT
b3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9PU0FsbG9j
YXRvci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmggXApJbmRleDogU291cmNlL1dURi9XVEYuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5neXBpCShyZXZpc2lvbiAxMTc4NDgpCisr
KyBTb3VyY2UvV1RGL1dURi5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDggQEAK
ICAgICAgICAgICAgICd3dGYvTnVsbFB0ci5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9OdW1iZXJP
ZkNvcmVzLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bWJlck9mQ29yZXMuaCcsCisgICAgICAg
ICAgICAnd3RmL0Ftb3VudE9mUkFNLmNwcCcsCisgICAgICAgICAgICAnd3RmL0Ftb3VudE9mUkFN
LmgnLAogICAgICAgICAgICAgJ3d0Zi9PU0FsbG9jYXRvclBvc2l4LmNwcCcsCiAgICAgICAgICAg
ICAnd3RmL09TQWxsb2NhdG9yV2luLmNwcCcsCiAgICAgICAgICAgICAnd3RmL09TUmFuZG9tU291
cmNlLmNwcCcsCkluZGV4OiBTb3VyY2UvV1RGL1dURi5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9XVEYucHJvCShyZXZpc2lvbiAxMTc4NDgpCisrKyBTb3VyY2UvV1RGL1dURi5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgTm90Rm91bmQu
aCBcCiAgICAgTnVsbFB0ci5oIFwKICAgICBOdW1iZXJPZkNvcmVzLmggXAorICAgIEFtb3VudE9m
UkFNLmggXAogICAgIE9TQWxsb2NhdG9yLmggXAogICAgIE9TUmFuZG9tU291cmNlLmggXAogICAg
IE93bkFycmF5UHRyLmggXApAQCAtMTkxLDYgKzE5Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIE1l
dGFBbGxvY2F0b3IuY3BwIFwKICAgICBOdWxsUHRyLmNwcCBcCiAgICAgTnVtYmVyT2ZDb3Jlcy5j
cHAgXAorICAgIEFtb3VudE9mUkFNLmNwcCBcCiAgICAgT1NSYW5kb21Tb3VyY2UuY3BwIFwKICAg
ICBxdC9NYWluVGhyZWFkUXQuY3BwIFwKICAgICBxdC9TdHJpbmdRdC5jcHAgXApJbmRleDogU291
cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9X
VEYudmNwcm9qL1dURi52Y3Byb2oJKHJldmlzaW9uIDExNzg0OCkKKysrIFNvdXJjZS9XVEYvV1RG
LnZjcHJvai9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MDUsNiArOTA1LDE0IEBACiAJ
CQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXEFtb3VudE9m
UkFNLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3
dGZcQW1vdW50T2ZSQU0uaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQ
YXRoPSIuLlx3dGZcTnVtYmVyT2ZDb3Jlcy5jcHAiCiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTE3ODQ4KQor
KysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNyw2ICs3LDggQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLworCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50T2ZSQU0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRjYxMUQx
NTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLzsgfTsKKwkJMTQzRjYxMjAxNTY1
RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50T2ZS
QU0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
RjAzMjFCQzE1NkFBOEQxMDA2RUJBRjYgLyogQml0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMDMyMUJCMTU2QUE4RDEwMDZFQkFGNiAvKiBC
aXRBcnJheS5oICovOyB9OwogCQlBODc2REJEODE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzZEQkQ3
MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovOyB9OwogCQlBOEE0NzM3RjE1MUE4MjVC
MDA0MTIzRkYgLyogQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50LmggKi87
IH07CkBAIC0yNDEsNiArMjQzLDggQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMTQzRjYxMUQxNTY1RjBG
OTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFtb3VudE9mUkFNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFtb3VudE9mUkFNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGMDMyMUJCMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCaXRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RGLmEgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJ
bkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTM2LDYgKzU0MCw4IEBACiAJCUE4NzZEQkQ2MTUxODE2RTUwMERBREI5NSAvKiB3dGYgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTE0M0Y2MTFEMTU2NUYw
RjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgKi8sCisJCQkJMTQzRjYxMUUxNTY1RjBGOTAw
REI1MTRBIC8qIEFtb3VudE9mUkFNLmggKi8sCiAJCQkJQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZG
IC8qIEFsaWdubWVudC5oICovLAogCQkJCUE4QTQ3MjU1MTUxQTgyNUEwMDQxMjNGRiAvKiBBbHdh
eXNJbmxpbmUuaCAqLywKIAkJCQlBOEE0NzI1NjE1MUE4MjVBMDA0MTIzRkYgLyogQXJyYXlCdWZm
ZXIuY3BwICovLApAQCAtMTAyNyw2ICsxMDMzLDcgQEAKIAkJCQlBOEE0NzQ4MDE1MUE4MjVCMDA0
MTIzRkYgLyogVk1UYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0OEMxNTFB
ODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQzRjYxMjAxNTY1
RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExNzIsNiAr
MTE3OSw3IEBACiAJCQkJQThBNDc0NzcxNTFBODI1QjAwNDEyM0ZGIC8qIFVSTEVzY2FwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdU
RlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1
MTRBIC8qIEFtb3VudE9mUkFNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dURi93
dGYvQW1vdW50T2ZSQU0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9m
UkFNLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBbW91bnRPZlJBTS5oIgorCisjaW5jbHVkZSAiU3RkTGliRXh0cmFz
LmgiCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbGlmIE9TKFVOSVgpCisjaW5j
bHVkZSA8dW5pc3RkLmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzeXMvc3lzcGFnZS5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGFtb3VudE9m
UkFNR3Vlc3MgPSAxMjggKiBNQjsKKworc3RhdGljIHNpemVfdCBjb21wdXRlQW1vdW50T2ZSQU0o
KQoreworI2lmIE9TKERBUldJTikKKyAgICBpbnQgbWliWzJdOworICAgIGludDY0X3QgYW1vdW50
T2ZSQU07CisgICAgc2l6ZV90IGxlbmd0aDsKKworICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBt
aWJbMV0gPSBIV19NRU1TSVpFOworICAgIGxlbmd0aCA9IHNpemVvZihpbnQ2NF90KTsKKyAgICBp
bnQgc3lzY3RsUmVzdWx0ID0gc3lzY3RsKG1pYiwgMiwgJmFtb3VudE9mUkFNLCAmbGVuZ3RoLCAw
LCAwKTsKKyAgICBpZiAoc3lzY3RsUmVzdWx0ID09IC0xKQorICAgICAgICByZXR1cm4gYW1vdW50
T2ZSQU1HdWVzczsKKyAgICByZXR1cm4gYW1vdW50T2ZSQU07CisjZWxpZiBPUyhVTklYKQorICAg
IGxvbmcgcGFnZXMgPSBzeXNjb25mKF9TQ19QSFlTX1BBR0VTKTsKKyAgICBsb25nIHBhZ2VTaXpl
ID0gc3lzY29uZihfU0NfUEFHRV9TSVpFKTsKKyAgICBpZiAocGFnZXMgPT0gLTEgfHwgcGFnZVNp
emUgPT0gLTEpCisgICAgICAgIHJldHVybiBhbW91bnRPZlJBTUd1ZXNzOworICAgIHJldHVybiBw
YWdlcyAqIHBhZ2VTaXplOworI2VsaWYgT1MoV0lORE9XUykKKyAgICBNRU1PUllTVEFUVVNFWCBz
dGF0dXM7CisgICAgc3RhdHVzLmR3TGVuZ3RoID0gc2l6ZW9mKHN0YXR1cyk7CisgICAgYm9vbCBy
ZXN1bHQgPSBHbG9iYWxNZW1vcnlTdGF0dXNFeCgmc3RhdHVzKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIGFtb3VudE9mUkFNR3Vlc3M7CisgICAgcmV0dXJuIHN0YXR1cy51bGxU
b3RhbFBoeXM7CisjZW5kaWYKK30KKworc2l6ZV90IGFtb3VudE9mUkFNKCkKK3sKKyAgICBzdGF0
aWMgc2l6ZV90IGFtb3VudE9mUkFNID0gY29tcHV0ZUFtb3VudE9mUkFNKCk7CisgICAgcmV0dXJu
IGFtb3VudE9mUkFNOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0Ftb3VudE9mUkFNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQW1vdW50T2ZS
QU0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFtb3VudE9mUkFN
X2gKKyNkZWZpbmUgQW1vdW50T2ZSQU1faAorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBhbW91bnRPZlJBTSgpOworCit9CisKKyNlbmRpZiAvLyBBbW91bnRP
ZlJBTV9oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE3ODQ4KQorKysgU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcg
QEAgU0VUKFdURl9IRUFERVJTCiAgICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaAogICAgIE51
bWJlck9mQ29yZXMuaAorICAgIEFtb3VudE9mUkFNLmgKICAgICBPU0FsbG9jYXRvci5oCiAgICAg
T1NSYW5kb21Tb3VyY2UuaAogICAgIE93bkFycmF5UHRyLmgKQEAgLTE0OSw2ICsxNTAsNyBAQCBT
RVQoV1RGX1NPVVJDRVMKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE9TUmFuZG9tU291cmNl
LmNwcAogICAgIE51bWJlck9mQ29yZXMuY3BwCisgICAgQW1vdW50T2ZSQU0uY3BwCiAgICAgUGFn
ZUFsbG9jYXRpb25BbGlnbmVkLmNwcAogICAgIFBhZ2VCbG9jay5jcHAKICAgICBQYXJhbGxlbEpv
YnNHZW5lcmljLmNwcApJbmRleDogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDExNzg0OCkK
KysrIFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgs
NiArMTA4LDcgQEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lkKgogbmFt
ZXNwYWNlIFdURiB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0Oworc3RhdGljIGNv
bnN0IHNpemVfdCBNQiA9IDEwMjQgKiAxMDI0OwogCiBpbmxpbmUgYm9vbCBpc1BvaW50ZXJBbGln
bmVkKHZvaWQqIHApCiB7CkBAIC0zMDQsNiArMzA1LDcgQEAgaW5saW5lIHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIE5vdE51bAogfQogCiB1c2luZyBXVEY6OktCOwordXNpbmcgV1RGOjpNQjsK
IHVzaW5nIFdURjo6aXNQb2ludGVyQWxpZ25lZDsKIHVzaW5nIFdURjo6aXM4Qnl0ZUFsaWduZWQ7
CiB1c2luZyBXVEY6OmJpbmFyeVNlYXJjaDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143157</attachid>
            <date>2012-05-21 18:09:12 -0700</date>
            <delta_ts>2012-05-21 22:51:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120521180913.patch</filename>
            <type>text/plain</type>
            <size>22584</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3ODYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDExLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDUtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBkb21pbmF0b3JzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgkocmV2aXNpb24gMTE3ODYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiwxMyArMTAyLDExIEBAIEVYUE9SVFMKICAgICA/Y29udmVydFVURjE2VG9VVEY4
QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJfV1BCX1dQQVBBRFBB
RF9OQFoKICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJz
aW9uUmVzdWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEpTRnVuY3Rp
b25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJASEFCVlVT
dHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2ljQDJAM0BaCi0gICAgP2NyZWF0ZUBKU0dsb2JhbERh
dGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRUaHJl
YWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJAQFoKICAgICA/Y3JlYXRlQE9wYXF1ZUpTU3RyaW5n
QEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVlSlNTdHJpbmdAQEBXVEZAQEFCVlVTdHJpbmdASlND
QEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBB
QlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0AyQEBaCiAgICAgP2NyZWF0ZUVtcHR5U3RyaW5nQFNt
YWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBAWgogICAgID9jcmVhdGVFcnJv
ckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAg
ICA/Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQVBBVkpTT2JqZWN0
QDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKLSAgICA/Y3JlYXRlTGVha2VkQEpTR2xvYmFsRGF0YUBK
U0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0
YWNrVHlwZUAyQFc0SGVhcFNpemVAMkBAWgogICAgID9jcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgogICAgID9jcmVhdGVS
YW5nZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdA
MUBAWgogICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZF
eGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCShyZXZpc2lvbiAxMTc4NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUgIlRyYWNp
bmcuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDx3dGYvQW1vdW50T2ZSQU0uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAt
NDUsMTQgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSB7IAogCi0jaWYgQ1BV
KFg4NikgfHwgQ1BVKFg4Nl82NCkKLXN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9
IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgY29uc3Qgc2l6
ZV90IGxhcmdlSGVhcFNpemUgPSA4ICogMTAyNCAqIDEwMjQ7Ci0jZWxzZQotc3RhdGljIGNvbnN0
IHNpemVfdCBsYXJnZUhlYXBTaXplID0gNTEyICogMTAyNDsKLSNlbmRpZgotc3RhdGljIGNvbnN0
IHNpemVfdCBzbWFsbEhlYXBTaXplID0gNTEyICogMTAyNDsKK3N0YXRpYyBjb25zdCBzaXplX3Qg
bGFyZ2VIZWFwU2l6ZSA9IDMyICogTUI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsSGVhcFNp
emUgPSAxICogTUI7CiAKICNpZiBFTkFCTEUoR0NfTE9HR0lORykKICNpZiBDT01QSUxFUihDTEFO
RykKQEAgLTE0OCwxNCArMTQyLDIyIEBAIHN0cnVjdCBHQ0NvdW50ZXIgewogI2RlZmluZSBHQ0NP
VU5URVIobmFtZSwgdmFsdWUpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAotc3RhdGlj
IHNpemVfdCBoZWFwU2l6ZUZvckhpbnQoSGVhcFNpemUgaGVhcFNpemUpCitzdGF0aWMgaW5saW5l
IHNpemVfdCBtaW5IZWFwU2l6ZShIZWFwVHlwZSBoZWFwVHlwZSwgc2l6ZV90IHJhbVNpemUpCiB7
Ci0gICAgaWYgKGhlYXBTaXplID09IExhcmdlSGVhcCkKLSAgICAgICAgcmV0dXJuIGxhcmdlSGVh
cFNpemU7Ci0gICAgQVNTRVJUKGhlYXBTaXplID09IFNtYWxsSGVhcCk7CisgICAgaWYgKGhlYXBU
eXBlID09IExhcmdlSGVhcCkKKyAgICAgICAgcmV0dXJuIG1pbihsYXJnZUhlYXBTaXplLCByYW1T
aXplIC8gNCk7CiAgICAgcmV0dXJuIHNtYWxsSGVhcFNpemU7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
c2l6ZV90IHByb3BvcnRpb25hbEhlYXBTaXplKHNpemVfdCBoZWFwU2l6ZSwgc2l6ZV90IHJhbVNp
emUpCit7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDQpCisgICAgICAgIHJldHVybiAy
ICogaGVhcFNpemU7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDIpCisgICAgICAgIHJl
dHVybiAxLjUgKiBoZWFwU2l6ZTsKKyAgICByZXR1cm4gMS4yNSAqIGhlYXBTaXplOworfQorCiBz
dGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUoKQogewog
ICAgIGlmICghSlNMb2NrOjpsb2NrQ291bnQoKSkKQEAgLTIzMCw5ICsyMzIsMTAgQEAgaW5saW5l
IFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBSZWNvcmRUeQogCiB9IC8vIGFub255bW91cyBuYW1l
c3BhY2UKIAotSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhl
YXBTaXplKQotICAgIDogbV9oZWFwU2l6ZShoZWFwU2l6ZSkKLSAgICAsIG1fbWluQnl0ZXNQZXJD
eWNsZShoZWFwU2l6ZUZvckhpbnQoaGVhcFNpemUpKQorSGVhcDo6SGVhcChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEhlYXBUeXBlIGhlYXBUeXBlKQorICAgIDogbV9oZWFwVHlwZShoZWFwVHlw
ZSkKKyAgICAsIG1fcmFtU2l6ZShXVEY6OmFtb3VudE9mUkFNKCkpCisgICAgLCBtX21pbkJ5dGVz
UGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlwZSwgbV9yYW1TaXplKSkKICAgICAsIG1fc2l6
ZUFmdGVyTGFzdENvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdChtX21pbkJ5
dGVzUGVyQ3ljbGUpCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkKDApCkBAIC03MjIsMTUgKzcyNSwx
NSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIG1f
Ynl0ZXNBYmFuZG9uZWQgPSAwOwogICAgIH0KIAotICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNh
bCBHQyBjaHVybiBpbiBsYXJnZSBoZWFwcywgd2Ugc2V0IHRoZSBuZXcgYWxsb2NhdGlvbiAKLSAg
ICAvLyBsaW1pdCB0byBiZSB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLiBUaGlzIGhldXJp
c3RpYyAKLSAgICAvLyBpcyBhIGJpdCBhcmJpdHJhcnkuIFVzaW5nIHRoZSBjdXJyZW50IHNpemUg
b2YgdGhlIGhlYXAgYWZ0ZXIgdGhpcyAKLSAgICAvLyBjb2xsZWN0aW9uIGdpdmVzIHVzIGEgMlgg
bXVsdGlwbGllciwgd2hpY2ggaXMgYSAxOjEgKGhlYXAgc2l6ZSA6Ci0gICAgLy8gbmV3IGJ5dGVz
IGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5kIHNlZW1zIHRvIHdvcmsgd2VsbCBpbiBiZW5jaG1h
cmtzLgotICAgIHNpemVfdCBuZXdTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBjdXJyZW50SGVh
cFNpemUgPSBzaXplKCk7CiAgICAgaWYgKGZ1bGxHQykgewotICAgICAgICBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ID0gbmV3U2l6ZTsKLSAgICAgICAgbV9ieXRlc0FsbG9jYXRlZExpbWl0ID0gbWF4
KG5ld1NpemUsIG1fbWluQnl0ZXNQZXJDeWNsZSk7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdENv
bGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisKKyAgICAgICAgLy8gVG8gYXZvaWQgcGF0aG9sb2dp
Y2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVhcHMsIHdlIHNldAor
ICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQgYmFzZWQgb24gdGhlIGN1cnJlbnQg
c2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCisgICAgICAgIC8vIGZpeGVkIG1pbmltdW0uCisgICAg
ICAgIHNpemVfdCBtYXhIZWFwU2l6ZSA9IG1heChtaW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3Jh
bVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShjdXJyZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkp
OworICAgICAgICBtX2J5dGVzQWxsb2NhdGVkTGltaXQgPSBtYXhIZWFwU2l6ZSAtIGN1cnJlbnRI
ZWFwU2l6ZTsKICAgICB9CiAgICAgbV9ieXRlc0FsbG9jYXRlZCA9IDA7CiAgICAgZG91YmxlIGxh
c3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAxMTc4NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBlbnVtIE9wZXJhdGlvbkluUHJvZ3Jlc3MgeyBOb09wZXJhdGlvbiwgQWxsb2NhdGlv
biwgQ29sbGVjdGlvbiB9OwogCi0gICAgLy8gSGVhcCBzaXplIGhpbnQuCi0gICAgZW51bSBIZWFw
U2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CisgICAgZW51bSBIZWFwVHlwZSB7IFNtYWxs
SGVhcCwgTGFyZ2VIZWFwIH07CiAKICAgICBjbGFzcyBIZWFwIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSGVhcCk7CkBAIC05MCw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNDZWxsKik7CiAg
ICAgICAgIHN0YXRpYyB1aW50OF90KiBhZGRyZXNzT2ZDYXJkRm9yKEpTQ2VsbCopOwogCi0gICAg
ICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOworICAgICAgICBIZWFwKEpTR2xvYmFs
RGF0YSosIEhlYXBUeXBlKTsKICAgICAgICAgfkhlYXAoKTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0xOTcsNyArMTk2LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCk7CiAg
ICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwogCi0gICAgICAgIGNvbnN0
IEhlYXBTaXplIG1faGVhcFNpemU7CisgICAgICAgIGNvbnN0IEhlYXBUeXBlIG1faGVhcFR5cGU7
CisgICAgICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNpemVfdCBt
X21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw4ICsxMTgsOCBAQCBzdGF0
aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsCiB9CiAjZW5kaWYKIAotSlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVh
ZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplIGhlYXBTaXplKQotICAgIDogaGVh
cCh0aGlzLCBoZWFwU2l6ZSkKK0pTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tUeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKKyAgICA6IGhlYXAodGhpcywgaGVhcFR5cGUpCiAgICAgLCBnbG9iYWxE
YXRhVHlwZShnbG9iYWxEYXRhVHlwZSkKICAgICAsIGNsaWVudERhdGEoMCkKICAgICAsIHRvcENh
bGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCkBAIC0yOTAsMTkgKzI5MCwxOSBAQCBKU0ds
b2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9i
YWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUg
dHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9i
YWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKEFQSUNv
bnRleHRHcm91cCwgdHlwZSwgaGVhcFNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpT
R2xvYmFsRGF0YShBUElDb250ZXh0R3JvdXAsIHR5cGUsIGhlYXBUeXBlKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRTdGFja1R5cGUg
dHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9i
YWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKERlZmF1bHQsIHR5cGUsIGhl
YXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0dsb2JhbERhdGEoRGVmYXVsdCwg
dHlwZSwgaGVhcFR5cGUpKTsKIH0KIAotUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFs
RGF0YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFwU2l6ZSBoZWFwU2l6
ZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZChU
aHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZSh0eXBlLCBoZWFwU2l6ZSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFwVHlwZSk7
CiB9CiAKIGJvb2wgSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
MTE3ODYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3Miw5ICsxNzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0
ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQo
VGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlw
ZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBU
eXBlID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlw
ZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Y3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFR5cGUgPSBTbWFsbEhlYXAp
OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNHbG9iYWxEYXRhKCk7CiAKICAgICAgICAg
dm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFk
cygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7IH0KQEAgLTQwNSw3ICs0MDUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKKyAgICAgICAgSlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlKTsKICAgICAgICAg
c3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAg
dm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIChFTkFC
TEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTc4NjMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI3IEBACisyMDEyLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CisKKyAgICAgICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0
ZW0gUkFNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NzAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBtZWFzdXJpbmcgc3lzdGVtIFJBTS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLmd5cGk6CisgICAgICAgICog
V1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAgICogV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0Ftb3VudE9mUkFNLmNw
cDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpjb21wdXRlQW1vdW50T2ZS
QU0pOgorICAgICAgICAoV1RGOjphbW91bnRPZlJBTSk6CisgICAgICAgICogd3RmL0Ftb3VudE9m
UkFNLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGKToKKwogMjAx
Mi0wNS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgYmUgYWJsZSB0byBjb21wdXRlIGRvbWluYXRvcnMKSW5kZXg6IFNvdXJjZS9XVEYvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQCB3dGZfc291cmNlcyArPSBcCiAgICAg
U291cmNlL1dURi93dGYvTnVsbFB0ci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9OdW1iZXJPZkNv
cmVzLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5oIFwKKyAgICBTb3Vy
Y2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9m
UkFNLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmggXAogICAgIFNvdXJjZS9X
VEYvd3RmL09TUmFuZG9tU291cmNlLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvT1NSYW5kb21T
b3VyY2UuaCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvV1RGLmd5cGkJKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9XVEYvV1RGLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOCBAQAogICAgICAgICAgICAgJ3d0Zi9OdWxs
UHRyLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bWJlck9mQ29yZXMuY3BwJywKICAgICAgICAg
ICAgICd3dGYvTnVtYmVyT2ZDb3Jlcy5oJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50T2ZSQU0u
Y3BwJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50T2ZSQU0uaCcsCiAgICAgICAgICAgICAnd3Rm
L09TQWxsb2NhdG9yUG9zaXguY3BwJywKICAgICAgICAgICAgICd3dGYvT1NBbGxvY2F0b3JXaW4u
Y3BwJywKICAgICAgICAgICAgICd3dGYvT1NSYW5kb21Tb3VyY2UuY3BwJywKSW5kZXg6IFNvdXJj
ZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5wcm8JKHJldmlzaW9u
IDExNzg2MykKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29ya2luZyBjb3B5KQpAQCAtODQsNiAr
ODQsNyBAQCBIRUFERVJTICs9IFwKICAgICBOb3RGb3VuZC5oIFwKICAgICBOdWxsUHRyLmggXAog
ICAgIE51bWJlck9mQ29yZXMuaCBcCisgICAgQW1vdW50T2ZSQU0uaCBcCiAgICAgT1NBbGxvY2F0
b3IuaCBcCiAgICAgT1NSYW5kb21Tb3VyY2UuaCBcCiAgICAgT3duQXJyYXlQdHIuaCBcCkBAIC0x
OTEsNiArMTkyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgTWV0YUFsbG9jYXRvci5jcHAgXAogICAg
IE51bGxQdHIuY3BwIFwKICAgICBOdW1iZXJPZkNvcmVzLmNwcCBcCisgICAgQW1vdW50T2ZSQU0u
Y3BwIFwKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIHF0L01haW5UaHJlYWRRdC5jcHAg
XAogICAgIHF0L1N0cmluZ1F0LmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RG
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagko
cmV2aXNpb24gMTE3ODYzKQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTkwOSw2ICs5MDksMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8Rmls
ZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcQW1vdW50T2ZSQU0uY3BwIgorCQkJPgorCQk8L0Zp
bGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxBbW91bnRPZlJBTS5oIgorCQkJ
PgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxOdW1iZXJPZkNv
cmVzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTc4NjMpCisrKyBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogCW9i
amVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTE0M0Y2MTFG
MTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogQW1v
dW50T2ZSQU0uY3BwICovOyB9OworCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50
T2ZSQU0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3
MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTRGMDMyMUJDMTU2QUE4RDEw
MDZFQkFGNiAvKiBCaXRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi87IH07
CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1
IC8qIFBsYXRmb3JtLmggKi87IH07CkBAIC0yNDIsNiArMjQ0LDggQEAKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KwkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFtb3VudE9mUkFNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFN
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFtb3VudE9mUkFNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0
Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYwMzIxQkIxNTZBQThEMTAwNkVC
QUY2IC8qIEJpdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3
OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01MzgsNiArNTQyLDggQEAK
IAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFt
b3VudE9mUkFNLmNwcCAqLywKKwkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50
T2ZSQU0uaCAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50Lmgg
Ki8sCiAJCQkJQThBNDcyNTUxNTFBODI1QTAwNDEyM0ZGIC8qIEFsd2F5c0lubGluZS5oICovLAog
CQkJCUE4QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCkBAIC0x
MDMwLDYgKzEwMzYsNyBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIzRkYgLyog
Y29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3
MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTExNzYsNiArMTE4Myw3IEBACiAJCQkJ
QThBNDc0NzcxNTFBODI1QjAwNDEyM0ZGIC8qIFVSTEVzY2FwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9m
UkFNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBbW91bnRPZlJBTS5oIgorCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaWYgT1MoREFS
V0lOKQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu
Y2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbGlmIE9TKFVOSVgpCisjaW5jbHVkZSA8dW5pc3RkLmg+
CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2luY2x1
ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzeXMvc3lzcGFnZS5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXVEYgeworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGFtb3VudE9mUkFNR3Vlc3MgPSAxMjgg
KiBNQjsKKworc3RhdGljIHNpemVfdCBjb21wdXRlQW1vdW50T2ZSQU0oKQoreworI2lmIE9TKERB
UldJTikKKyAgICBpbnQgbWliWzJdOworICAgIGludDY0X3QgYW1vdW50T2ZSQU07CisgICAgc2l6
ZV90IGxlbmd0aDsKKworICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBtaWJbMV0gPSBIV19NRU1T
SVpFOworICAgIGxlbmd0aCA9IHNpemVvZihpbnQ2NF90KTsKKyAgICBpbnQgc3lzY3RsUmVzdWx0
ID0gc3lzY3RsKG1pYiwgMiwgJmFtb3VudE9mUkFNLCAmbGVuZ3RoLCAwLCAwKTsKKyAgICBpZiAo
c3lzY3RsUmVzdWx0ID09IC0xKQorICAgICAgICByZXR1cm4gYW1vdW50T2ZSQU1HdWVzczsKKyAg
ICByZXR1cm4gYW1vdW50T2ZSQU07CisjZWxpZiBPUyhVTklYKQorICAgIGxvbmcgcGFnZXMgPSBz
eXNjb25mKF9TQ19QSFlTX1BBR0VTKTsKKyAgICBsb25nIHBhZ2VTaXplID0gc3lzY29uZihfU0Nf
UEFHRV9TSVpFKTsKKyAgICBpZiAocGFnZXMgPT0gLTEgfHwgcGFnZVNpemUgPT0gLTEpCisgICAg
ICAgIHJldHVybiBhbW91bnRPZlJBTUd1ZXNzOworICAgIHJldHVybiBwYWdlcyAqIHBhZ2VTaXpl
OworI2VsaWYgT1MoV0lORE9XUykKKyAgICBNRU1PUllTVEFUVVNFWCBzdGF0dXM7CisgICAgc3Rh
dHVzLmR3TGVuZ3RoID0gc2l6ZW9mKHN0YXR1cyk7CisgICAgYm9vbCByZXN1bHQgPSBHbG9iYWxN
ZW1vcnlTdGF0dXNFeCgmc3RhdHVzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IGFtb3VudE9mUkFNR3Vlc3M7CisgICAgcmV0dXJuIHN0YXR1cy51bGxUb3RhbFBoeXM7CisjZW5k
aWYKK30KKworc2l6ZV90IGFtb3VudE9mUkFNKCkKK3sKKyAgICBzdGF0aWMgc2l6ZV90IGFtb3Vu
dE9mUkFNID0gY29tcHV0ZUFtb3VudE9mUkFNKCk7CisgICAgcmV0dXJuIGFtb3VudE9mUkFNOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFtb3VudE9mUkFNX2gKKyNkZWZpbmUgQW1v
dW50T2ZSQU1faAorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBhbW91bnRPZlJBTSgpOworCit9CisKKyNlbmRpZiAvLyBBbW91bnRPZlJBTV9oCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE3ODYzKQorKysgU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgU0VUKFdURl9IRUFE
RVJTCiAgICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaAogICAgIE51bWJlck9mQ29yZXMuaAor
ICAgIEFtb3VudE9mUkFNLmgKICAgICBPU0FsbG9jYXRvci5oCiAgICAgT1NSYW5kb21Tb3VyY2Uu
aAogICAgIE93bkFycmF5UHRyLmgKQEAgLTE0OSw2ICsxNTAsNyBAQCBTRVQoV1RGX1NPVVJDRVMK
ICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE9TUmFuZG9tU291cmNlLmNwcAogICAgIE51bWJl
ck9mQ29yZXMuY3BwCisgICAgQW1vdW50T2ZSQU0uY3BwCiAgICAgUGFnZUFsbG9jYXRpb25BbGln
bmVkLmNwcAogICAgIFBhZ2VCbG9jay5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcApJ
bmRleDogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9XVEYv
d3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgVHlw
ZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lkKgogbmFtZXNwYWNlIFdURiB7CiAK
IHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0Oworc3RhdGljIGNvbnN0IHNpemVfdCBNQiA9
IDEwMjQgKiAxMDI0OwogCiBpbmxpbmUgYm9vbCBpc1BvaW50ZXJBbGlnbmVkKHZvaWQqIHApCiB7
CkBAIC0zMDQsNiArMzA1LDcgQEAgaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5v
dE51bAogfQogCiB1c2luZyBXVEY6OktCOwordXNpbmcgV1RGOjpNQjsKIHVzaW5nIFdURjo6aXNQ
b2ludGVyQWxpZ25lZDsKIHVzaW5nIFdURjo6aXM4Qnl0ZUFsaWduZWQ7CiB1c2luZyBXVEY6OmJp
bmFyeVNlYXJjaDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143192</attachid>
            <date>2012-05-21 22:51:42 -0700</date>
            <delta_ts>2012-05-21 22:54:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120521225140.patch</filename>
            <type>text/plain</type>
            <size>22584</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3ODYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDExLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDUtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBkb21pbmF0b3JzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgkocmV2aXNpb24gMTE3ODYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiwxMyArMTAyLDExIEBAIEVYUE9SVFMKICAgICA/Y29udmVydFVURjE2VG9VVEY4
QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJfV1BCX1dQQVBBRFBB
RF9OQFoKICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJz
aW9uUmVzdWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEpTRnVuY3Rp
b25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJASEFCVlVT
dHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2ljQDJAM0BaCi0gICAgP2NyZWF0ZUBKU0dsb2JhbERh
dGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRUaHJl
YWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJAQFoKICAgICA/Y3JlYXRlQE9wYXF1ZUpTU3RyaW5n
QEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVlSlNTdHJpbmdAQEBXVEZAQEFCVlVTdHJpbmdASlND
QEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBB
QlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0AyQEBaCiAgICAgP2NyZWF0ZUVtcHR5U3RyaW5nQFNt
YWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBAWgogICAgID9jcmVhdGVFcnJv
ckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAg
ICA/Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQVBBVkpTT2JqZWN0
QDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKLSAgICA/Y3JlYXRlTGVha2VkQEpTR2xvYmFsRGF0YUBK
U0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0
YWNrVHlwZUAyQFc0SGVhcFNpemVAMkBAWgogICAgID9jcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgogICAgID9jcmVhdGVS
YW5nZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdA
MUBAWgogICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZF
eGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCShyZXZpc2lvbiAxMTc4NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUgIlRyYWNp
bmcuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDx3dGYvQW1vdW50T2ZSQU0uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAt
NDUsMTQgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSB7IAogCi0jaWYgQ1BV
KFg4NikgfHwgQ1BVKFg4Nl82NCkKLXN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9
IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgY29uc3Qgc2l6
ZV90IGxhcmdlSGVhcFNpemUgPSA4ICogMTAyNCAqIDEwMjQ7Ci0jZWxzZQotc3RhdGljIGNvbnN0
IHNpemVfdCBsYXJnZUhlYXBTaXplID0gNTEyICogMTAyNDsKLSNlbmRpZgotc3RhdGljIGNvbnN0
IHNpemVfdCBzbWFsbEhlYXBTaXplID0gNTEyICogMTAyNDsKK3N0YXRpYyBjb25zdCBzaXplX3Qg
bGFyZ2VIZWFwU2l6ZSA9IDMyICogTUI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsSGVhcFNp
emUgPSAxICogTUI7CiAKICNpZiBFTkFCTEUoR0NfTE9HR0lORykKICNpZiBDT01QSUxFUihDTEFO
RykKQEAgLTE0OCwxNCArMTQyLDIyIEBAIHN0cnVjdCBHQ0NvdW50ZXIgewogI2RlZmluZSBHQ0NP
VU5URVIobmFtZSwgdmFsdWUpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAotc3RhdGlj
IHNpemVfdCBoZWFwU2l6ZUZvckhpbnQoSGVhcFNpemUgaGVhcFNpemUpCitzdGF0aWMgaW5saW5l
IHNpemVfdCBtaW5IZWFwU2l6ZShIZWFwVHlwZSBoZWFwVHlwZSwgc2l6ZV90IHJhbVNpemUpCiB7
Ci0gICAgaWYgKGhlYXBTaXplID09IExhcmdlSGVhcCkKLSAgICAgICAgcmV0dXJuIGxhcmdlSGVh
cFNpemU7Ci0gICAgQVNTRVJUKGhlYXBTaXplID09IFNtYWxsSGVhcCk7CisgICAgaWYgKGhlYXBU
eXBlID09IExhcmdlSGVhcCkKKyAgICAgICAgcmV0dXJuIG1pbihsYXJnZUhlYXBTaXplLCByYW1T
aXplIC8gNCk7CiAgICAgcmV0dXJuIHNtYWxsSGVhcFNpemU7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
c2l6ZV90IHByb3BvcnRpb25hbEhlYXBTaXplKHNpemVfdCBoZWFwU2l6ZSwgc2l6ZV90IHJhbVNp
emUpCit7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDQpCisgICAgICAgIHJldHVybiAy
ICogaGVhcFNpemU7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDIpCisgICAgICAgIHJl
dHVybiAxLjUgKiBoZWFwU2l6ZTsKKyAgICByZXR1cm4gMS4yNSAqIGhlYXBTaXplOworfQorCiBz
dGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUoKQogewog
ICAgIGlmICghSlNMb2NrOjpsb2NrQ291bnQoKSkKQEAgLTIzMCw5ICsyMzIsMTAgQEAgaW5saW5l
IFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBSZWNvcmRUeQogCiB9IC8vIGFub255bW91cyBuYW1l
c3BhY2UKIAotSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhl
YXBTaXplKQotICAgIDogbV9oZWFwU2l6ZShoZWFwU2l6ZSkKLSAgICAsIG1fbWluQnl0ZXNQZXJD
eWNsZShoZWFwU2l6ZUZvckhpbnQoaGVhcFNpemUpKQorSGVhcDo6SGVhcChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEhlYXBUeXBlIGhlYXBUeXBlKQorICAgIDogbV9oZWFwVHlwZShoZWFwVHlw
ZSkKKyAgICAsIG1fcmFtU2l6ZShXVEY6OmFtb3VudE9mUkFNKCkpCisgICAgLCBtX21pbkJ5dGVz
UGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlwZSwgbV9yYW1TaXplKSkKICAgICAsIG1fc2l6
ZUFmdGVyTGFzdENvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdChtX21pbkJ5
dGVzUGVyQ3ljbGUpCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkKDApCkBAIC03MjIsMTUgKzcyNSwx
NSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIG1f
Ynl0ZXNBYmFuZG9uZWQgPSAwOwogICAgIH0KIAotICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNh
bCBHQyBjaHVybiBpbiBsYXJnZSBoZWFwcywgd2Ugc2V0IHRoZSBuZXcgYWxsb2NhdGlvbiAKLSAg
ICAvLyBsaW1pdCB0byBiZSB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLiBUaGlzIGhldXJp
c3RpYyAKLSAgICAvLyBpcyBhIGJpdCBhcmJpdHJhcnkuIFVzaW5nIHRoZSBjdXJyZW50IHNpemUg
b2YgdGhlIGhlYXAgYWZ0ZXIgdGhpcyAKLSAgICAvLyBjb2xsZWN0aW9uIGdpdmVzIHVzIGEgMlgg
bXVsdGlwbGllciwgd2hpY2ggaXMgYSAxOjEgKGhlYXAgc2l6ZSA6Ci0gICAgLy8gbmV3IGJ5dGVz
IGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5kIHNlZW1zIHRvIHdvcmsgd2VsbCBpbiBiZW5jaG1h
cmtzLgotICAgIHNpemVfdCBuZXdTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBjdXJyZW50SGVh
cFNpemUgPSBzaXplKCk7CiAgICAgaWYgKGZ1bGxHQykgewotICAgICAgICBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ID0gbmV3U2l6ZTsKLSAgICAgICAgbV9ieXRlc0FsbG9jYXRlZExpbWl0ID0gbWF4
KG5ld1NpemUsIG1fbWluQnl0ZXNQZXJDeWNsZSk7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdENv
bGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisKKyAgICAgICAgLy8gVG8gYXZvaWQgcGF0aG9sb2dp
Y2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVhcHMsIHdlIHNldAor
ICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQgYmFzZWQgb24gdGhlIGN1cnJlbnQg
c2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCisgICAgICAgIC8vIGZpeGVkIG1pbmltdW0uCisgICAg
ICAgIHNpemVfdCBtYXhIZWFwU2l6ZSA9IG1heChtaW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3Jh
bVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShjdXJyZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkp
OworICAgICAgICBtX2J5dGVzQWxsb2NhdGVkTGltaXQgPSBtYXhIZWFwU2l6ZSAtIGN1cnJlbnRI
ZWFwU2l6ZTsKICAgICB9CiAgICAgbV9ieXRlc0FsbG9jYXRlZCA9IDA7CiAgICAgZG91YmxlIGxh
c3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAxMTc4NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBlbnVtIE9wZXJhdGlvbkluUHJvZ3Jlc3MgeyBOb09wZXJhdGlvbiwgQWxsb2NhdGlv
biwgQ29sbGVjdGlvbiB9OwogCi0gICAgLy8gSGVhcCBzaXplIGhpbnQuCi0gICAgZW51bSBIZWFw
U2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CisgICAgZW51bSBIZWFwVHlwZSB7IFNtYWxs
SGVhcCwgTGFyZ2VIZWFwIH07CiAKICAgICBjbGFzcyBIZWFwIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSGVhcCk7CkBAIC05MCw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNDZWxsKik7CiAg
ICAgICAgIHN0YXRpYyB1aW50OF90KiBhZGRyZXNzT2ZDYXJkRm9yKEpTQ2VsbCopOwogCi0gICAg
ICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOworICAgICAgICBIZWFwKEpTR2xvYmFs
RGF0YSosIEhlYXBUeXBlKTsKICAgICAgICAgfkhlYXAoKTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0xOTcsNyArMTk2LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCk7CiAg
ICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwogCi0gICAgICAgIGNvbnN0
IEhlYXBTaXplIG1faGVhcFNpemU7CisgICAgICAgIGNvbnN0IEhlYXBUeXBlIG1faGVhcFR5cGU7
CisgICAgICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNpemVfdCBt
X21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw4ICsxMTgsOCBAQCBzdGF0
aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsCiB9CiAjZW5kaWYKIAotSlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVh
ZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplIGhlYXBTaXplKQotICAgIDogaGVh
cCh0aGlzLCBoZWFwU2l6ZSkKK0pTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tUeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKKyAgICA6IGhlYXAodGhpcywgaGVhcFR5cGUpCiAgICAgLCBnbG9iYWxE
YXRhVHlwZShnbG9iYWxEYXRhVHlwZSkKICAgICAsIGNsaWVudERhdGEoMCkKICAgICAsIHRvcENh
bGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCkBAIC0yOTAsMTkgKzI5MCwxOSBAQCBKU0ds
b2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9i
YWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUg
dHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9i
YWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKEFQSUNv
bnRleHRHcm91cCwgdHlwZSwgaGVhcFNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpT
R2xvYmFsRGF0YShBUElDb250ZXh0R3JvdXAsIHR5cGUsIGhlYXBUeXBlKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRTdGFja1R5cGUg
dHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9i
YWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKERlZmF1bHQsIHR5cGUsIGhl
YXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0dsb2JhbERhdGEoRGVmYXVsdCwg
dHlwZSwgaGVhcFR5cGUpKTsKIH0KIAotUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFs
RGF0YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFwU2l6ZSBoZWFwU2l6
ZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZChU
aHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZSh0eXBlLCBoZWFwU2l6ZSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFwVHlwZSk7
CiB9CiAKIGJvb2wgSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
MTE3ODYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3Miw5ICsxNzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0
ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQo
VGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlw
ZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBU
eXBlID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlw
ZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Y3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFR5cGUgPSBTbWFsbEhlYXAp
OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNHbG9iYWxEYXRhKCk7CiAKICAgICAgICAg
dm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFk
cygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7IH0KQEAgLTQwNSw3ICs0MDUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKKyAgICAgICAgSlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlKTsKICAgICAgICAg
c3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAg
dm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIChFTkFC
TEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTc4NjMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI3IEBACisyMDEyLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CisKKyAgICAgICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0
ZW0gUkFNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NzAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBtZWFzdXJpbmcgc3lzdGVtIFJBTS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLmd5cGk6CisgICAgICAgICog
V1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAgICogV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0Ftb3VudE9mUkFNLmNw
cDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpjb21wdXRlQW1vdW50T2ZS
QU0pOgorICAgICAgICAoV1RGOjphbW91bnRPZlJBTSk6CisgICAgICAgICogd3RmL0Ftb3VudE9m
UkFNLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGKToKKwogMjAx
Mi0wNS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgYmUgYWJsZSB0byBjb21wdXRlIGRvbWluYXRvcnMKSW5kZXg6IFNvdXJjZS9XVEYvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQCB3dGZfc291cmNlcyArPSBcCiAgICAg
U291cmNlL1dURi93dGYvTnVsbFB0ci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9OdW1iZXJPZkNv
cmVzLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5oIFwKKyAgICBTb3Vy
Y2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9m
UkFNLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmggXAogICAgIFNvdXJjZS9X
VEYvd3RmL09TUmFuZG9tU291cmNlLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvT1NSYW5kb21T
b3VyY2UuaCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvV1RGLmd5cGkJKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9XVEYvV1RGLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOCBAQAogICAgICAgICAgICAgJ3d0Zi9OdWxs
UHRyLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bWJlck9mQ29yZXMuY3BwJywKICAgICAgICAg
ICAgICd3dGYvTnVtYmVyT2ZDb3Jlcy5oJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50T2ZSQU0u
Y3BwJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50T2ZSQU0uaCcsCiAgICAgICAgICAgICAnd3Rm
L09TQWxsb2NhdG9yUG9zaXguY3BwJywKICAgICAgICAgICAgICd3dGYvT1NBbGxvY2F0b3JXaW4u
Y3BwJywKICAgICAgICAgICAgICd3dGYvT1NSYW5kb21Tb3VyY2UuY3BwJywKSW5kZXg6IFNvdXJj
ZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5wcm8JKHJldmlzaW9u
IDExNzg2MykKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29ya2luZyBjb3B5KQpAQCAtODQsNiAr
ODQsNyBAQCBIRUFERVJTICs9IFwKICAgICBOb3RGb3VuZC5oIFwKICAgICBOdWxsUHRyLmggXAog
ICAgIE51bWJlck9mQ29yZXMuaCBcCisgICAgQW1vdW50T2ZSQU0uaCBcCiAgICAgT1NBbGxvY2F0
b3IuaCBcCiAgICAgT1NSYW5kb21Tb3VyY2UuaCBcCiAgICAgT3duQXJyYXlQdHIuaCBcCkBAIC0x
OTEsNiArMTkyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgTWV0YUFsbG9jYXRvci5jcHAgXAogICAg
IE51bGxQdHIuY3BwIFwKICAgICBOdW1iZXJPZkNvcmVzLmNwcCBcCisgICAgQW1vdW50T2ZSQU0u
Y3BwIFwKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIHF0L01haW5UaHJlYWRRdC5jcHAg
XAogICAgIHF0L1N0cmluZ1F0LmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RG
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagko
cmV2aXNpb24gMTE3ODYzKQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTkwOSw2ICs5MDksMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8Rmls
ZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcQW1vdW50T2ZSQU0uY3BwIgorCQkJPgorCQk8L0Zp
bGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxBbW91bnRPZlJBTS5oIgorCQkJ
PgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxOdW1iZXJPZkNv
cmVzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTc4NjMpCisrKyBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogCW9i
amVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTE0M0Y2MTFG
MTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogQW1v
dW50T2ZSQU0uY3BwICovOyB9OworCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50
T2ZSQU0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3
MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTRGMDMyMUJDMTU2QUE4RDEw
MDZFQkFGNiAvKiBCaXRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi87IH07
CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1
IC8qIFBsYXRmb3JtLmggKi87IH07CkBAIC0yNDIsNiArMjQ0LDggQEAKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KwkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFtb3VudE9mUkFNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFN
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFtb3VudE9mUkFNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0
Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYwMzIxQkIxNTZBQThEMTAwNkVC
QUY2IC8qIEJpdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3
OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01MzgsNiArNTQyLDggQEAK
IAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFt
b3VudE9mUkFNLmNwcCAqLywKKwkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogQW1vdW50
T2ZSQU0uaCAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25tZW50Lmgg
Ki8sCiAJCQkJQThBNDcyNTUxNTFBODI1QTAwNDEyM0ZGIC8qIEFsd2F5c0lubGluZS5oICovLAog
CQkJCUE4QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCkBAIC0x
MDMwLDYgKzEwMzYsNyBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIzRkYgLyog
Y29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3
MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTExNzYsNiArMTE4Myw3IEBACiAJCQkJ
QThBNDc0NzcxNTFBODI1QjAwNDEyM0ZGIC8qIFVSTEVzY2FwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9m
UkFNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBbW91bnRPZlJBTS5oIgorCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaWYgT1MoREFS
V0lOKQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu
Y2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbGlmIE9TKFVOSVgpCisjaW5jbHVkZSA8dW5pc3RkLmg+
CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2luY2x1
ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzeXMvc3lzcGFnZS5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXVEYgeworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGFtb3VudE9mUkFNR3Vlc3MgPSAxMjgg
KiBNQjsKKworc3RhdGljIHNpemVfdCBjb21wdXRlQW1vdW50T2ZSQU0oKQoreworI2lmIE9TKERB
UldJTikKKyAgICBpbnQgbWliWzJdOworICAgIGludDY0X3QgYW1vdW50T2ZSQU07CisgICAgc2l6
ZV90IGxlbmd0aDsKKworICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBtaWJbMV0gPSBIV19NRU1T
SVpFOworICAgIGxlbmd0aCA9IHNpemVvZihpbnQ2NF90KTsKKyAgICBpbnQgc3lzY3RsUmVzdWx0
ID0gc3lzY3RsKG1pYiwgMiwgJmFtb3VudE9mUkFNLCAmbGVuZ3RoLCAwLCAwKTsKKyAgICBpZiAo
c3lzY3RsUmVzdWx0ID09IC0xKQorICAgICAgICByZXR1cm4gYW1vdW50T2ZSQU1HdWVzczsKKyAg
ICByZXR1cm4gYW1vdW50T2ZSQU07CisjZWxpZiBPUyhVTklYKQorICAgIGxvbmcgcGFnZXMgPSBz
eXNjb25mKF9TQ19QSFlTX1BBR0VTKTsKKyAgICBsb25nIHBhZ2VTaXplID0gc3lzY29uZihfU0Nf
UEFHRV9TSVpFKTsKKyAgICBpZiAocGFnZXMgPT0gLTEgfHwgcGFnZVNpemUgPT0gLTEpCisgICAg
ICAgIHJldHVybiBhbW91bnRPZlJBTUd1ZXNzOworICAgIHJldHVybiBwYWdlcyAqIHBhZ2VTaXpl
OworI2VsaWYgT1MoV0lORE9XUykKKyAgICBNRU1PUllTVEFUVVNFWCBzdGF0dXM7CisgICAgc3Rh
dHVzLmR3TGVuZ3RoID0gc2l6ZW9mKHN0YXR1cyk7CisgICAgYm9vbCByZXN1bHQgPSBHbG9iYWxN
ZW1vcnlTdGF0dXNFeCgmc3RhdHVzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IGFtb3VudE9mUkFNR3Vlc3M7CisgICAgcmV0dXJuIHN0YXR1cy51bGxUb3RhbFBoeXM7CisjZW5k
aWYKK30KKworc2l6ZV90IGFtb3VudE9mUkFNKCkKK3sKKyAgICBzdGF0aWMgc2l6ZV90IGFtb3Vu
dE9mUkFNID0gY29tcHV0ZUFtb3VudE9mUkFNKCk7CisgICAgcmV0dXJuIGFtb3VudE9mUkFNOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFtb3VudE9mUkFNX2gKKyNkZWZpbmUgQW1v
dW50T2ZSQU1faAorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBhbW91bnRPZlJBTSgpOworCit9CisKKyNlbmRpZiAvLyBBbW91bnRPZlJBTV9oCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE3ODYzKQorKysgU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgU0VUKFdURl9IRUFE
RVJTCiAgICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaAogICAgIE51bWJlck9mQ29yZXMuaAor
ICAgIEFtb3VudE9mUkFNLmgKICAgICBPU0FsbG9jYXRvci5oCiAgICAgT1NSYW5kb21Tb3VyY2Uu
aAogICAgIE93bkFycmF5UHRyLmgKQEAgLTE0OSw2ICsxNTAsNyBAQCBTRVQoV1RGX1NPVVJDRVMK
ICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE9TUmFuZG9tU291cmNlLmNwcAogICAgIE51bWJl
ck9mQ29yZXMuY3BwCisgICAgQW1vdW50T2ZSQU0uY3BwCiAgICAgUGFnZUFsbG9jYXRpb25BbGln
bmVkLmNwcAogICAgIFBhZ2VCbG9jay5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcApJ
bmRleDogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDExNzg2MykKKysrIFNvdXJjZS9XVEYv
d3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgVHlw
ZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lkKgogbmFtZXNwYWNlIFdURiB7CiAK
IHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0Oworc3RhdGljIGNvbnN0IHNpemVfdCBNQiA9
IDEwMjQgKiAxMDI0OwogCiBpbmxpbmUgYm9vbCBpc1BvaW50ZXJBbGlnbmVkKHZvaWQqIHApCiB7
CkBAIC0zMDQsNiArMzA1LDcgQEAgaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5v
dE51bAogfQogCiB1c2luZyBXVEY6OktCOwordXNpbmcgV1RGOjpNQjsKIHVzaW5nIFdURjo6aXNQ
b2ludGVyQWxpZ25lZDsKIHVzaW5nIFdURjo6aXM4Qnl0ZUFsaWduZWQ7CiB1c2luZyBXVEY6OmJp
bmFyeVNlYXJjaDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143193</attachid>
            <date>2012-05-21 22:54:19 -0700</date>
            <delta_ts>2012-05-22 00:08:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120521225418.patch</filename>
            <type>text/plain</type>
            <size>22590</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3OTA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDExLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDUtMjEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBkb21pbmF0b3Jz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgkocmV2aXNpb24gMTE3OTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtp
bmcgY29weSkKQEAgLTEwMiwxMyArMTAyLDExIEBAIEVYUE9SVFMKICAgICA/Y29udmVydFVURjE2
VG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJfV1BCX1dQ
QVBBRFBBRF9OQFoKICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRD
b252ZXJzaW9uUmVzdWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEpT
RnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJA
SEFCVlVTdHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2ljQDJAM0BaCi0gICAgP2NyZWF0ZUBKU0ds
b2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBA
VzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJAQFoKICAgICA/Y3JlYXRlQE9wYXF1ZUpT
U3RyaW5nQEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVlSlNTdHJpbmdAQEBXVEZAQEFCVlVTdHJp
bmdASlNDQEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERh
dGFAMkBBQlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0AyQEBaCiAgICAgP2NyZWF0ZUVtcHR5U3Ry
aW5nQFNtYWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBAWgogICAgID9jcmVh
dGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFA
QFoKICAgICA/Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQVBBVkpT
T2JqZWN0QDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKLSAgICA/Y3JlYXRlTGVha2VkQEpTR2xvYmFs
RGF0YUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRo
cmVhZFN0YWNrVHlwZUAyQFc0SGVhcFNpemVAMkBAWgogICAgID9jcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgogICAgID9j
cmVhdGVSYW5nZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVT
dHJpbmdAMUBAWgogICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RA
MUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMTc5MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUg
IlRyYWNpbmcuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDx3dGYvQW1vdW50T2ZSQU0uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtNDUsMTQgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSB7IAogCi0j
aWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLXN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VIZWFw
U2l6ZSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgY29u
c3Qgc2l6ZV90IGxhcmdlSGVhcFNpemUgPSA4ICogMTAyNCAqIDEwMjQ7Ci0jZWxzZQotc3RhdGlj
IGNvbnN0IHNpemVfdCBsYXJnZUhlYXBTaXplID0gNTEyICogMTAyNDsKLSNlbmRpZgotc3RhdGlj
IGNvbnN0IHNpemVfdCBzbWFsbEhlYXBTaXplID0gNTEyICogMTAyNDsKK3N0YXRpYyBjb25zdCBz
aXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDMyICogTUI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxs
SGVhcFNpemUgPSAxICogTUI7CiAKICNpZiBFTkFCTEUoR0NfTE9HR0lORykKICNpZiBDT01QSUxF
UihDTEFORykKQEAgLTE0OCwxNCArMTQyLDIyIEBAIHN0cnVjdCBHQ0NvdW50ZXIgewogI2RlZmlu
ZSBHQ0NPVU5URVIobmFtZSwgdmFsdWUpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAot
c3RhdGljIHNpemVfdCBoZWFwU2l6ZUZvckhpbnQoSGVhcFNpemUgaGVhcFNpemUpCitzdGF0aWMg
aW5saW5lIHNpemVfdCBtaW5IZWFwU2l6ZShIZWFwVHlwZSBoZWFwVHlwZSwgc2l6ZV90IHJhbVNp
emUpCiB7Ci0gICAgaWYgKGhlYXBTaXplID09IExhcmdlSGVhcCkKLSAgICAgICAgcmV0dXJuIGxh
cmdlSGVhcFNpemU7Ci0gICAgQVNTRVJUKGhlYXBTaXplID09IFNtYWxsSGVhcCk7CisgICAgaWYg
KGhlYXBUeXBlID09IExhcmdlSGVhcCkKKyAgICAgICAgcmV0dXJuIG1pbihsYXJnZUhlYXBTaXpl
LCByYW1TaXplIC8gNCk7CiAgICAgcmV0dXJuIHNtYWxsSGVhcFNpemU7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgc2l6ZV90IHByb3BvcnRpb25hbEhlYXBTaXplKHNpemVfdCBoZWFwU2l6ZSwgc2l6ZV90
IHJhbVNpemUpCit7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDQpCisgICAgICAgIHJl
dHVybiAyICogaGVhcFNpemU7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDIpCisgICAg
ICAgIHJldHVybiAxLjUgKiBoZWFwU2l6ZTsKKyAgICByZXR1cm4gMS4yNSAqIGhlYXBTaXplOwor
fQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUo
KQogewogICAgIGlmICghSlNMb2NrOjpsb2NrQ291bnQoKSkKQEAgLTIzMCw5ICsyMzIsMTAgQEAg
aW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBSZWNvcmRUeQogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBT
aXplIGhlYXBTaXplKQotICAgIDogbV9oZWFwU2l6ZShoZWFwU2l6ZSkKLSAgICAsIG1fbWluQnl0
ZXNQZXJDeWNsZShoZWFwU2l6ZUZvckhpbnQoaGVhcFNpemUpKQorSGVhcDo6SGVhcChKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEhlYXBUeXBlIGhlYXBUeXBlKQorICAgIDogbV9oZWFwVHlwZSho
ZWFwVHlwZSkKKyAgICAsIG1fcmFtU2l6ZShXVEY6OmFtb3VudE9mUkFNKCkpCisgICAgLCBtX21p
bkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlwZSwgbV9yYW1TaXplKSkKICAgICAs
IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdCht
X21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkKDApCkBAIC03MjIsMTUg
KzcyNSwxNSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAg
ICAgIG1fYnl0ZXNBYmFuZG9uZWQgPSAwOwogICAgIH0KIAotICAgIC8vIFRvIGF2b2lkIHBhdGhv
bG9naWNhbCBHQyBjaHVybiBpbiBsYXJnZSBoZWFwcywgd2Ugc2V0IHRoZSBuZXcgYWxsb2NhdGlv
biAKLSAgICAvLyBsaW1pdCB0byBiZSB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLiBUaGlz
IGhldXJpc3RpYyAKLSAgICAvLyBpcyBhIGJpdCBhcmJpdHJhcnkuIFVzaW5nIHRoZSBjdXJyZW50
IHNpemUgb2YgdGhlIGhlYXAgYWZ0ZXIgdGhpcyAKLSAgICAvLyBjb2xsZWN0aW9uIGdpdmVzIHVz
IGEgMlggbXVsdGlwbGllciwgd2hpY2ggaXMgYSAxOjEgKGhlYXAgc2l6ZSA6Ci0gICAgLy8gbmV3
IGJ5dGVzIGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5kIHNlZW1zIHRvIHdvcmsgd2VsbCBpbiBi
ZW5jaG1hcmtzLgotICAgIHNpemVfdCBuZXdTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBjdXJy
ZW50SGVhcFNpemUgPSBzaXplKCk7CiAgICAgaWYgKGZ1bGxHQykgewotICAgICAgICBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0ID0gbmV3U2l6ZTsKLSAgICAgICAgbV9ieXRlc0FsbG9jYXRlZExpbWl0
ID0gbWF4KG5ld1NpemUsIG1fbWluQnl0ZXNQZXJDeWNsZSk7CisgICAgICAgIG1fc2l6ZUFmdGVy
TGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisKKyAgICAgICAgLy8gVG8gYXZvaWQgcGF0
aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVhcHMsIHdl
IHNldAorICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQgYmFzZWQgb24gdGhlIGN1
cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCisgICAgICAgIC8vIGZpeGVkIG1pbmltdW0u
CisgICAgICAgIHNpemVfdCBtYXhIZWFwU2l6ZSA9IG1heChtaW5IZWFwU2l6ZShtX2hlYXBUeXBl
LCBtX3JhbVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShjdXJyZW50SGVhcFNpemUsIG1fcmFt
U2l6ZSkpOworICAgICAgICBtX2J5dGVzQWxsb2NhdGVkTGltaXQgPSBtYXhIZWFwU2l6ZSAtIGN1
cnJlbnRIZWFwU2l6ZTsKICAgICB9CiAgICAgbV9ieXRlc0FsbG9jYXRlZCA9IDA7CiAgICAgZG91
YmxlIGxhc3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMTc5MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBlbnVtIE9wZXJhdGlvbkluUHJvZ3Jlc3MgeyBOb09wZXJhdGlvbiwgQWxs
b2NhdGlvbiwgQ29sbGVjdGlvbiB9OwogCi0gICAgLy8gSGVhcCBzaXplIGhpbnQuCi0gICAgZW51
bSBIZWFwU2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CisgICAgZW51bSBIZWFwVHlwZSB7
IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CiAKICAgICBjbGFzcyBIZWFwIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSGVhcCk7CkBAIC05MCw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNDZWxs
Kik7CiAgICAgICAgIHN0YXRpYyB1aW50OF90KiBhZGRyZXNzT2ZDYXJkRm9yKEpTQ2VsbCopOwog
Ci0gICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOworICAgICAgICBIZWFwKEpT
R2xvYmFsRGF0YSosIEhlYXBUeXBlKTsKICAgICAgICAgfkhlYXAoKTsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0xOTcsNyArMTk2
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxl
KCk7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwogCi0gICAgICAg
IGNvbnN0IEhlYXBTaXplIG1faGVhcFNpemU7CisgICAgICAgIGNvbnN0IEhlYXBUeXBlIG1faGVh
cFR5cGU7CisgICAgICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNp
emVfdCBtX21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RD
b2xsZWN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHJldmlzaW9uIDExNzkwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw4ICsxMTgsOCBA
QCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsCiB9CiAjZW5kaWYKIAot
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUs
IFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplIGhlYXBTaXplKQotICAg
IDogaGVhcCh0aGlzLCBoZWFwU2l6ZSkKK0pTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tUeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKKyAgICA6IGhlYXAodGhpcywgaGVhcFR5cGUpCiAgICAgLCBn
bG9iYWxEYXRhVHlwZShnbG9iYWxEYXRhVHlwZSkKICAgICAsIGNsaWVudERhdGEoMCkKICAgICAs
IHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCkBAIC0yOTAsMTkgKzI5MCwxOSBA
QCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8
SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFj
a1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
SlNHbG9iYWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRh
KEFQSUNvbnRleHRHcm91cCwgdHlwZSwgaGVhcFNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEpTR2xvYmFsRGF0YShBUElDb250ZXh0R3JvdXAsIHR5cGUsIGhlYXBUeXBlKSk7CiB9CiAK
LVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRTdGFj
a1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
SlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKERlZmF1bHQsIHR5
cGUsIGhlYXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0dsb2JhbERhdGEoRGVm
YXVsdCwgdHlwZSwgaGVhcFR5cGUpKTsKIH0KIAotUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpT
R2xvYmFsRGF0YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFwU2l6ZSBo
ZWFwU2l6ZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUxl
YWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZSh0eXBlLCBoZWFwU2l6ZSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFw
VHlwZSk7CiB9CiAKIGJvb2wgSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gMTE3OTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw5ICsxNzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+
IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVM
ZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0
YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUs
IEhlYXBUeXBlID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBI
ZWFwVHlwZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFs
RGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFR5cGUgPSBTbWFs
bEhlYXApOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNHbG9iYWxEYXRhKCk7CiAKICAg
ICAgICAgdm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5l
VGhyZWFkcygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7IH0KQEAgLTQwNSw3ICs0
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAgICAgSlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKKyAgICAgICAgSlNH
bG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlKTsKICAg
ICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAg
ICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYm
IChFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMTc5MDcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDEyLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0
byBzeXN0ZW0gUkFNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NzAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBtZWFzdXJpbmcgc3lzdGVtIFJBTS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLmd5cGk6CisgICAg
ICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0Ftb3VudE9m
UkFNLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpjb21wdXRlQW1v
dW50T2ZSQU0pOgorICAgICAgICAoV1RGOjphbW91bnRPZlJBTSk6CisgICAgICAgICogd3RmL0Ft
b3VudE9mUkFNLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGKToK
KwogMjAxMi0wNS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBjb21wdXRlIGRvbWluYXRvcnMKSW5kZXg6IFNvdXJjZS9X
VEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDExNzkwNykKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQCB3dGZfc291cmNlcyArPSBc
CiAgICAgU291cmNlL1dURi93dGYvTnVsbFB0ci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9OdW1i
ZXJPZkNvcmVzLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5oIFwKKyAg
ICBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL0Ft
b3VudE9mUkFNLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvT1NS
YW5kb21Tb3VyY2UuaCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvV1RGLmd5cGkJKHJldmlzaW9uIDExNzkwNykKKysrIFNvdXJjZS9XVEYvV1RG
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOCBAQAogICAgICAgICAgICAgJ3d0
Zi9OdWxsUHRyLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bWJlck9mQ29yZXMuY3BwJywKICAg
ICAgICAgICAgICd3dGYvTnVtYmVyT2ZDb3Jlcy5oJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50
T2ZSQU0uY3BwJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50T2ZSQU0uaCcsCiAgICAgICAgICAg
ICAnd3RmL09TQWxsb2NhdG9yUG9zaXguY3BwJywKICAgICAgICAgICAgICd3dGYvT1NBbGxvY2F0
b3JXaW4uY3BwJywKICAgICAgICAgICAgICd3dGYvT1NSYW5kb21Tb3VyY2UuY3BwJywKSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5wcm8JKHJl
dmlzaW9uIDExNzkwNykKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29ya2luZyBjb3B5KQpAQCAt
ODQsNiArODQsNyBAQCBIRUFERVJTICs9IFwKICAgICBOb3RGb3VuZC5oIFwKICAgICBOdWxsUHRy
LmggXAogICAgIE51bWJlck9mQ29yZXMuaCBcCisgICAgQW1vdW50T2ZSQU0uaCBcCiAgICAgT1NB
bGxvY2F0b3IuaCBcCiAgICAgT1NSYW5kb21Tb3VyY2UuaCBcCiAgICAgT3duQXJyYXlQdHIuaCBc
CkBAIC0xOTEsNiArMTkyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgTWV0YUFsbG9jYXRvci5jcHAg
XAogICAgIE51bGxQdHIuY3BwIFwKICAgICBOdW1iZXJPZkNvcmVzLmNwcCBcCisgICAgQW1vdW50
T2ZSQU0uY3BwIFwKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIHF0L01haW5UaHJlYWRR
dC5jcHAgXAogICAgIHF0L1N0cmluZ1F0LmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3By
b2ovV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZj
cHJvagkocmV2aXNpb24gMTE3OTA3KQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTkwOSw2ICs5MDksMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgog
CQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcQW1vdW50T2ZSQU0uY3BwIgorCQkJPgor
CQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxBbW91bnRPZlJBTS5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxOdW1i
ZXJPZkNvcmVzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTc5MDcpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTE0
M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEg
LyogQW1vdW50T2ZSQU0uY3BwICovOyB9OworCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTRGMDMyMUJDMTU2
QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5Lmgg
Ki87IH07CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3NkRCRDcxNTE4MTZFNTAw
REFEQjk1IC8qIFBsYXRmb3JtLmggKi87IH07CkBAIC0yNDIsNiArMjQ0LDggQEAKIC8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KKwkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFtb3VudE9mUkFNLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3Vu
dE9mUkFNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFtb3VudE9mUkFNLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAv
KiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RC
aXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYwMzIxQkIxNTZBQThE
MTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJpdEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlC
ODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGli
V1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01MzgsNiArNTQy
LDggQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIEFtb3VudE9mUkFNLmNwcCAqLywKKwkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25t
ZW50LmggKi8sCiAJCQkJQThBNDcyNTUxNTFBODI1QTAwNDEyM0ZGIC8qIEFsd2F5c0lubGluZS5o
ICovLAogCQkJCUE4QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8s
CkBAIC0xMDMwLDYgKzEwMzYsNyBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBW
TVRhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIz
RkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUx
NEEgLyogQW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUM1MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTExNzYsNiArMTE4Myw3IEBA
CiAJCQkJQThBNDc0NzcxNTFBODI1QjAwNDEyM0ZGIC8qIFVSTEVzY2FwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIEFt
b3VudE9mUkFNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dURi93dGYvQW1vdW50
T2ZSQU0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBbW91bnRPZlJBTS5oIgorCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaWYg
T1MoREFSV0lOKQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbGlmIE9TKFVOSVgpCisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgor
I2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzeXMvc3lzcGFnZS5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXVEYgeworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGFtb3VudE9mUkFNR3Vlc3Mg
PSAxMjggKiBNQjsKKworc3RhdGljIHNpemVfdCBjb21wdXRlQW1vdW50T2ZSQU0oKQoreworI2lm
IE9TKERBUldJTikKKyAgICBpbnQgbWliWzJdOworICAgIGludDY0X3QgYW1vdW50T2ZSQU07Cisg
ICAgc2l6ZV90IGxlbmd0aDsKKworICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBtaWJbMV0gPSBI
V19NRU1TSVpFOworICAgIGxlbmd0aCA9IHNpemVvZihpbnQ2NF90KTsKKyAgICBpbnQgc3lzY3Rs
UmVzdWx0ID0gc3lzY3RsKG1pYiwgMiwgJmFtb3VudE9mUkFNLCAmbGVuZ3RoLCAwLCAwKTsKKyAg
ICBpZiAoc3lzY3RsUmVzdWx0ID09IC0xKQorICAgICAgICByZXR1cm4gYW1vdW50T2ZSQU1HdWVz
czsKKyAgICByZXR1cm4gYW1vdW50T2ZSQU07CisjZWxpZiBPUyhVTklYKQorICAgIGxvbmcgcGFn
ZXMgPSBzeXNjb25mKF9TQ19QSFlTX1BBR0VTKTsKKyAgICBsb25nIHBhZ2VTaXplID0gc3lzY29u
ZihfU0NfUEFHRV9TSVpFKTsKKyAgICBpZiAocGFnZXMgPT0gLTEgfHwgcGFnZVNpemUgPT0gLTEp
CisgICAgICAgIHJldHVybiBhbW91bnRPZlJBTUd1ZXNzOworICAgIHJldHVybiBwYWdlcyAqIHBh
Z2VTaXplOworI2VsaWYgT1MoV0lORE9XUykKKyAgICBNRU1PUllTVEFUVVNFWCBzdGF0dXM7Cisg
ICAgc3RhdHVzLmR3TGVuZ3RoID0gc2l6ZW9mKHN0YXR1cyk7CisgICAgYm9vbCByZXN1bHQgPSBH
bG9iYWxNZW1vcnlTdGF0dXNFeCgmc3RhdHVzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIGFtb3VudE9mUkFNR3Vlc3M7CisgICAgcmV0dXJuIHN0YXR1cy51bGxUb3RhbFBoeXM7
CisjZW5kaWYKK30KKworc2l6ZV90IGFtb3VudE9mUkFNKCkKK3sKKyAgICBzdGF0aWMgc2l6ZV90
IGFtb3VudE9mUkFNID0gY29tcHV0ZUFtb3VudE9mUkFNKCk7CisgICAgcmV0dXJuIGFtb3VudE9m
UkFNOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Ftb3Vu
dE9mUkFNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQW1vdW50T2ZSQU0uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFtb3VudE9mUkFNX2gKKyNkZWZp
bmUgQW1vdW50T2ZSQU1faAorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBhbW91bnRPZlJBTSgpOworCit9CisKKyNlbmRpZiAvLyBBbW91bnRPZlJBTV9oCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE3OTA3KQorKysgU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgU0VUKFdU
Rl9IRUFERVJTCiAgICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaAogICAgIE51bWJlck9mQ29y
ZXMuaAorICAgIEFtb3VudE9mUkFNLmgKICAgICBPU0FsbG9jYXRvci5oCiAgICAgT1NSYW5kb21T
b3VyY2UuaAogICAgIE93bkFycmF5UHRyLmgKQEAgLTE0OSw2ICsxNTAsNyBAQCBTRVQoV1RGX1NP
VVJDRVMKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE9TUmFuZG9tU291cmNlLmNwcAogICAg
IE51bWJlck9mQ29yZXMuY3BwCisgICAgQW1vdW50T2ZSQU0uY3BwCiAgICAgUGFnZUFsbG9jYXRp
b25BbGlnbmVkLmNwcAogICAgIFBhZ2VCbG9jay5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmlj
LmNwcApJbmRleDogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDExNzkwNykKKysrIFNvdXJj
ZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcg
QEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lkKgogbmFtZXNwYWNlIFdU
RiB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0Oworc3RhdGljIGNvbnN0IHNpemVf
dCBNQiA9IDEwMjQgKiAxMDI0OwogCiBpbmxpbmUgYm9vbCBpc1BvaW50ZXJBbGlnbmVkKHZvaWQq
IHApCiB7CkBAIC0zMDQsNiArMzA1LDcgQEAgaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIE5vdE51bAogfQogCiB1c2luZyBXVEY6OktCOwordXNpbmcgV1RGOjpNQjsKIHVzaW5nIFdU
Rjo6aXNQb2ludGVyQWxpZ25lZDsKIHVzaW5nIFdURjo6aXM4Qnl0ZUFsaWduZWQ7CiB1c2luZyBX
VEY6OmJpbmFyeVNlYXJjaDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143205</attachid>
            <date>2012-05-22 00:08:47 -0700</date>
            <delta_ts>2012-05-22 10:16:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120522000846.patch</filename>
            <type>text/plain</type>
            <size>22534</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3OTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDExLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDUtMjEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBkb21pbmF0b3Jz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgkocmV2aXNpb24gMTE3OTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtp
bmcgY29weSkKQEAgLTEwMiwxMyArMTAyLDExIEBAIEVYUE9SVFMKICAgICA/Y29udmVydFVURjE2
VG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJfV1BCX1dQ
QVBBRFBBRF9OQFoKICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRD
b252ZXJzaW9uUmVzdWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEpT
RnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJA
SEFCVlVTdHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2ljQDJAM0BaCi0gICAgP2NyZWF0ZUBKU0ds
b2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBA
VzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJAQFoKICAgICA/Y3JlYXRlQE9wYXF1ZUpT
U3RyaW5nQEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVlSlNTdHJpbmdAQEBXVEZAQEFCVlVTdHJp
bmdASlNDQEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERh
dGFAMkBBQlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0AyQEBaCiAgICAgP2NyZWF0ZUVtcHR5U3Ry
aW5nQFNtYWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBAWgogICAgID9jcmVh
dGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFA
QFoKICAgICA/Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQVBBVkpT
T2JqZWN0QDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKLSAgICA/Y3JlYXRlTGVha2VkQEpTR2xvYmFs
RGF0YUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRo
cmVhZFN0YWNrVHlwZUAyQFc0SGVhcFNpemVAMkBAWgogICAgID9jcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgogICAgID9j
cmVhdGVSYW5nZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVT
dHJpbmdAMUBAWgogICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RA
MUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMTc5MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUg
IlRyYWNpbmcuaCIKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDx3dGYvQW1vdW50T2ZSQU0uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtNDUsMTQgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSB7IAogCi0j
aWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLXN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VIZWFw
U2l6ZSA9IDE2ICogMTAyNCAqIDEwMjQ7Ci0jZWxpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgY29u
c3Qgc2l6ZV90IGxhcmdlSGVhcFNpemUgPSA4ICogMTAyNCAqIDEwMjQ7Ci0jZWxzZQotc3RhdGlj
IGNvbnN0IHNpemVfdCBsYXJnZUhlYXBTaXplID0gNTEyICogMTAyNDsKLSNlbmRpZgotc3RhdGlj
IGNvbnN0IHNpemVfdCBzbWFsbEhlYXBTaXplID0gNTEyICogMTAyNDsKK3N0YXRpYyBjb25zdCBz
aXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDMyICogTUI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxs
SGVhcFNpemUgPSAxICogTUI7CiAKICNpZiBFTkFCTEUoR0NfTE9HR0lORykKICNpZiBDT01QSUxF
UihDTEFORykKQEAgLTE0OCwxNCArMTQyLDIyIEBAIHN0cnVjdCBHQ0NvdW50ZXIgewogI2RlZmlu
ZSBHQ0NPVU5URVIobmFtZSwgdmFsdWUpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCiAjZW5kaWYKIAot
c3RhdGljIHNpemVfdCBoZWFwU2l6ZUZvckhpbnQoSGVhcFNpemUgaGVhcFNpemUpCitzdGF0aWMg
aW5saW5lIHNpemVfdCBtaW5IZWFwU2l6ZShIZWFwVHlwZSBoZWFwVHlwZSwgc2l6ZV90IHJhbVNp
emUpCiB7Ci0gICAgaWYgKGhlYXBTaXplID09IExhcmdlSGVhcCkKLSAgICAgICAgcmV0dXJuIGxh
cmdlSGVhcFNpemU7Ci0gICAgQVNTRVJUKGhlYXBTaXplID09IFNtYWxsSGVhcCk7CisgICAgaWYg
KGhlYXBUeXBlID09IExhcmdlSGVhcCkKKyAgICAgICAgcmV0dXJuIG1pbihsYXJnZUhlYXBTaXpl
LCByYW1TaXplIC8gNCk7CiAgICAgcmV0dXJuIHNtYWxsSGVhcFNpemU7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgc2l6ZV90IHByb3BvcnRpb25hbEhlYXBTaXplKHNpemVfdCBoZWFwU2l6ZSwgc2l6ZV90
IHJhbVNpemUpCit7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDQpCisgICAgICAgIHJl
dHVybiAyICogaGVhcFNpemU7CisgICAgaWYgKGhlYXBTaXplIDwgcmFtU2l6ZSAvIDIpCisgICAg
ICAgIHJldHVybiAxLjUgKiBoZWFwU2l6ZTsKKyAgICByZXR1cm4gMS4yNSAqIGhlYXBTaXplOwor
fQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUo
KQogewogICAgIGlmICghSlNMb2NrOjpsb2NrQ291bnQoKSkKQEAgLTIzMCw5ICsyMzIsMTAgQEAg
aW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBSZWNvcmRUeQogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBT
aXplIGhlYXBTaXplKQotICAgIDogbV9oZWFwU2l6ZShoZWFwU2l6ZSkKLSAgICAsIG1fbWluQnl0
ZXNQZXJDeWNsZShoZWFwU2l6ZUZvckhpbnQoaGVhcFNpemUpKQorSGVhcDo6SGVhcChKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEhlYXBUeXBlIGhlYXBUeXBlKQorICAgIDogbV9oZWFwVHlwZSho
ZWFwVHlwZSkKKyAgICAsIG1fcmFtU2l6ZShXVEY6OmFtb3VudE9mUkFNKCkpCisgICAgLCBtX21p
bkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlwZSwgbV9yYW1TaXplKSkKICAgICAs
IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdCht
X21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkKDApCkBAIC03MjIsMTUg
KzcyNSwxNSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAg
ICAgIG1fYnl0ZXNBYmFuZG9uZWQgPSAwOwogICAgIH0KIAotICAgIC8vIFRvIGF2b2lkIHBhdGhv
bG9naWNhbCBHQyBjaHVybiBpbiBsYXJnZSBoZWFwcywgd2Ugc2V0IHRoZSBuZXcgYWxsb2NhdGlv
biAKLSAgICAvLyBsaW1pdCB0byBiZSB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLiBUaGlz
IGhldXJpc3RpYyAKLSAgICAvLyBpcyBhIGJpdCBhcmJpdHJhcnkuIFVzaW5nIHRoZSBjdXJyZW50
IHNpemUgb2YgdGhlIGhlYXAgYWZ0ZXIgdGhpcyAKLSAgICAvLyBjb2xsZWN0aW9uIGdpdmVzIHVz
IGEgMlggbXVsdGlwbGllciwgd2hpY2ggaXMgYSAxOjEgKGhlYXAgc2l6ZSA6Ci0gICAgLy8gbmV3
IGJ5dGVzIGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5kIHNlZW1zIHRvIHdvcmsgd2VsbCBpbiBi
ZW5jaG1hcmtzLgotICAgIHNpemVfdCBuZXdTaXplID0gc2l6ZSgpOworICAgIHNpemVfdCBjdXJy
ZW50SGVhcFNpemUgPSBzaXplKCk7CiAgICAgaWYgKGZ1bGxHQykgewotICAgICAgICBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0ID0gbmV3U2l6ZTsKLSAgICAgICAgbV9ieXRlc0FsbG9jYXRlZExpbWl0
ID0gbWF4KG5ld1NpemUsIG1fbWluQnl0ZXNQZXJDeWNsZSk7CisgICAgICAgIG1fc2l6ZUFmdGVy
TGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisKKyAgICAgICAgLy8gVG8gYXZvaWQgcGF0
aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVhcHMsIHdl
IHNldAorICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQgYmFzZWQgb24gdGhlIGN1
cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCisgICAgICAgIC8vIGZpeGVkIG1pbmltdW0u
CisgICAgICAgIHNpemVfdCBtYXhIZWFwU2l6ZSA9IG1heChtaW5IZWFwU2l6ZShtX2hlYXBUeXBl
LCBtX3JhbVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShjdXJyZW50SGVhcFNpemUsIG1fcmFt
U2l6ZSkpOworICAgICAgICBtX2J5dGVzQWxsb2NhdGVkTGltaXQgPSBtYXhIZWFwU2l6ZSAtIGN1
cnJlbnRIZWFwU2l6ZTsKICAgICB9CiAgICAgbV9ieXRlc0FsbG9jYXRlZCA9IDA7CiAgICAgZG91
YmxlIGxhc3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMTc5MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBlbnVtIE9wZXJhdGlvbkluUHJvZ3Jlc3MgeyBOb09wZXJhdGlvbiwgQWxs
b2NhdGlvbiwgQ29sbGVjdGlvbiB9OwogCi0gICAgLy8gSGVhcCBzaXplIGhpbnQuCi0gICAgZW51
bSBIZWFwU2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CisgICAgZW51bSBIZWFwVHlwZSB7
IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07CiAKICAgICBjbGFzcyBIZWFwIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSGVhcCk7CkBAIC05MCw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNDZWxs
Kik7CiAgICAgICAgIHN0YXRpYyB1aW50OF90KiBhZGRyZXNzT2ZDYXJkRm9yKEpTQ2VsbCopOwog
Ci0gICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOworICAgICAgICBIZWFwKEpT
R2xvYmFsRGF0YSosIEhlYXBUeXBlKTsKICAgICAgICAgfkhlYXAoKTsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCkBAIC0xOTcsNyArMTk2
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxl
KCk7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwogCi0gICAgICAg
IGNvbnN0IEhlYXBTaXplIG1faGVhcFNpemU7CisgICAgICAgIGNvbnN0IEhlYXBUeXBlIG1faGVh
cFR5cGU7CisgICAgICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNp
emVfdCBtX21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RD
b2xsZWN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHJldmlzaW9uIDExNzkxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw4ICsxMTgsOCBA
QCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsCiB9CiAjZW5kaWYKIAot
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUs
IFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplIGhlYXBTaXplKQotICAg
IDogaGVhcCh0aGlzLCBoZWFwU2l6ZSkKK0pTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tUeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKKyAgICA6IGhlYXAodGhpcywgaGVhcFR5cGUpCiAgICAgLCBn
bG9iYWxEYXRhVHlwZShnbG9iYWxEYXRhVHlwZSkKICAgICAsIGNsaWVudERhdGEoMCkKICAgICAs
IHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCkBAIC0yOTAsMTkgKzI5MCwxOSBA
QCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8
SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFj
a1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
SlNHbG9iYWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRh
KEFQSUNvbnRleHRHcm91cCwgdHlwZSwgaGVhcFNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEpTR2xvYmFsRGF0YShBUElDb250ZXh0R3JvdXAsIHR5cGUsIGhlYXBUeXBlKSk7CiB9CiAK
LVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRTdGFj
a1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
SlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKERlZmF1bHQsIHR5
cGUsIGhlYXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0dsb2JhbERhdGEoRGVm
YXVsdCwgdHlwZSwgaGVhcFR5cGUpKTsKIH0KIAotUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpT
R2xvYmFsRGF0YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFwU2l6ZSBo
ZWFwU2l6ZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUxl
YWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZSh0eXBlLCBoZWFwU2l6ZSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFw
VHlwZSk7CiB9CiAKIGJvb2wgSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gMTE3OTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw5ICsxNzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+
IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVM
ZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0
YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUs
IEhlYXBUeXBlID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBI
ZWFwVHlwZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFs
RGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFR5cGUgPSBTbWFs
bEhlYXApOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNHbG9iYWxEYXRhKCk7CiAKICAg
ICAgICAgdm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5l
VGhyZWFkcygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7IH0KQEAgLTQwNSw3ICs0
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAgICAgSlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKKyAgICAgICAgSlNH
bG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlKTsKICAg
ICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAg
ICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYm
IChFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMTc5MTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDEyLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0
byBzeXN0ZW0gUkFNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NzAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBtZWFzdXJpbmcgc3lzdGVtIFJBTS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLmd5cGk6CisgICAg
ICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0Ftb3VudE9m
UkFNLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpjb21wdXRlQW1v
dW50T2ZSQU0pOgorICAgICAgICAoV1RGOjphbW91bnRPZlJBTSk6CisgICAgICAgICogd3RmL0Ft
b3VudE9mUkFNLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGKToK
KwogMjAxMi0wNS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBjb21wdXRlIGRvbWluYXRvcnMKSW5kZXg6IFNvdXJjZS9X
VEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDExNzkxOCkKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQCB3dGZfc291cmNlcyArPSBc
CiAgICAgU291cmNlL1dURi93dGYvTnVsbFB0ci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9OdW1i
ZXJPZkNvcmVzLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5oIFwKKyAg
ICBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL0Ft
b3VudE9mUkFNLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvT1NS
YW5kb21Tb3VyY2UuaCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvV1RGLmd5cGkJKHJldmlzaW9uIDExNzkxOCkKKysrIFNvdXJjZS9XVEYvV1RG
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOCBAQAogICAgICAgICAgICAgJ3d0
Zi9OdWxsUHRyLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bWJlck9mQ29yZXMuY3BwJywKICAg
ICAgICAgICAgICd3dGYvTnVtYmVyT2ZDb3Jlcy5oJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50
T2ZSQU0uY3BwJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50T2ZSQU0uaCcsCiAgICAgICAgICAg
ICAnd3RmL09TQWxsb2NhdG9yUG9zaXguY3BwJywKICAgICAgICAgICAgICd3dGYvT1NBbGxvY2F0
b3JXaW4uY3BwJywKICAgICAgICAgICAgICd3dGYvT1NSYW5kb21Tb3VyY2UuY3BwJywKSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5wcm8JKHJl
dmlzaW9uIDExNzkxOCkKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29ya2luZyBjb3B5KQpAQCAt
ODQsNiArODQsNyBAQCBIRUFERVJTICs9IFwKICAgICBOb3RGb3VuZC5oIFwKICAgICBOdWxsUHRy
LmggXAogICAgIE51bWJlck9mQ29yZXMuaCBcCisgICAgQW1vdW50T2ZSQU0uaCBcCiAgICAgT1NB
bGxvY2F0b3IuaCBcCiAgICAgT1NSYW5kb21Tb3VyY2UuaCBcCiAgICAgT3duQXJyYXlQdHIuaCBc
CkBAIC0xOTEsNiArMTkyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgTWV0YUFsbG9jYXRvci5jcHAg
XAogICAgIE51bGxQdHIuY3BwIFwKICAgICBOdW1iZXJPZkNvcmVzLmNwcCBcCisgICAgQW1vdW50
T2ZSQU0uY3BwIFwKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIHF0L01haW5UaHJlYWRR
dC5jcHAgXAogICAgIHF0L1N0cmluZ1F0LmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3By
b2ovV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZj
cHJvagkocmV2aXNpb24gMTE3OTE4KQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTkwOSw2ICs5MDksMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgog
CQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcQW1vdW50T2ZSQU0uY3BwIgorCQkJPgor
CQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxBbW91bnRPZlJBTS5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxOdW1i
ZXJPZkNvcmVzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTc5MTgpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTE0
M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEg
LyogQW1vdW50T2ZSQU0uY3BwICovOyB9OworCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTRGMDMyMUJDMTU2
QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5Lmgg
Ki87IH07CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3NkRCRDcxNTE4MTZFNTAw
REFEQjk1IC8qIFBsYXRmb3JtLmggKi87IH07CkBAIC0yNDIsNiArMjQ0LDggQEAKIC8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KKwkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFtb3VudE9mUkFNLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3Vu
dE9mUkFNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFtb3VudE9mUkFNLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAv
KiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RC
aXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYwMzIxQkIxNTZBQThE
MTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJpdEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlC
ODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGli
V1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01MzgsNiArNTQy
LDggQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIEFtb3VudE9mUkFNLmNwcCAqLywKKwkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25t
ZW50LmggKi8sCiAJCQkJQThBNDcyNTUxNTFBODI1QTAwNDEyM0ZGIC8qIEFsd2F5c0lubGluZS5o
ICovLAogCQkJCUE4QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8s
CkBAIC0xMDMwLDYgKzEwMzYsNyBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBW
TVRhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIz
RkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUx
NEEgLyogQW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUM1MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTExNzYsNiArMTE4Myw3IEBA
CiAJCQkJQThBNDc0NzcxNTFBODI1QjAwNDEyM0ZGIC8qIFVSTEVzY2FwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIEFt
b3VudE9mUkFNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dURi93dGYvQW1vdW50
T2ZSQU0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBbW91bnRPZlJBTS5oIgorCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaWYg
T1MoREFSV0lOKQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbGlmIE9TKFVOSVgpCisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgor
CituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGNvbnN0IHNpemVfdCBhbW91bnRPZlJBTUd1ZXNz
ID0gMTI4ICogTUI7CisKK3N0YXRpYyBzaXplX3QgY29tcHV0ZUFtb3VudE9mUkFNKCkKK3sKKyNp
ZiBPUyhEQVJXSU4pCisgICAgaW50IG1pYlsyXTsKKyAgICBpbnQ2NF90IGFtb3VudE9mUkFNOwor
ICAgIHNpemVfdCBsZW5ndGg7CisKKyAgICBtaWJbMF0gPSBDVExfSFc7CisgICAgbWliWzFdID0g
SFdfTUVNU0laRTsKKyAgICBsZW5ndGggPSBzaXplb2YoaW50NjRfdCk7CisgICAgaW50IHN5c2N0
bFJlc3VsdCA9IHN5c2N0bChtaWIsIDIsICZhbW91bnRPZlJBTSwgJmxlbmd0aCwgMCwgMCk7Cisg
ICAgaWYgKHN5c2N0bFJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGFtb3VudE9mUkFNR3Vl
c3M7CisgICAgcmV0dXJuIGFtb3VudE9mUkFNOworI2VsaWYgT1MoVU5JWCkKKyAgICBsb25nIHBh
Z2VzID0gc3lzY29uZihfU0NfUEhZU19QQUdFUyk7CisgICAgbG9uZyBwYWdlU2l6ZSA9IHN5c2Nv
bmYoX1NDX1BBR0VfU0laRSk7CisgICAgaWYgKHBhZ2VzID09IC0xIHx8IHBhZ2VTaXplID09IC0x
KQorICAgICAgICByZXR1cm4gYW1vdW50T2ZSQU1HdWVzczsKKyAgICByZXR1cm4gcGFnZXMgKiBw
YWdlU2l6ZTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgTUVNT1JZU1RBVFVTRVggc3RhdHVzOwor
ICAgIHN0YXR1cy5kd0xlbmd0aCA9IHNpemVvZihzdGF0dXMpOworICAgIGJvb2wgcmVzdWx0ID0g
R2xvYmFsTWVtb3J5U3RhdHVzRXgoJnN0YXR1cyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
IHJldHVybiBhbW91bnRPZlJBTUd1ZXNzOworICAgIHJldHVybiBzdGF0dXMudWxsVG90YWxQaHlz
OworI2VuZGlmCit9CisKK3NpemVfdCBhbW91bnRPZlJBTSgpCit7CisgICAgc3RhdGljIHNpemVf
dCBhbW91bnRPZlJBTSA9IGNvbXB1dGVBbW91bnRPZlJBTSgpOworICAgIHJldHVybiBhbW91bnRP
ZlJBTTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9BbW91
bnRPZlJBTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbW91bnRPZlJBTV9oCisjZGVm
aW5lIEFtb3VudE9mUkFNX2gKKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgYW1vdW50T2ZSQU0oKTsKKworfQorCisjZW5kaWYgLy8gQW1vdW50T2ZSQU1faApJ
bmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExNzkxOCkKKysrIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIFNFVChX
VEZfSEVBREVSUwogICAgIE5vdEZvdW5kLmgKICAgICBOdWxsUHRyLmgKICAgICBOdW1iZXJPZkNv
cmVzLmgKKyAgICBBbW91bnRPZlJBTS5oCiAgICAgT1NBbGxvY2F0b3IuaAogICAgIE9TUmFuZG9t
U291cmNlLmgKICAgICBPd25BcnJheVB0ci5oCkBAIC0xNDksNiArMTUwLDcgQEAgU0VUKFdURl9T
T1VSQ0VTCiAgICAgTWV0YUFsbG9jYXRvci5jcHAKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAKICAg
ICBOdW1iZXJPZkNvcmVzLmNwcAorICAgIEFtb3VudE9mUkFNLmNwcAogICAgIFBhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5jcHAKICAgICBQYWdlQmxvY2suY3BwCiAgICAgUGFyYWxsZWxKb2JzR2VuZXJp
Yy5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiAxMTc5MTgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3
IEBAIFR5cGVQdHIgcmVpbnRlcnByZXRfY2FzdF9wdHIoY29uc3Qgdm9pZCoKIG5hbWVzcGFjZSBX
VEYgewogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IEtCID0gMTAyNDsKK3N0YXRpYyBjb25zdCBzaXpl
X3QgTUIgPSAxMDI0ICogMTAyNDsKIAogaW5saW5lIGJvb2wgaXNQb2ludGVyQWxpZ25lZCh2b2lk
KiBwKQogewpAQCAtMzA0LDYgKzMwNSw3IEBAIGlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCBOb3ROdWwKIH0KIAogdXNpbmcgV1RGOjpLQjsKK3VzaW5nIFdURjo6TUI7CiB1c2luZyBX
VEY6OmlzUG9pbnRlckFsaWduZWQ7CiB1c2luZyBXVEY6OmlzOEJ5dGVBbGlnbmVkOwogdXNpbmcg
V1RGOjpiaW5hcnlTZWFyY2g7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143323</attachid>
            <date>2012-05-22 10:16:42 -0700</date>
            <delta_ts>2012-05-22 11:15:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87039-20120522101655.patch</filename>
            <type>text/plain</type>
            <size>22762</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3OTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDExLTA1LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgR0MgYWxsb2NhdGlvbiB0cmlnZ2VyIHNob3VsZCBiZSB0dW5lZCB0byBzeXN0ZW0gUkFNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaGVscHMg
YXZvaWQgT09NIGNyYXNoZXMgb24gc21hbGwgcGxhdGZvcm1zLCBhbmQgaGVscHMgYXZvaWQgInRv
byBtdWNoIEdDIgorICAgICAgICBwZXJmb3JtYW5jZSBpc3N1ZXMgb24gYmlnIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKEhlYXApOiBHQyBiYWxhbmNlcyBiZXR3ZWVuIGEgZml4ZWQgbWluaW11bSBhbmQgYSBw
cm9wb3J0aW9uYWwgbXVsdGlwbGllciwKKyAgICAgICAgd2hpY2ggYXJlIGxpbWl0ZWQgYmFzZWQg
b24gc3lzdGVtIFJBTS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2JhbERh
dGEpOiBSZW5hbWVkIEhlYXBTaXplIHRvIEhlYXBUeXBlIGJlY2F1c2UgdGhlIGV4YWN0IHNpemUg
aXMKKyAgICAgICAgaW5mbHVlbmNlZCBieSB0aGUgaGVhcCB0eXBlLCBidXQgbm90IGRldGVybWlu
ZWQgYnkgaXQuCisKIDIwMTItMDUtMjEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBkb21pbmF0b3Jz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgkocmV2aXNpb24gMTE3OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtp
bmcgY29weSkKQEAgLTEwMiwxMyArMTAyLDEzIEBAIEVYUE9SVFMKICAgICA/Y29udmVydFVURjE2
VG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJfV1BCX1dQ
QVBBRFBBRF9OQFoKICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRD
b252ZXJzaW9uUmVzdWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEpT
RnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJA
SEFCVlVTdHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2ljQDJAM0BaCi0gICAgP2NyZWF0ZUBKU0ds
b2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBA
VzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJAQFoKKyAgICA/Y3JlYXRlQEpTR2xvYmFs
RGF0YUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRo
cmVhZFN0YWNrVHlwZUAyQFc0SGVhcFR5cGVAMkBAWgogICAgID9jcmVhdGVAT3BhcXVlSlNTdHJp
bmdAQFNBP0FWPyRQYXNzUmVmUHRyQFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0cmluZ0BK
U0NAQEBaCiAgICAgP2NyZWF0ZUBSZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAy
QEFCVlVTdHJpbmdAMkBXNFJlZ0V4cEZsYWdzQDJAQFoKICAgICA/Y3JlYXRlRW1wdHlTdHJpbmdA
U21hbGxTdHJpbmdzQEpTQ0BAQUFFWFBBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP2NyZWF0ZUVy
cm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgog
ICAgID9jcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbkBKU0NAQFlBUEFWSlNPYmpl
Y3RAMUBQQVZKU0dsb2JhbERhdGFAMUBAWgotICAgID9jcmVhdGVMZWFrZWRASlNHbG9iYWxEYXRh
QEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVkpTR2xvYmFsRGF0YUBKU0NAQEBXVEZAQFc0VGhyZWFk
U3RhY2tUeXBlQDJAVzRIZWFwU2l6ZUAyQEBaCisgICAgP2NyZWF0ZUxlYWtlZEBKU0dsb2JhbERh
dGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRUaHJl
YWRTdGFja1R5cGVAMkBXNEhlYXBUeXBlQDJAQFoKICAgICA/Y3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQFoKICAgICA/Y3Jl
YXRlUmFuZ2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3Ry
aW5nQDFAQFoKICAgICA/Y3JlYXRlUmVmZXJlbmNlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFA
UEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMTE3OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlICJU
cmFjaW5nLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8d3RmL0Ftb3VudE9mUkFNLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKLQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
QEAgLTQ1LDE0ICs0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgeyAKIAotI2lm
IENQVShYODYpIHx8IENQVShYODZfNjQpCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlSGVhcFNp
emUgPSAxNiAqIDEwMjQgKiAxMDI0OwotI2VsaWYgUExBVEZPUk0oSU9TKQotc3RhdGljIGNvbnN0
IHNpemVfdCBsYXJnZUhlYXBTaXplID0gOCAqIDEwMjQgKiAxMDI0OwotI2Vsc2UKLXN0YXRpYyBj
b25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDUxMiAqIDEwMjQ7Ci0jZW5kaWYKLXN0YXRpYyBj
b25zdCBzaXplX3Qgc21hbGxIZWFwU2l6ZSA9IDUxMiAqIDEwMjQ7CitzdGF0aWMgY29uc3Qgc2l6
ZV90IGxhcmdlSGVhcFNpemUgPSAzMiAqIE1COworc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbEhl
YXBTaXplID0gMSAqIE1COwogCiAjaWYgRU5BQkxFKEdDX0xPR0dJTkcpCiAjaWYgQ09NUElMRVIo
Q0xBTkcpCkBAIC0xNDgsMTQgKzE0MiwyMiBAQCBzdHJ1Y3QgR0NDb3VudGVyIHsKICNkZWZpbmUg
R0NDT1VOVEVSKG5hbWUsIHZhbHVlKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQogI2VuZGlmCiAKLXN0
YXRpYyBzaXplX3QgaGVhcFNpemVGb3JIaW50KEhlYXBTaXplIGhlYXBTaXplKQorc3RhdGljIGlu
bGluZSBzaXplX3QgbWluSGVhcFNpemUoSGVhcFR5cGUgaGVhcFR5cGUsIHNpemVfdCByYW1TaXpl
KQogewotICAgIGlmIChoZWFwU2l6ZSA9PSBMYXJnZUhlYXApCi0gICAgICAgIHJldHVybiBsYXJn
ZUhlYXBTaXplOwotICAgIEFTU0VSVChoZWFwU2l6ZSA9PSBTbWFsbEhlYXApOworICAgIGlmICho
ZWFwVHlwZSA9PSBMYXJnZUhlYXApCisgICAgICAgIHJldHVybiBtaW4obGFyZ2VIZWFwU2l6ZSwg
cmFtU2l6ZSAvIDQpOwogICAgIHJldHVybiBzbWFsbEhlYXBTaXplOwogfQogCitzdGF0aWMgaW5s
aW5lIHNpemVfdCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShzaXplX3QgaGVhcFNpemUsIHNpemVfdCBy
YW1TaXplKQoreworICAgIGlmIChoZWFwU2l6ZSA8IHJhbVNpemUgLyA0KQorICAgICAgICByZXR1
cm4gMiAqIGhlYXBTaXplOworICAgIGlmIChoZWFwU2l6ZSA8IHJhbVNpemUgLyAyKQorICAgICAg
ICByZXR1cm4gMS41ICogaGVhcFNpemU7CisgICAgcmV0dXJuIDEuMjUgKiBoZWFwU2l6ZTsKK30K
Kwogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0YXRlKCkK
IHsKICAgICBpZiAoIUpTTG9jazo6bG9ja0NvdW50KCkpCkBAIC0yMzAsOSArMjMyLDEwIEBAIGlu
bGluZSBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gUmVjb3JkVHkKIAogfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCiAKLUhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWFwU2l6
ZSBoZWFwU2l6ZSkKLSAgICA6IG1faGVhcFNpemUoaGVhcFNpemUpCi0gICAgLCBtX21pbkJ5dGVz
UGVyQ3ljbGUoaGVhcFNpemVGb3JIaW50KGhlYXBTaXplKSkKK0hlYXA6OkhlYXAoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBIZWFwVHlwZSBoZWFwVHlwZSkKKyAgICA6IG1faGVhcFR5cGUoaGVh
cFR5cGUpCisgICAgLCBtX3JhbVNpemUoV1RGOjphbW91bnRPZlJBTSgpKQorICAgICwgbV9taW5C
eXRlc1BlckN5Y2xlKG1pbkhlYXBTaXplKG1faGVhcFR5cGUsIG1fcmFtU2l6ZSkpCiAgICAgLCBt
X3NpemVBZnRlckxhc3RDb2xsZWN0KDApCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkTGltaXQobV9t
aW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9ieXRlc0FsbG9jYXRlZCgwKQpAQCAtNzIyLDE1ICs3
MjUsMTUgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAg
ICBtX2J5dGVzQWJhbmRvbmVkID0gMDsKICAgICB9CiAKLSAgICAvLyBUbyBhdm9pZCBwYXRob2xv
Z2ljYWwgR0MgY2h1cm4gaW4gbGFyZ2UgaGVhcHMsIHdlIHNldCB0aGUgbmV3IGFsbG9jYXRpb24g
Ci0gICAgLy8gbGltaXQgdG8gYmUgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcC4gVGhpcyBo
ZXVyaXN0aWMgCi0gICAgLy8gaXMgYSBiaXQgYXJiaXRyYXJ5LiBVc2luZyB0aGUgY3VycmVudCBz
aXplIG9mIHRoZSBoZWFwIGFmdGVyIHRoaXMgCi0gICAgLy8gY29sbGVjdGlvbiBnaXZlcyB1cyBh
IDJYIG11bHRpcGxpZXIsIHdoaWNoIGlzIGEgMToxIChoZWFwIHNpemUgOgotICAgIC8vIG5ldyBi
eXRlcyBhbGxvY2F0ZWQpIHByb3BvcnRpb24sIGFuZCBzZWVtcyB0byB3b3JrIHdlbGwgaW4gYmVu
Y2htYXJrcy4KLSAgICBzaXplX3QgbmV3U2l6ZSA9IHNpemUoKTsKKyAgICBzaXplX3QgY3VycmVu
dEhlYXBTaXplID0gc2l6ZSgpOwogICAgIGlmIChmdWxsR0MpIHsKLSAgICAgICAgbV9zaXplQWZ0
ZXJMYXN0Q29sbGVjdCA9IG5ld1NpemU7Ci0gICAgICAgIG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdCA9
IG1heChuZXdTaXplLCBtX21pbkJ5dGVzUGVyQ3ljbGUpOworICAgICAgICBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ID0gY3VycmVudEhlYXBTaXplOworCisgICAgICAgIC8vIFRvIGF2b2lkIHBhdGhv
bG9naWNhbCBHQyBjaHVybiBpbiB2ZXJ5IHNtYWxsIGFuZCB2ZXJ5IGxhcmdlIGhlYXBzLCB3ZSBz
ZXQKKyAgICAgICAgLy8gdGhlIG5ldyBhbGxvY2F0aW9uIGxpbWl0IGJhc2VkIG9uIHRoZSBjdXJy
ZW50IHNpemUgb2YgdGhlIGhlYXAsIHdpdGggYQorICAgICAgICAvLyBmaXhlZCBtaW5pbXVtLgor
ICAgICAgICBzaXplX3QgbWF4SGVhcFNpemUgPSBtYXgobWluSGVhcFNpemUobV9oZWFwVHlwZSwg
bV9yYW1TaXplKSwgcHJvcG9ydGlvbmFsSGVhcFNpemUoY3VycmVudEhlYXBTaXplLCBtX3JhbVNp
emUpKTsKKyAgICAgICAgbV9ieXRlc0FsbG9jYXRlZExpbWl0ID0gbWF4SGVhcFNpemUgLSBjdXJy
ZW50SGVhcFNpemU7CiAgICAgfQogICAgIG1fYnl0ZXNBbGxvY2F0ZWQgPSAwOwogICAgIGRvdWJs
ZSBsYXN0R0NFbmRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTE3OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw4ICs2NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgZW51bSBPcGVyYXRpb25JblByb2dyZXNzIHsgTm9PcGVyYXRpb24sIEFsbG9j
YXRpb24sIENvbGxlY3Rpb24gfTsKIAotICAgIC8vIEhlYXAgc2l6ZSBoaW50LgotICAgIGVudW0g
SGVhcFNpemUgeyBTbWFsbEhlYXAsIExhcmdlSGVhcCB9OworICAgIGVudW0gSGVhcFR5cGUgeyBT
bWFsbEhlYXAsIExhcmdlSGVhcCB9OwogCiAgICAgY2xhc3MgSGVhcCB7CiAgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEhlYXApOwpAQCAtOTAsNyArODksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCop
OwogICAgICAgICBzdGF0aWMgdWludDhfdCogYWRkcmVzc09mQ2FyZEZvcihKU0NlbGwqKTsKIAot
ICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSosIEhlYXBTaXplKTsKKyAgICAgICAgSGVhcChKU0ds
b2JhbERhdGEqLCBIZWFwVHlwZSk7CiAgICAgICAgIH5IZWFwKCk7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKIApAQCAtMTk3LDcgKzE5Niw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgp
OwogICAgICAgICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IoKTsKIAotICAgICAgICBj
b25zdCBIZWFwU2l6ZSBtX2hlYXBTaXplOworICAgICAgICBjb25zdCBIZWFwVHlwZSBtX2hlYXBU
eXBlOworICAgICAgICBjb25zdCBzaXplX3QgbV9yYW1TaXplOwogICAgICAgICBjb25zdCBzaXpl
X3QgbV9taW5CeXRlc1BlckN5Y2xlOwogICAgICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29s
bGVjdDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCShyZXZpc2lvbiAxMTc5OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsOCArMTE4LDggQEAg
c3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbAogfQogI2VuZGlmCiAKLUpT
R2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBU
aHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKLSAgICA6
IGhlYXAodGhpcywgaGVhcFNpemUpCitKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZFN0YWNrVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCisgICAgOiBoZWFwKHRoaXMsIGhlYXBUeXBlKQogICAgICwgZ2xv
YmFsRGF0YVR5cGUoZ2xvYmFsRGF0YVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0
b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQpAQCAtMjkwLDE5ICsyOTAsMTkgQEAg
SlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPEpT
R2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tU
eXBlIHR5cGUsIEhlYXBTaXplIGhlYXBTaXplKQorUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpT
R2xvYmFsRGF0YTo6Y3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShB
UElDb250ZXh0R3JvdXAsIHR5cGUsIGhlYXBTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBKU0dsb2JhbERhdGEoQVBJQ29udGV4dEdyb3VwLCB0eXBlLCBoZWFwVHlwZSkpOwogfQogCi1Q
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tU
eXBlIHR5cGUsIEhlYXBTaXplIGhlYXBTaXplKQorUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpT
R2xvYmFsRGF0YTo6Y3JlYXRlKFRocmVhZFN0YWNrVHlwZSB0eXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShEZWZhdWx0LCB0eXBl
LCBoZWFwU2l6ZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKERlZmF1
bHQsIHR5cGUsIGhlYXBUeXBlKSk7CiB9CiAKLVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0ds
b2JhbERhdGE6OmNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVh
cFNpemUpCitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFr
ZWQoVGhyZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJldHVy
biBjcmVhdGUodHlwZSwgaGVhcFNpemUpOworICAgIHJldHVybiBjcmVhdGUodHlwZSwgaGVhcFR5
cGUpOwogfQogCiBib29sIEpTR2xvYmFsRGF0YTo6c2hhcmVkSW5zdGFuY2VFeGlzdHMoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlz
aW9uIDExNzk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsOSArMTcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBj
cmVhdGUoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVh
a2VkKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFj
a1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlLCBI
ZWFwVHlwZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSwgSGVh
cFR5cGUgPSBTbWFsbEhlYXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERh
dGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUsIEhlYXBUeXBlID0gU21hbGxI
ZWFwKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTR2xvYmFsRGF0YSgpOwogCiAgICAg
ICAgIHZvaWQgbWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKSB7IGhlYXAubWFjaGluZVRo
cmVhZHMoKS5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOyB9CkBAIC00MDUsNyArNDA1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCi0gICAgICAgIEpTR2xvYmFsRGF0YShH
bG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CisgICAgICAgIEpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwVHlwZSk7CiAgICAg
ICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAg
ICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiAo
RU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMTE3OTkxKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNyBAQAorMjAxMi0wNS0yMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIEdDIGFsbG9jYXRpb24gdHJpZ2dlciBzaG91bGQgYmUgdHVuZWQgdG8g
c3lzdGVtIFJBTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODcwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiBmb3IgbWVhc3VyaW5nIHN5c3RlbSBSQU0uCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5neXBpOgorICAgICAg
ICAqIFdURi5wcm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9BbW91bnRPZlJB
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6Y29tcHV0ZUFtb3Vu
dE9mUkFNKToKKyAgICAgICAgKFdURjo6YW1vdW50T2ZSQU0pOgorICAgICAgICAqIHd0Zi9BbW91
bnRPZlJBTS5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAgICAgICAgKFdURik6CisK
IDIwMTItMDUtMjIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5j
b20+CiAKICAgICAgICAgR0NDIDQuNyBhbmQgQysrMTEgc3VwcG9ydC4KSW5kZXg6IFNvdXJjZS9X
VEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDExNzk5MSkKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQCB3dGZfc291cmNlcyArPSBc
CiAgICAgU291cmNlL1dURi93dGYvTnVsbFB0ci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9OdW1i
ZXJPZkNvcmVzLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5oIFwKKyAg
ICBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL0Ft
b3VudE9mUkFNLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvT1NS
YW5kb21Tb3VyY2UuaCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvV1RGLmd5cGkJKHJldmlzaW9uIDExNzk5MSkKKysrIFNvdXJjZS9XVEYvV1RG
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOCBAQAogICAgICAgICAgICAgJ3d0
Zi9OdWxsUHRyLmNwcCcsCiAgICAgICAgICAgICAnd3RmL051bWJlck9mQ29yZXMuY3BwJywKICAg
ICAgICAgICAgICd3dGYvTnVtYmVyT2ZDb3Jlcy5oJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50
T2ZSQU0uY3BwJywKKyAgICAgICAgICAgICd3dGYvQW1vdW50T2ZSQU0uaCcsCiAgICAgICAgICAg
ICAnd3RmL09TQWxsb2NhdG9yUG9zaXguY3BwJywKICAgICAgICAgICAgICd3dGYvT1NBbGxvY2F0
b3JXaW4uY3BwJywKICAgICAgICAgICAgICd3dGYvT1NSYW5kb21Tb3VyY2UuY3BwJywKSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5wcm8JKHJl
dmlzaW9uIDExNzk5MSkKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29ya2luZyBjb3B5KQpAQCAt
ODQsNiArODQsNyBAQCBIRUFERVJTICs9IFwKICAgICBOb3RGb3VuZC5oIFwKICAgICBOdWxsUHRy
LmggXAogICAgIE51bWJlck9mQ29yZXMuaCBcCisgICAgQW1vdW50T2ZSQU0uaCBcCiAgICAgT1NB
bGxvY2F0b3IuaCBcCiAgICAgT1NSYW5kb21Tb3VyY2UuaCBcCiAgICAgT3duQXJyYXlQdHIuaCBc
CkBAIC0xOTEsNiArMTkyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgTWV0YUFsbG9jYXRvci5jcHAg
XAogICAgIE51bGxQdHIuY3BwIFwKICAgICBOdW1iZXJPZkNvcmVzLmNwcCBcCisgICAgQW1vdW50
T2ZSQU0uY3BwIFwKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIHF0L01haW5UaHJlYWRR
dC5jcHAgXAogICAgIHF0L1N0cmluZ1F0LmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3By
b2ovV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZj
cHJvagkocmV2aXNpb24gMTE3OTkxKQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTkwOSw2ICs5MDksMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgog
CQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcQW1vdW50T2ZSQU0uY3BwIgorCQkJPgor
CQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxBbW91bnRPZlJBTS5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxOdW1i
ZXJPZkNvcmVzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTc5OTEpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTE0
M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEg
LyogQW1vdW50T2ZSQU0uY3BwICovOyB9OworCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBBbW91bnRPZlJBTS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTRGMDMyMUJDMTU2
QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5Lmgg
Ki87IH07CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3NkRCRDcxNTE4MTZFNTAw
REFEQjk1IC8qIFBsYXRmb3JtLmggKi87IH07CkBAIC0yNDIsNiArMjQ0LDggQEAKIC8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KKwkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3VudE9mUkFNLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFtb3VudE9mUkFNLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIEFtb3Vu
dE9mUkFNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFtb3VudE9mUkFNLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAv
KiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RC
aXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYwMzIxQkIxNTZBQThE
MTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJpdEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlC
ODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGli
V1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01MzgsNiArNTQy
LDggQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIEFtb3VudE9mUkFNLmNwcCAqLywKKwkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyog
QW1vdW50T2ZSQU0uaCAqLywKIAkJCQlBOEE0NzI1NDE1MUE4MjVBMDA0MTIzRkYgLyogQWxpZ25t
ZW50LmggKi8sCiAJCQkJQThBNDcyNTUxNTFBODI1QTAwNDEyM0ZGIC8qIEFsd2F5c0lubGluZS5o
ICovLAogCQkJCUE4QTQ3MjU2MTUxQTgyNUEwMDQxMjNGRiAvKiBBcnJheUJ1ZmZlci5jcHAgKi8s
CkBAIC0xMDMwLDYgKzEwMzYsNyBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBW
TVRhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIz
RkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUx
NEEgLyogQW1vdW50T2ZSQU0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUM1MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTExNzYsNiArMTE4Myw3IEBA
CiAJCQkJQThBNDc0NzcxNTFBODI1QjAwNDEyM0ZGIC8qIFVSTEVzY2FwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIEFt
b3VudE9mUkFNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dURi93dGYvQW1vdW50
T2ZSQU0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBbW91bnRPZlJBTS5oIgorCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaWYg
T1MoREFSV0lOKQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbGlmIE9TKFVOSVgpCisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgor
CituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGNvbnN0IHNpemVfdCBhbW91bnRPZlJBTUd1ZXNz
ID0gMTI4ICogTUI7CisKK3N0YXRpYyBzaXplX3QgY29tcHV0ZUFtb3VudE9mUkFNKCkKK3sKKyNp
ZiBPUyhEQVJXSU4pCisgICAgaW50IG1pYlsyXTsKKyAgICBpbnQ2NF90IGFtb3VudE9mUkFNOwor
ICAgIHNpemVfdCBsZW5ndGg7CisKKyAgICBtaWJbMF0gPSBDVExfSFc7CisgICAgbWliWzFdID0g
SFdfTUVNU0laRTsKKyAgICBsZW5ndGggPSBzaXplb2YoaW50NjRfdCk7CisgICAgaW50IHN5c2N0
bFJlc3VsdCA9IHN5c2N0bChtaWIsIDIsICZhbW91bnRPZlJBTSwgJmxlbmd0aCwgMCwgMCk7Cisg
ICAgaWYgKHN5c2N0bFJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGFtb3VudE9mUkFNR3Vl
c3M7CisgICAgcmV0dXJuIGFtb3VudE9mUkFNOworI2VsaWYgT1MoVU5JWCkKKyAgICBsb25nIHBh
Z2VzID0gc3lzY29uZihfU0NfUEhZU19QQUdFUyk7CisgICAgbG9uZyBwYWdlU2l6ZSA9IHN5c2Nv
bmYoX1NDX1BBR0VfU0laRSk7CisgICAgaWYgKHBhZ2VzID09IC0xIHx8IHBhZ2VTaXplID09IC0x
KQorICAgICAgICByZXR1cm4gYW1vdW50T2ZSQU1HdWVzczsKKyAgICByZXR1cm4gcGFnZXMgKiBw
YWdlU2l6ZTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgTUVNT1JZU1RBVFVTRVggc3RhdHVzOwor
ICAgIHN0YXR1cy5kd0xlbmd0aCA9IHNpemVvZihzdGF0dXMpOworICAgIGJvb2wgcmVzdWx0ID0g
R2xvYmFsTWVtb3J5U3RhdHVzRXgoJnN0YXR1cyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
IHJldHVybiBhbW91bnRPZlJBTUd1ZXNzOworICAgIHJldHVybiBzdGF0dXMudWxsVG90YWxQaHlz
OworI2VuZGlmCit9CisKK3NpemVfdCBhbW91bnRPZlJBTSgpCit7CisgICAgc3RhdGljIHNpemVf
dCBhbW91bnRPZlJBTSA9IGNvbXB1dGVBbW91bnRPZlJBTSgpOworICAgIHJldHVybiBhbW91bnRP
ZlJBTTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9BbW91
bnRPZlJBTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Ftb3VudE9mUkFNLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9BbW91bnRPZlJBTS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbW91bnRPZlJBTV9oCisjZGVm
aW5lIEFtb3VudE9mUkFNX2gKKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgYW1vdW50T2ZSQU0oKTsKKworfQorCisjZW5kaWYgLy8gQW1vdW50T2ZSQU1faApJ
bmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExNzk5MSkKKysrIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIFNFVChX
VEZfSEVBREVSUwogICAgIE5vdEZvdW5kLmgKICAgICBOdWxsUHRyLmgKICAgICBOdW1iZXJPZkNv
cmVzLmgKKyAgICBBbW91bnRPZlJBTS5oCiAgICAgT1NBbGxvY2F0b3IuaAogICAgIE9TUmFuZG9t
U291cmNlLmgKICAgICBPd25BcnJheVB0ci5oCkBAIC0xNDksNiArMTUwLDcgQEAgU0VUKFdURl9T
T1VSQ0VTCiAgICAgTWV0YUFsbG9jYXRvci5jcHAKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAKICAg
ICBOdW1iZXJPZkNvcmVzLmNwcAorICAgIEFtb3VudE9mUkFNLmNwcAogICAgIFBhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5jcHAKICAgICBQYWdlQmxvY2suY3BwCiAgICAgUGFyYWxsZWxKb2JzR2VuZXJp
Yy5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiAxMTc5OTEpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3
IEBAIFR5cGVQdHIgcmVpbnRlcnByZXRfY2FzdF9wdHIoY29uc3Qgdm9pZCoKIG5hbWVzcGFjZSBX
VEYgewogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IEtCID0gMTAyNDsKK3N0YXRpYyBjb25zdCBzaXpl
X3QgTUIgPSAxMDI0ICogMTAyNDsKIAogaW5saW5lIGJvb2wgaXNQb2ludGVyQWxpZ25lZCh2b2lk
KiBwKQogewpAQCAtMzA0LDYgKzMwNSw3IEBAIGlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCBOb3ROdWwKIH0KIAogdXNpbmcgV1RGOjpLQjsKK3VzaW5nIFdURjo6TUI7CiB1c2luZyBX
VEY6OmlzUG9pbnRlckFsaWduZWQ7CiB1c2luZyBXVEY6OmlzOEJ5dGVBbGlnbmVkOwogdXNpbmcg
V1RGOjpiaW5hcnlTZWFyY2g7Cg==
</data>
<flag name="review"
          id="149865"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>