<?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>163548</bug_id>
          
          <creation_ts>2016-10-17 09:55:34 -0700</creation_ts>
          <short_desc>Air::IRC doesn&apos;t need to have a special-case for uncolored Tmps since they all get colored</short_desc>
          <delta_ts>2016-10-17 14:49:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>163509</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1240985</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 09:55:34 -0700</bug_when>
    <thetext>IRC used to assume that no-degree Tmps can get any color. That&apos;s not true. No degree does not really mean no interference because of coalescable Moves. Bug 163509 was about that. Now we just need to remove the other side of this special case: IRC still has a special case for uncolored Tmps. We don&apos;t need that anymore - a truly unused Tmp will get handled naturally by the algorithm.

If we ever find that large numbers of unused Tmps are putting a stress on IRC and making it run longer, then we could just add a Tmp pruning pass.

Also, it turns out that this special case is hiding other bugs.  I&apos;m investigating those now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240986</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 09:58:32 -0700</bug_when>
    <thetext>Here&apos;s a horrible bug.  Say you have a Patchpoint that late-clobbers all regs followed by a Patchpoint that wants a scratch.  If you do this, the scratch is uncolorable.

We have this bug right now because we don&apos;t have callee-save FPRs on x86.  So if you have a CCall or JS call Patchpoint followed by a Patchpoint that wants FP scratches, then the FP scratch will not get colored and it will be left as %xmm0 at the end of IRC.  That may be wrong, if the return value of the CCall or Patchpoint just before was %xmm0, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240997</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 10:17:03 -0700</bug_when>
    <thetext>This bug exists because our strategy to reason about interference at instruction boundaries doesn&apos;t capture the essence of what scratch registers are all about.  For any other kind of use, we know that the tmp holding the use will have to have been live across the previous instruction, so it will definitely interfere with the previous instruction&apos;s late defs and late clobbers.  So, we can safely conflate the execution of the previous instruction&apos;s late actions with the execution of this instruction&apos;s early actions.

Reasoning about interference only at instruction boundaries is also imprecise for register clobber sets - but only just. Imagine a pair of consecutive insts where the first has a dead def and the second has an early clobber. In fact, the dead def could use the same register as the early clobber, but we won&apos;t let that happen. Perhaps a better example is an inst with a late clobber followed by an inst with an early def. Clearly, the early def could use the same register as the previous instruction&apos;s late clobber, but we won&apos;t let it. That&apos;s actually a serious bug. It would mean that if you early define a floating point value and the thing before you is a CCall, you&apos;ll have a really bad time.

Fortunately, the only thing we have to do to ensure that things don&apos;t go wrong is to insert Nops to pad between instructions that have incompatible constraints.  Here are some Nop insertion rules that we could apply:

- Insert Nop before any instruction that claims early reg clobber and after any instruction that claims late reg clobber. I think that this would fix all known cases of this bug. This still means that the scratch registers of one inst could affect the colorability of early defs of the next inst, which is pretty weird.

- Insert Nop around scratch users. This wouldn&apos;t be enough, since it wouldn&apos;t fix the early def problem.

Maybe one way to look at this is that Scratch and EarlyDef are the problem children. Let&apos;s consider if this is really true by looking at the four main forms of arg kinds: early versus late crossed with use versus def.

Early Def: We know that this case is problematic, because it&apos;s exactly what happens in my current crash. It happens to be an early def triggered by Scratch.

Early Use: Uses cause liveness. Either the thing that is being used is defined by the previous instruction or it&apos;s live before the previous instruction - so either way, it interferes with all of the previous instruction&apos;s clobbers and defs.  No problem here.

Late Def: This case is also problematic. You could have a late def followed by something that early-clobbers all registers. In that case we&apos;d want the def to use one of those registers and then insert spill code, but we can&apos;t do that if the def cannot get any regs at all.

Late Use: This could be a killing use. Imagine a late use followed by something that early-clobbers all registers.

Right now we don&apos;t have any clients that early-clobber all registers. But they may early-clobber some registers, and maybe this is enough to worry about.

Note that we can generalize this a bit further. A clobber is like a dead def. So the patterns of interference we have to worry about are:

Late Def or Late Clobber followed by Early Def or Early Clobber
Late Use followed by Early Def or Early Clobber.

Maybe what we should do is have a pre-pass for register allocators that inserts Nops to pad those bad cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241064</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-17 11:37:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/28804381&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241073</commentid>
    <comment_count>4</comment_count>
      <attachid>291848</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 11:42:15 -0700</bug_when>
    <thetext>Created attachment 291848
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241075</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 11:44:41 -0700</bug_when>
    <thetext>Attachment 291848 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:15:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzing  [changelog/unwantedsecurityterms] [3]
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>1241077</commentid>
    <comment_count>6</comment_count>
      <attachid>291850</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 11:51:17 -0700</bug_when>
    <thetext>Created attachment 291850
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241078</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 11:54:12 -0700</bug_when>
    <thetext>Attachment 291850 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:16:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzing  [changelog/unwantedsecurityterms] [3]
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>1241080</commentid>
    <comment_count>8</comment_count>
      <attachid>291852</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 11:58:06 -0700</bug_when>
    <thetext>Created attachment 291852
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241081</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 11:59:27 -0700</bug_when>
    <thetext>Attachment 291852 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:16:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzing  [changelog/unwantedsecurityterms] [3]
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>1241096</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 12:26:24 -0700</bug_when>
    <thetext>Perf is neutral:

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and AsmBench on murderface (MacBookPro11,5).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (r207408)
&quot;Things&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r207408)

Collected 6 samples per benchmark/VM, with 6 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.

                                                TipOfTree                   Things                                      
SunSpider:
   3d-cube                                    4.5635+-0.2077     !      4.8669+-0.0921        ! definitely 1.0665x slower
   3d-morph                                   4.6061+-0.0371     ?      4.7535+-0.2435        ? might be 1.0320x slower
   3d-raytrace                                4.7595+-0.1825     ?      4.8223+-0.1327        ? might be 1.0132x slower
   access-binary-trees                        1.9661+-0.0268     ?      2.0055+-0.0611        ? might be 1.0201x slower
   access-fannkuch                            4.7254+-0.1757     ?      4.7303+-0.1320        ?
   access-nbody                               2.3392+-0.0273     ?      2.3603+-0.0908        ?
   access-nsieve                              3.2064+-0.0675            3.1633+-0.0407          might be 1.0136x faster
   bitops-3bit-bits-in-byte                   1.1117+-0.0726     ?      1.1221+-0.0309        ?
   bitops-bits-in-byte                        2.7420+-0.0654            2.7278+-0.0856        
   bitops-bitwise-and                         1.9352+-0.0342     ?      1.9899+-0.1687        ? might be 1.0283x slower
   bitops-nsieve-bits                         2.9925+-0.0412     ?      3.0083+-0.0516        ?
   controlflow-recursive                      2.2332+-0.0307     ?      2.2554+-0.0644        ?
   crypto-aes                                 4.2394+-0.0621     ?      4.3119+-0.1421        ? might be 1.0171x slower
   crypto-md5                                 2.6076+-0.0831     ?      2.6100+-0.0558        ?
   crypto-sha1                                2.7259+-0.1662            2.6991+-0.0678        
   date-format-tofte                          6.6424+-0.1466     ?      6.6534+-0.1654        ?
   date-format-xparb                          4.3614+-0.0681     ?      4.4875+-0.2865        ? might be 1.0289x slower
   math-cordic                                2.6462+-0.0672            2.6402+-0.0526        
   math-partial-sums                          3.8569+-0.0742            3.8362+-0.1170        
   math-spectral-norm                         1.9379+-0.0141     ?      1.9799+-0.0537        ? might be 1.0217x slower
   regexp-dna                                 6.0219+-0.1280     ?      6.0466+-0.2232        ?
   string-base64                              4.5788+-0.2945            4.5485+-0.1798        
   string-fasta                               5.3533+-0.2661            5.3433+-0.0949        
   string-tagcloud                            8.2626+-0.2509            8.2262+-0.5519        
   string-unpack-code                        18.8714+-0.9339           18.3337+-0.6285          might be 1.0293x faster
   string-validate-input                      4.2263+-0.1359            4.2087+-0.0681        

   &lt;arithmetic&gt;                               4.3659+-0.0488     ?      4.3743+-0.0422        ? might be 1.0019x slower

                                                TipOfTree                   Things                                      
LongSpider:
   3d-cube                                  766.3006+-7.8896     ?    774.9436+-10.7597       ? might be 1.0113x slower
   3d-morph                                 564.8380+-5.7219          560.7331+-2.7138        
   3d-raytrace                              451.1555+-6.5341     ?    452.2502+-4.7283        ?
   access-binary-trees                      785.1498+-3.1568          777.8087+-7.5539        
   access-fannkuch                          236.9313+-15.8096         228.9799+-4.0861          might be 1.0347x faster
   access-nbody                             503.0647+-5.3581          502.2517+-4.3050        
   access-nsieve                            283.2287+-12.0946         281.6157+-7.3657        
   bitops-3bit-bits-in-byte                  31.6905+-1.1717           31.3657+-0.7230          might be 1.0104x faster
   bitops-bits-in-byte                       81.0870+-1.7034     ?     82.3441+-2.7083        ? might be 1.0155x slower
   bitops-nsieve-bits                       368.1612+-5.3194     ?    371.5583+-10.6290       ?
   controlflow-recursive                    431.3577+-4.9020          426.2359+-2.2779          might be 1.0120x faster
   crypto-aes                               536.8144+-7.0910          530.1278+-9.4802          might be 1.0126x faster
   crypto-md5                               454.6825+-11.5408         447.8979+-9.3365          might be 1.0151x faster
   crypto-sha1                              593.3735+-8.6011          588.5035+-7.0299        
   date-format-tofte                        329.7884+-8.0984          325.7576+-3.4504          might be 1.0124x faster
   date-format-xparb                        597.3298+-3.5808     ?    597.3829+-3.6885        ?
   hash-map                                 135.3798+-1.8664          134.5875+-0.5538        
   math-cordic                              406.5844+-3.0753          406.4504+-1.8212        
   math-partial-sums                        280.3720+-1.1693     ?    285.6557+-7.9468        ? might be 1.0188x slower
   math-spectral-norm                       513.7357+-1.8481     ?    514.9935+-3.5529        ?
   string-base64                            465.3550+-2.4841     ?    470.2137+-4.4853        ? might be 1.0104x slower
   string-fasta                             323.7067+-4.7078     ?    329.2609+-7.7219        ? might be 1.0172x slower
   string-tagcloud                          161.2982+-2.1852     ?    162.5371+-0.8447        ?

   &lt;geometric&gt;                              334.5645+-1.6294          334.0034+-0.7251          might be 1.0017x faster

                                                TipOfTree                   Things                                      
V8Spider:
   crypto                                    33.8389+-0.2162     ?     33.9471+-0.4037        ?
   deltablue                                 48.0852+-1.1778           47.8535+-1.7035        
   earley-boyer                              34.2065+-0.4593     ?     34.5249+-0.4456        ?
   raytrace                                  18.6578+-0.3119           18.4515+-0.1656          might be 1.0112x faster
   regexp                                    49.6619+-0.5939           49.5150+-0.2479        
   richards                                  38.9279+-1.2655           37.6948+-0.7162          might be 1.0327x faster
   splay                                     28.6549+-0.9101     ?     29.2582+-0.8115        ? might be 1.0211x slower

   &lt;geometric&gt;                               34.4399+-0.3001           34.3528+-0.2323          might be 1.0025x faster

                                                TipOfTree                   Things                                      
Octane:
   encrypt                                   0.14809+-0.00079    ?     0.14842+-0.00083       ?
   decrypt                                   2.54850+-0.03149          2.54710+-0.00805       
   deltablue                        x2       0.11653+-0.00237    ?     0.11678+-0.00111       ?
   earley                                    0.23928+-0.00170          0.23807+-0.00154       
   boyer                                     4.26517+-0.12756          4.12466+-0.14025         might be 1.0341x faster
   navier-stokes                    x2       4.61390+-0.02118    ?     4.62915+-0.03708       ?
   raytrace                         x2       0.66140+-0.00761          0.65207+-0.00489         might be 1.0143x faster
   richards                         x2       0.07742+-0.00120          0.07704+-0.00025       
   splay                            x2       0.31110+-0.00157          0.30727+-0.00233         might be 1.0124x faster
   regexp                           x2      16.47500+-0.50938         16.23519+-0.56249         might be 1.0148x faster
   pdfjs                            x2      38.62938+-0.52428         38.53210+-0.49054       
   mandreel                         x2      39.78858+-0.31988    ?    39.98960+-0.49391       ?
   gbemu                            x2      28.49413+-0.34866         28.48138+-0.21021       
   closure                                   0.47102+-0.00322    ?     0.47189+-0.00435       ?
   jquery                                    6.42113+-0.03222    ?     6.46318+-0.04181       ?
   box2d                            x2       8.63700+-0.12467    ?     8.65220+-0.07580       ?
   zlib                             x2     336.08184+-12.29731   ?   337.94990+-4.50929       ?
   typescript                       x2     600.42969+-13.20123   ?   602.13529+-14.98861      ?

   &lt;geometric&gt;                               4.68792+-0.02586          4.67470+-0.02102         might be 1.0028x faster

                                                TipOfTree                   Things                                      
Kraken:
   ai-astar                                   88.491+-1.811      ?      89.722+-3.738         ? might be 1.0139x slower
   audio-beat-detection                       35.869+-1.533             35.285+-0.129           might be 1.0165x faster
   audio-dft                                  96.468+-3.494             95.269+-2.450           might be 1.0126x faster
   audio-fft                                  27.391+-0.069      ?      29.140+-4.349         ? might be 1.0639x slower
   audio-oscillator                           42.631+-0.225      ?      42.715+-0.244         ?
   imaging-darkroom                           55.945+-0.700             55.686+-0.531         
   imaging-desaturate                         40.610+-0.153      ?      42.115+-2.123         ? might be 1.0370x slower
   imaging-gaussian-blur                      59.987+-3.584             58.609+-2.727           might be 1.0235x faster
   json-parse-financial                       32.195+-1.510             31.944+-1.557         
   json-stringify-tinderbox                   21.179+-1.261      ?      22.691+-1.995         ? might be 1.0714x slower
   stanford-crypto-aes                        34.114+-0.352             34.014+-0.209         
   stanford-crypto-ccm                        32.386+-2.168             32.163+-0.476         
   stanford-crypto-pbkdf2                     88.909+-0.829      ?      91.229+-1.995         ? might be 1.0261x slower
   stanford-crypto-sha256-iterative           29.280+-0.517      ?      30.207+-2.015         ? might be 1.0317x slower

   &lt;arithmetic&gt;                               48.961+-0.559      ?      49.342+-0.677         ? might be 1.0078x slower

                                                TipOfTree                   Things                                      
AsmBench:
   bigfib.cpp                               409.4784+-7.7076     ?    409.5128+-5.0230        ?
   cray.c                                   354.0447+-5.1482     ?    354.8725+-3.2708        ?
   dry.c                                    386.9092+-4.0625     ?    390.0046+-2.7128        ?
   FloatMM.c                                633.1066+-33.3193         619.0405+-30.2663         might be 1.0227x faster
   gcc-loops.cpp                           3342.0907+-22.3980    ?   3353.3735+-14.7225       ?
   n-body.c                                 747.9452+-2.9462     ?    750.7775+-3.9302        ?
   Quicksort.c                              367.4604+-6.4377     ?    371.8779+-10.8246       ? might be 1.0120x slower
   stepanov_container.cpp                  3161.1853+-19.0877    ?   3163.3820+-22.5073       ?
   Towers.c                                 230.9992+-3.1366     ?    232.0922+-4.7698        ?

   &lt;geometric&gt;                              660.0768+-4.5254     ?    660.9889+-4.0355        ? might be 1.0014x slower

                                                TipOfTree                   Things                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           44.3607+-0.2115     ?     44.3904+-0.1871        ? might be 1.0007x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241160</commentid>
    <comment_count>11</comment_count>
      <attachid>291852</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-17 14:22:15 -0700</bug_when>
    <thetext>Comment on attachment 291852
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241178</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-17 14:49:13 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/207434</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291848</attachid>
            <date>2016-10-17 11:42:15 -0700</date>
            <delta_ts>2016-10-17 11:51:17 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25494</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NDE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE2LTEwLTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyOjpJUkMgZG9lc24ndCBuZWVkIHRvIGhhdmUgYSBzcGVjaWFsLWNhc2UgZm9yIHVuY29sb3Jl
ZCBUbXBzIHNpbmNlIHRoZXkgYWxsIGdldCBjb2xvcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEJlZm9yZSByMjA3NDA4LCBJUkMgaGFk
IGEgbW9kZSB3aGVyZSBpdCB3b3VsZCBzaWxlbnRseSBhc3NpZ24gdGhlIGZpcnN0IGFzc2lnbmFi
bGUgcmVnaXN0ZXIgKHNvCisgICAgICAgICVyYXgsICV4bW0wLCBldGMpIHRvIGFueSB0bXAgdGhh
dCB3YXMgbm90IGNvbG9yYWJsZSBkdWUgdG8gYSBwYXRob2xvZ2ljYWwgaW50ZXJmZXJlbmNlIGZl
bmNlcG9zdC4KKyAgICAgICAgV2UgcmVhc29uIGFib3V0IGludGVyZmVyZW5jZSBhdCBpbnN0cnVj
dGlvbiBib3VuZGFyaWVzLiBUaGlzIG1lYW5zIHRoYXQgaWYgeW91IGhhdmUsIGZvciBleGFtcGxl
LAorICAgICAgICBhbiBpbnN0cnVjdGlvbiB0aGF0IGNsb2JiZXJzIGFsbCByZWdpc3RlcnMgbGF0
ZSBmb2xsb3dlZCBieSBhbiBpbnN0cnVjdGlvbiB0aGF0IGhhcyBhbiBlYXJseSBkZWYKKyAgICAg
ICAgaW4gdGhlIHNhbWUgcmVnaXN0ZXIgZmlsZSwgdGhlbiB0aGUgZWFybHkgZGVmIHdpbGwgbm90
IGJlIGNvbG9yYWJsZSBiZWNhdXNlIGl0IGludGVyZmVyZXMgd2l0aAorICAgICAgICBhbGwgcmVn
aXN0ZXJzLiBUaGlzIGFscmVhZHkgaGFwcGVucyBpbiBvdXIgdGVzdHMsIGJ1dCBJUkMgc2lsZW50
bHkgcmV0dXJucyB0aGUgZmlyc3QgYXNzaWduYWJsZQorICAgICAgICByZWdpc3RlciB0byBzdWNo
IHRtcHMuIEZvciBzb21lIHJlYXNvbiB0aGUgcmVzdWx0aW5nIGNvZGUgd29ya3MgT0sgLSBwcm9i
YWJseSBiZWNhdXNlIHRoaXMgdGVuZHMKKyAgICAgICAgdG8gb25seSBiZSBoaXQgYnkgZnV6emlu
Zywgd2hpY2ggbWF5IG5vdCB0aGVuIHN0cmVzcyB0aGF0IGNvZGUgZW5vdWdoIHRvIHNoYWtlIG91
dCB0aGUgcmVnaXN0ZXIKKyAgICAgICAgY29ycnVwdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgY2hhbmdlIGZpeGVzIHRoZSBpc3N1ZToKKyAgICAgICAgCisgICAgICAgIC0gSVJDIHdpbGwg
bm93IGNyYXNoIGlmIGl0IGNvdWxkbid0IGNvbG9yIGEgdG1wLgorICAgICAgICAtIElSQyBkb2Vz
bid0IGNyYXNoIG9uIG91ciB0ZXN0cyBhbnltb3JlIGJlY2F1c2UgSSBhZGRlZCBhIHBhZEludGVy
ZmVyZW5jZSgpIHV0aWxpdHkgdGhhdCB3b3JrcworICAgICAgICAgIGFyb3VuZCB0aGUgaW50ZXJm
ZXJlbmNlIHByb2JsZW0uCisgICAgICAgIAorICAgICAgICBQbGVhc2Ugc2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NDgjYzIgZm9yIGEgZGV0YWlsZWQgZGlz
Y3Vzc2lvbiBvZiBob3cgdGhlCisgICAgICAgIHByb2JsZW0gY2FuIGFyaXNlLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBwcm9ibGVtIGFsbW9zdCBtYWRlIG1lIHdhbnQgdG8gYWJhbmRvbiBvdXIg
dXNlIG9mIGludGVyZmVyZW5jZSBhdCBpbnN0cnVjdGlvbiBib3VuZGFyaWVzLAorICAgICAgICBh
bmQgaW50cm9kdWNlIHNvbWV0aGluZyBtb3JlIGNvbXByZWhlbnNpdmUsIGxpa2UgaW50ZXJmZXJl
bmNlIGF0IHZhcmlvdXMgc3RhZ2VzIG9mIGFuCisgICAgICAgIGluc3RydWN0aW9uJ3MgZXhlY3V0
aW9uLiBUaGUgcmVhc29uIHdoeSBJIGRpZG4ndCBkbyB0aGlzIGlzIHRoYXQgdGhpcyBwcm9ibGVt
IG9ubHkgYXJpc2VzIGluIHdlbGwKKyAgICAgICAgY29uZmluZWQgY29ybmVyIGNhc2VzOiB5b3Ug
bmVlZCBhbiBpbnN0cnVjdGlvbiB0aGF0IGRvZXMgYSBsYXRlIHVzZSBvciBkZWYgZm9sbG93ZWQg
YnkgYW4KKyAgICAgICAgaW5zdHJ1Y3Rpb24gdGhhdCBkb2VzIGFuIGVhcmx5IGRlZi4gUmVnaXN0
ZXIgY2xvYmJlcnMgY291bnQgYXMgZGVmcyBmb3IgdGhpcyBlcXVhdGlvbi4KKyAgICAgICAgRm9y
dHVuYXRlbHksIGVhcmx5IGRlZnMgYXJlIHJhcmUsIGFuZCBldmVuIHdoZW4gdGhleSBkbyBoYXBw
ZW4sIHlvdSBzdGlsbCBuZWVkIHRoZSBwcmV2aW91cworICAgICAgICBpbnN0cnVjdGlvbiB0byBo
YXZlIGEgbGF0ZSBzb21ldGhpbmcuIExhdGUgdXNlcyBhcmUgcmFyZSBhbmQgbWFueSBpbnN0cnVj
dGlvbnMgZG9uJ3QgaGF2ZSBkZWZzIGF0CisgICAgICAgIGFsbCwgd2hpY2ggbWVhbnMgdGhhdCBp
dCdzIGFjdHVhbGx5IHByZXR0eSBjb21tb24gZm9yIGFuIGluc3RydWN0aW9uIHRvIG5vdCBoYXZl
IGFueXRoaW5nIGxhdGUuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gZmluYWxseSByZWZh
Y3RvcnMgb3VyIHBhc3Npbmcgb2YgUmVnaXN0ZXJTZXQgdG8gcGFzcyBpdCBieSB2YWx1ZSwgc2lu
Y2UgaXQncyBzbWFsbAorICAgICAgICBlbm91Z2ggdGhhdCB3ZSdyZSBub3QgZ2FpbmluZyBhbnl0
aGluZyBieSB1c2luZyByZWZlcmVuY2VzLiBPbiB4ODYsIFJlZ2lzdGVyU2V0IG91Z2h0IHRvIGJl
CisgICAgICAgIHNtYWxsZXIgdGhhbiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OlN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKEpTQzo6QjM6
OlN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MpOgorICAgICAgICAqIGIz
L0IzU3RhY2ttYXBTcGVjaWFsLmg6CisgICAgICAgICogYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNDYWxsU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2Ji
ZXJlZFJlZ3MpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OmV4dHJhQ2xv
YmJlcmVkUmVncyk6CisgICAgICAgICogYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5oOgorICAgICAg
ICAqIGIzL2Fpci9BaXJJbnN0Lmg6CisgICAgICAgICogYjMvYWlyL0Fpckluc3RJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6OmV4dHJhQ2xvYmJlcmVkUmVncyk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKToKKyAgICAg
ICAgKiBiMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZyk6CisgICAgICAgICogYjMv
YWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpwYWRJbnRlcmZlcmVuY2UpOgorICAgICAgICAqIGIzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2Uu
aDogQWRkZWQuCisgICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuaDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxF
dmVyeXRoaW5nKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OmlzRW1wdHkpOgorCiAyMDE2LTEwLTE3ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdGhlIHJlamVjdCgpIGhlbHBlciBmdW5jdGlvbiBm
b3IgY29uZGl0aW9uYWxseSB0aHJvd2luZyBUeXBlRXJyb3JzLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0Fpckxvd2VyRW50cnlTd2l0Y2gu
Y3BwCiAgICAgYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcAogICAgIGIzL2Fpci9BaXJPcHRpbWl6
ZUJsb2NrT3JkZXIuY3BwCisgICAgYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKICAgICBi
My9haXIvQWlyUGhhc2VTY29wZS5jcHAKICAgICBiMy9haXIvQWlyUmVwb3J0VXNlZFJlZ2lzdGVy
cy5jcHAKICAgICBiMy9haXIvQWlyU2ltcGxpZnlDRkcuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTU3MCw2ICs1NzAsOCBAQAogCQkwRjlCMURCNDFDMEU0MkE1MDBFNUJGRDIgLyogRlRMT3V0
cHV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OUIxREIzMUMwRTQyQTUwMEU1QkZEMiAvKiBGVExPdXRwdXQuY3BwICovOyB9OwogCQkwRjlCMURC
NzFDMEU0MkJEMDBFNUJGRDIgLyogRlRMT1NSRXhpdEhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlCMURCNTFDMEU0MkJEMDBFNUJGRDIg
LyogRlRMT1NSRXhpdEhhbmRsZS5jcHAgKi87IH07CiAJCTBGOUIxREI4MUMwRTQyQkQwMEU1QkZE
MiAvKiBGVExPU1JFeGl0SGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlCMURCNjFDMEU0MkJEMDBFNUJGRDIgLyogRlRMT1NSRXhpdEhhbmRs
ZS5oICovOyB9OworCQkwRjlDQUJDODFEQjU0QTc4MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJl
bmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OUNBQkM2MURCNTRBNzYwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZlcmVuY2UuY3BwICovOyB9Owor
CQkwRjlDQUJDOTFEQjU0QTdBMDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlDQUJDNzFEQjU0QTc2
MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmggKi87IH07CiAJCTBGOUQzMzcwMTY1REJC
OTAwMDVBRDM4NyAvKiBEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNkUxNjVEQkI4RDAwNUFEMzg3IC8qIERpc2Fzc2Vt
Ymxlci5jcHAgKi87IH07CiAJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVk
QXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5
RDMzOTQxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgKi87IH07CiAJCTBGOUQz
Mzk3MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBE
RkdGbHVzaGVkQXQuaCAqLzsgfTsKQEAgLTI4MzYsNiArMjgzOCw4IEBACiAJCTBGOUIxREIzMUMw
RTQyQTUwMEU1QkZEMiAvKiBGVExPdXRwdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMT3V0cHV0LmNwcDsgcGF0aCA9IGZ0bC9GVExPdXRwdXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlCMURCNTFDMEU0MkJEMDBFNUJGRDIgLyogRlRM
T1NSRXhpdEhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExPU1JFeGl0SGFuZGxlLmNwcDsgcGF0aCA9IGZ0bC9GVExPU1JFeGl0SGFuZGxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5QjFEQjYxQzBFNDJCRDAwRTVCRkQyIC8qIEZU
TE9TUkV4aXRIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT1NS
RXhpdEhhbmRsZS5oOyBwYXRoID0gZnRsL0ZUTE9TUkV4aXRIYW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5Q0FCQzYxREI1NEE3NjAwMDhFODNCIC8qIEFpclBhZEludGVy
ZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQYWRJ
bnRlcmZlcmVuY2UuY3BwOyBwYXRoID0gYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUNBQkM3MURCNTRBNzYwMDA4RTgzQiAvKiBB
aXJQYWRJbnRlcmZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWly
UGFkSW50ZXJmZXJlbmNlLmg7IHBhdGggPSBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAvKiBE
aXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlz
YXNzZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyogREZH
Rmx1c2hlZEF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Zs
dXNoZWRBdC5jcHA7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVzaGVkQXQuaDsgcGF0aCA9
IGRmZy9ERkdGbHVzaGVkQXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNzMs
NiArNTA3Nyw4IEBACiAJCQkJMjY0MDkxRkExQkUyRkQ0MTAwNjg0REIyIC8qIEFpck9wY29kZS5v
cGNvZGVzICovLAogCQkJCTBGQjM4NzhDMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJs
b2NrT3JkZXIuY3BwICovLAogCQkJCTBGQjM4NzhEMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRp
bWl6ZUJsb2NrT3JkZXIuaCAqLywKKwkJCQkwRjlDQUJDNjFEQjU0QTc2MDAwOEU4M0IgLyogQWly
UGFkSW50ZXJmZXJlbmNlLmNwcCAqLywKKwkJCQkwRjlDQUJDNzFEQjU0QTc2MDAwOEU4M0IgLyog
QWlyUGFkSW50ZXJmZXJlbmNlLmggKi8sCiAJCQkJMEZFQzg1NUUxQkRBQ0RDNzAwODBGRjc0IC8q
IEFpclBoYXNlU2NvcGUuY3BwICovLAogCQkJCTBGRUM4NTVGMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJQaGFzZVNjb3BlLmggKi8sCiAJCQkJMEY0NTcwM0ExQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJl
cG9ydFVzZWRSZWdpc3RlcnMuY3BwICovLApAQCAtNzYxNSw2ICs3NjIxLDcgQEAKIAkJCQkwRkYy
Q0Q1QzFCNjFBNEY4MDA0OTU1QTggLyogREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2Rl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlDQUJDOTFEQjU0QTdBMDAwOEU4M0IgLyogQWlyUGFk
SW50ZXJmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1
REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBF
OTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBC
NzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAt
OTUzMSw2ICs5NTM4LDcgQEAKIAkJCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJ
dGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzE4Q0JDMDFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEY5Q0FCQzgxREI1NEE3ODAwMDhFODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMzg3OTIxQkZEMzFBMTAwRTNBQjFF
IC8qIEZUTENvbXBpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRThEMUMxQjkwMTNDMzAw
MzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAJKHJldmlz
aW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lh
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBTdGFja21hcFNwZWNp
YWw6OnJlcG9ydFVzZWRSZWdpc3RlcgogICAgIHZhbHVlLT5tX3VzZWRSZWdpc3RlcnMubWVyZ2Uo
dXNlZFJlZ2lzdGVycyk7CiB9CiAKLWNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcFNwZWNpYWw6
OmV4dHJhQ2xvYmJlcmVkUmVncyhJbnN0JiBpbnN0KQorUmVnaXN0ZXJTZXQgU3RhY2ttYXBTcGVj
aWFsOjpleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYgaW5zdCkKIHsKICAgICBTdGFja21hcFZhbHVl
KiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxTdGFja21hcFZhbHVlPigpOwogICAgIEFTU0VSVCh2
YWx1ZSk7CkBAIC02Myw3ICs2Myw3IEBAIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcFNwZWNp
YWw6OmV4dHIKICAgICByZXR1cm4gdmFsdWUtPmxhdGVDbG9iYmVyZWQoKTsKIH0KIAotY29uc3Qg
UmVnaXN0ZXJTZXQmIFN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5z
dCYgaW5zdCkKK1JlZ2lzdGVyU2V0IFN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJl
ZFJlZ3MoSW5zdCYgaW5zdCkKIHsKICAgICBTdGFja21hcFZhbHVlKiB2YWx1ZSA9IGluc3Qub3Jp
Z2luLT5hczxTdGFja21hcFZhbHVlPigpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAkocmV2aXNpb24gMjA3
NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCByZXBvcnRVc2VkUmVnaXN0ZXJzKEFpcjo6SW5zdCYsIGNvbnN0IFJlZ2lzdGVyU2V0Jikg
b3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhRWFybHlDbG9iYmVyZWRSZWdz
KEFpcjo6SW5zdCYpIG92ZXJyaWRlOwotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYUNsb2Ji
ZXJlZFJlZ3MoQWlyOjpJbnN0Jikgb3ZlcnJpZGU7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFFYXJs
eUNsb2JiZXJlZFJlZ3MoQWlyOjpJbnN0Jikgb3ZlcnJpZGU7CisgICAgUmVnaXN0ZXJTZXQgZXh0
cmFDbG9iYmVyZWRSZWdzKEFpcjo6SW5zdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gTm90ZSB0aGF0
IHRoaXMgZG9lcyBub3Qgb3ZlcnJpZGUgZ2VuZXJhdGUoKSBvciBkdW1wSW1wbCgpL2RlZXBEdW1w
SW1wbCgpLiBXZSBoYXZlIG1hbnkgc29tZQogICAgIC8vIHN1YmNsYXNzZXMgdGhhdCBpbXBsZW1l
bnQgdGhhdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVj
aWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckND
YWxsU3BlY2lhbC5jcHAJKHJldmlzaW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEyICsx
NDIsMTIgQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIENDYWxsU3BlY2lhbDo6Z2VuZXJhdAogICAgIHJl
dHVybiBDQ2FsbEhlbHBlcnM6Okp1bXAoKTsKIH0KIAotY29uc3QgUmVnaXN0ZXJTZXQmIENDYWxs
U3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYpCitSZWdpc3RlclNldCBDQ2Fs
bFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKQogewogICAgIHJldHVybiBt
X2VtcHR5UmVnczsKIH0KIAotY29uc3QgUmVnaXN0ZXJTZXQmIENDYWxsU3BlY2lhbDo6ZXh0cmFD
bG9iYmVyZWRSZWdzKEluc3QmKQorUmVnaXN0ZXJTZXQgQ0NhbGxTcGVjaWFsOjpleHRyYUNsb2Ji
ZXJlZFJlZ3MoSW5zdCYpCiB7CiAgICAgcmV0dXJuIG1fY2xvYmJlcmVkUmVnczsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuaAkocmV2
aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNw
ZWNpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBhZG1pdHNTdGFjayhJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVycyhJbnN0JiwgY29uc3QgUmVnaXN0ZXJTZXQmKSBvdmVy
cmlkZTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZ2VuZXJhdGUoSW5zdCYsIENDYWxsSGVscGVy
cyYsIEdlbmVyYXRpb25Db250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVnaXN0ZXJTZXQm
IGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKSBvdmVycmlkZTsKLSAgICBjb25zdCBSZWdp
c3RlclNldCYgZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKSBvdmVycmlkZTsKKyAgICBSZWdpc3Rl
clNldCBleHRyYUVhcmx5Q2xvYmJlcmVkUmVncyhJbnN0Jikgb3ZlcnJpZGU7CisgICAgUmVnaXN0
ZXJTZXQgZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHVt
cEltcGwoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGRlZXBEdW1wSW1w
bChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJJbnN0LmgJKHJldmlzaW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlySW5zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOCArMTI4LDggQEAg
cHVibGljOgogCiAgICAgLy8gUmVwb3J0cyBhbnkgYWRkaXRpb25hbCByZWdpc3RlcnMgY2xvYmJl
cmVkIGJ5IHRoaXMgb3BlcmF0aW9uLiBOb3RlIHRoYXQgZm9yIGVmZmljaWVuY3ksCiAgICAgLy8g
ZXh0cmFDbG9iYmVyZWRSZWdzKCkgb25seSB3b3JrcyBmb3IgdGhlIFBhdGNoIG9wY29kZS4KLSAg
ICBjb25zdCBSZWdpc3RlclNldCYgZXh0cmFDbG9iYmVyZWRSZWdzKCk7Ci0gICAgY29uc3QgUmVn
aXN0ZXJTZXQmIGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCk7CisgICAgUmVnaXN0ZXJTZXQgZXh0
cmFDbG9iYmVyZWRSZWdzKCk7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFFYXJseUNsb2JiZXJlZFJl
Z3MoKTsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgRGVmJ3MgdGhhdCBoYXBwZW4gYXQgdGhl
IGVuZCBvZiBhbiBpbnN0cnVjdGlvbi4gWW91IHN1cHBseSBhIHBhaXIKICAgICAvLyBpbnN0cnVj
dGlvbnMuIFRoZSBpbnN0cnVjdGlvbnMgbXVzdCBhcHBlYXIgbmV4dCB0byBlYWNoIG90aGVyLCBp
biB0aGF0IG9yZGVyLCBpbiBzb21lIGJhc2ljCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAyMDc0MDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDEzICs0NCwxMyBAQCB2b2lkIEluc3Q6OmZvckVhY2goY29uc3QgRnVuY3RvciYgZnVuY3Rv
CiAgICAgICAgIH0pOwogfQogCi1pbmxpbmUgY29uc3QgUmVnaXN0ZXJTZXQmIEluc3Q6OmV4dHJh
Q2xvYmJlcmVkUmVncygpCitpbmxpbmUgUmVnaXN0ZXJTZXQgSW5zdDo6ZXh0cmFDbG9iYmVyZWRS
ZWdzKCkKIHsKICAgICBBU1NFUlQoa2luZC5vcGNvZGUgPT0gUGF0Y2gpOwogICAgIHJldHVybiBh
cmdzWzBdLnNwZWNpYWwoKS0+ZXh0cmFDbG9iYmVyZWRSZWdzKCp0aGlzKTsKIH0KIAotaW5saW5l
IGNvbnN0IFJlZ2lzdGVyU2V0JiBJbnN0OjpleHRyYUVhcmx5Q2xvYmJlcmVkUmVncygpCitpbmxp
bmUgUmVnaXN0ZXJTZXQgSW5zdDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKQogewogICAgIEFT
U0VSVChraW5kLm9wY29kZSA9PSBQYXRjaCk7CiAgICAgcmV0dXJuIGFyZ3NbMF0uc3BlY2lhbCgp
LT5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncygqdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2Fs
ZXNjaW5nLmNwcAkocmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBaXJJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJB
aXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpckxpdmVuZXNzLmgiCisjaW5jbHVkZSAiQWly
UGFkSW50ZXJmZXJlbmNlLmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgogI2luY2x1ZGUg
IkFpclRtcElubGluZXMuaCIKICNpbmNsdWRlICJBaXJUbXBXaWR0aC5oIgpAQCAtODQ0LDkgKzg0
NSwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVnIHJlZyA9IG1fY29sb3JlZFRtcFtBYnNvbHV0
ZVRtcE1hcHBlcjx0eXBlPjo6YWJzb2x1dGVJbmRleCh0bXApXTsKICAgICAgICAgaWYgKCFyZWcp
IHsKLSAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBUbXBzIHRoYXQgaW50ZXJmZXJl
LiBBIFRtcCB0aGF0IG5ldmVyIGludGVyZmVyZSB3aXRoIGFueXRoaW5nCi0gICAgICAgICAgICAv
LyBjYW4gdGFrZSBhbnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICByZWcgPSBtX2NvZGUucmVnc0lu
UHJpb3JpdHlPcmRlcih0eXBlKS5maXJzdCgpOworICAgICAgICAgICAgZGF0YUxvZygiRkFUQUw6
IE5vIGNvbG9yIGZvciAiLCB0bXAsICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiQ29kZTpc
biIpOworICAgICAgICAgICAgZGF0YUxvZyhtX2NvZGUpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVnOwogICAg
IH0KQEAgLTkyOCw2ICs5MzAsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBidWlsZChJbnN0KiBw
cmV2SW5zdCwgSW5zdCogbmV4dEluc3QsIGNvbnN0IHR5cGVuYW1lIFRtcExpdmVuZXNzPHR5cGU+
OjpMb2NhbENhbGMmIGxvY2FsQ2FsYykKICAgICB7CisgICAgICAgIGlmICh0cmFjZURlYnVnKQor
ICAgICAgICAgICAgZGF0YUxvZygiQnVpbGRpbmcgYmV0d2VlbiAiLCBwb2ludGVyRHVtcChwcmV2
SW5zdCksICIgYW5kICIsIHBvaW50ZXJEdW1wKG5leHRJbnN0KSwgIjpcbiIpOwogICAgICAgICBJ
bnN0Ojpmb3JFYWNoRGVmV2l0aEV4dHJhQ2xvYmJlcmVkUmVnczxUbXA+KAogICAgICAgICAgICAg
cHJldkluc3QsIG5leHRJbnN0LAogICAgICAgICAgICAgWyZdIChjb25zdCBUbXAmIGFyZywgQXJn
OjpSb2xlLCBBcmc6OlR5cGUgYXJnVHlwZSwgQXJnOjpXaWR0aCkgewpAQCAtOTQzLDYgKzk0Nyw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnVHlwZSAhPSB0eXBl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNlRGVidWcpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEFkZGluZyBkZWYtZGVmIGVkZ2U6ICIs
IGFyZywgIiwgIiwgb3RoZXJBcmcsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy0+YWRkRWRnZShhcmcsIG90aGVyQXJnKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB9KTsKQEAgLTk3OSw4ICs5ODUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZm9yIChjb25zdCBUbXAmIGxpdmVUbXAgOiBsb2NhbENhbGMubGl2ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxpdmVUbXAgIT0gdXNlVG1wKQorICAgICAgICAgICAg
ICAgIGlmIChsaXZlVG1wICE9IHVzZVRtcCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodHJh
Y2VEZWJ1ZykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBZGRpbmcgZGVm
LWxpdmUgZm9yIGNvYWxlc2NhYmxlOiAiLCBkZWZUbXAsICIsICIsIGxpdmVUbXAsICJcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBhZGRFZGdlKGRlZlRtcCwgbGl2ZVRtcCk7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUaGUgbmV4dCBpbnN0cnVj
dGlvbiBjb3VsZCBoYXZlIGVhcmx5IGNsb2JiZXJzIG9yIGVhcmx5IGRlZidzLiBXZSBuZWVkIHRv
IGNvbnNpZGVyCkBAIC0xMDI2LDYgKzEwMzUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFRtcCYgbGl2ZVRtcCA6IGxpdmVUbXBzKSB7
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsaXZlVG1wLmlzR1AoKSA9PSAodHlwZSA9PSBB
cmc6OkdQKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAo
dHJhY2VEZWJ1ZykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBZGRpbmcg
ZGVmLWxpdmUgZWRnZTogIiwgYXJnLCAiLCAiLCBsaXZlVG1wLCAiXG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGFkZEVkZ2UoYXJnLCBsaXZlVG1wKTsKICAg
ICAgICAgICAgICAgICB9CiAKQEAgLTEyNTYsNiArMTI2OSw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcnVuKCkKICAgICB7CisgICAgICAgIHBhZEludGVyZmVyZW5jZShtX2NvZGUpOworICAgICAg
ICAKICAgICAgICAgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdPblR5cGU8QXJnOjpHUD4oKTsK
ICAgICAgICAgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdPblR5cGU8QXJnOjpGUD4oKTsKIApA
QCAtMTU2OSw3ICsxNTg0LDcgQEAgcHJpdmF0ZToKIHZvaWQgaXRlcmF0ZWRSZWdpc3RlckNvYWxl
c2NpbmcoQ29kZSYgY29kZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwgIml0
ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nIik7Ci0KKyAgICAKICAgICBJdGVyYXRlZFJlZ2lzdGVy
Q29hbGVzY2luZyBpdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZyhjb2RlKTsKICAgICBpdGVyYXRl
ZFJlZ2lzdGVyQ29hbGVzY2luZy5ydW4oKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpclBh
ZEludGVyZmVyZW5jZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckNv
ZGUuaCIKKyNpbmNsdWRlICJBaXJJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7
CisKK3ZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUmIGNvZGUpCit7CisgICAgSW5zZXJ0aW9uU2V0
IGluc2VydGlvblNldChjb2RlKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkg
eworICAgICAgICBib29sIHByZXZIYWRMYXRlID0gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW5zdEluZGV4ID0gMDsgaW5zdEluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbnN0SW5kZXgp
IHsKKyAgICAgICAgICAgIEluc3QmIGluc3QgPSBibG9jay0+YXQoaW5zdEluZGV4KTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYm9vbCBoYXNFYXJseURlZiA9IGZhbHNlOworICAgICAgICAg
ICAgYm9vbCBoYXNMYXRlID0gZmFsc2U7CisgICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCisg
ICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6
OldpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocm9sZSkgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAgICAgICAgICAgICAgICAgICBo
YXNFYXJseURlZiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVVc2U6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpaRGVmOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXJnOjpVc2VEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpVc2VaRGVm
OgorICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGF0ZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6
CisgICAgICAgICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBoYXNMYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VXNlOgorICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6Q29sZFVzZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlVz
ZUFkZHI6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNv
ZGUgPT0gUGF0Y2gpIHsKKyAgICAgICAgICAgICAgICBoYXNFYXJseURlZiB8PSAhaW5zdC5leHRy
YUVhcmx5Q2xvYmJlcmVkUmVncygpLmlzRW1wdHkoKTsKKyAgICAgICAgICAgICAgICBoYXNMYXRl
IHw9ICFpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncygpLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGhhc0Vhcmx5RGVmICYmIHByZXZIYWRMYXRl
KQorICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4LCBOb3AsIGlu
c3Qub3JpZ2luKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHJldkhhZExhdGUgPSBoYXNM
YXRlOworICAgICAgICB9CisgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAg
ICB9Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFk
SW50ZXJmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJQYWRJbnRlcmZlcmVuY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIENvZGU7CisKKy8vIFRoaXMgaXNu
J3QgYSBwaGFzZSAtIGl0J3MgbWVhbnQgdG8gYmUgYSB1dGlsaXR5IHRoYXQgb3RoZXIgcGhhc2Vz
IHVzZS4gQWlyIHJlYXNvbnMgYWJvdXQgbGl2ZW5lc3MgYnkKKy8vIHJlYXNvbmluZyBhYm91dCBp
bnRlcmZlcmVuY2UgYXQgYm91bmRhcmllcyBiZXR3ZWVuIGluc3RydWN0aW9ucy4gVGhpcyBjYW4g
Z28gd3JvbmcgLSBmb3IgZXhhbXBsZSwgYQorLy8gbGF0ZSB1c2UgaW4gb25lIGluc3RydWN0aW9u
IGRvZXNuJ3QgYWN0dWFsbHkgaW50ZXJmZXJlIHdpdGggYW4gZWFybHkgZGVmIG9mIHRoZSBuZXh0
IGluc3RydWN0aW9uLCBidXQKKy8vIEFpciB0aGlua3MgdGhhdCBpdCBkb2VzLiBUaGlzIGlzIGNv
bnZlbmllbnQgYmVjYXVzZSBpdCB3b3JrcyBncmVhdCBpbiB0aGUgbW9zdCBjb21tb24gY2FzZTog
ZWFybHkgdXNlcworLy8gYW5kIGxhdGUgZGVmcy4gSW4gcHJhY3RpY2UsIG9ubHkgdGhlIHJlZ2lz
dGVyIGFsbG9jYXRvcnMgbmVlZCB0byB1c2UgdGhpcywgc2luY2Ugb25seSB0aGV5IG5lZWQgdG8g
YmUKKy8vIGFibGUgdG8gY29sb3IgdGhlIGludGVyZmVyZW5jZSBncmFwaCB1c2luZyBhIGJvdW5k
ZWQgbnVtYmVyIG9mIGNvbG9ycy4KKy8vCisvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzU0OCNjMiBmb3IgbW9yZSBpbmZvLgorCit2b2lkIHBhZEludGVy
ZmVyZW5jZShDb2RlJik7CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3BlY2lhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3BlY2lhbC5oCShyZXZpc2lvbiAyMDc0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclNwZWNpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODQsOCArODQsOCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBDQ2FsbEhlbHBlcnM6Okp1bXAgZ2VuZXJhdGUoSW5z
dCYsIENDYWxsSGVscGVycyYsIEdlbmVyYXRpb25Db250ZXh0JikgPSAwOwogCi0gICAgdmlydHVh
bCBjb25zdCBSZWdpc3RlclNldCYgZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYpID0gMDsK
LSAgICB2aXJ0dWFsIGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZ2lzdGVyU2V0IGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKElu
c3QmKSA9IDA7CisgICAgdmlydHVhbCBSZWdpc3RlclNldCBleHRyYUNsb2JiZXJlZFJlZ3MoSW5z
dCYpID0gMDsKICAgICAKICAgICAvLyBCeSBkZWZhdWx0LCB0aGlzIHJldHVybnMgZmFsc2UuCiAg
ICAgdmlydHVhbCBib29sIGlzVGVybWluYWwoSW5zdCYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24g
MjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQWlySW5z
ZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJM
aXZlbmVzcy5oIgorI2luY2x1ZGUgIkFpclBhZEludGVyZmVyZW5jZS5oIgogI2luY2x1ZGUgIkFp
clBoYXNlU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIApAQCAtNDEsNiArNDIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiB2b2lkIHNwaWxs
RXZlcnl0aGluZyhDb2RlJiBjb2RlKQogewogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShjb2Rl
LCAic3BpbGxFdmVyeXRoaW5nIik7CisgICAgCisgICAgcGFkSW50ZXJmZXJlbmNlKGNvZGUpOwog
CiAgICAgLy8gV2Ugd2FudCB0byBrbm93IHRoZSBzZXQgb2YgcmVnaXN0ZXJzIHVzZWQgYXQgZXZl
cnkgcG9pbnQgaW4gZXZlcnkgYmFzaWMgYmxvY2suCiAgICAgSW5kZXhNYXA8QmFzaWNCbG9jaywg
VmVjdG9yPFJlZ2lzdGVyU2V0Pj4gdXNlZFJlZ2lzdGVycyhjb2RlLnNpemUoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZpc2lvbiAyMDc0MDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG51bWJlck9mU2V0RlBScygp
IGNvbnN0OwogICAgIHNpemVfdCBudW1iZXJPZlNldFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cy5jb3VudCgpOyB9CiAgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzLmlzRW1wdHkoKTsgfQorICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7
IEVtcHR5VmFsdWUgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291850</attachid>
            <date>2016-10-17 11:51:17 -0700</date>
            <delta_ts>2016-10-17 11:58:06 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26166</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NDE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDE2LTEwLTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyOjpJUkMgZG9lc24ndCBuZWVkIHRvIGhhdmUgYSBzcGVjaWFsLWNhc2UgZm9yIHVuY29sb3Jl
ZCBUbXBzIHNpbmNlIHRoZXkgYWxsIGdldCBjb2xvcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI4ODA0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgQmVmb3JlIHIyMDc0MDgsIElSQyBoYWQgYSBtb2RlIHdoZXJlIGl0IHdvdWxk
IHNpbGVudGx5IGFzc2lnbiB0aGUgZmlyc3QgYXNzaWduYWJsZSByZWdpc3RlciAoc28KKyAgICAg
ICAgJXJheCwgJXhtbTAsIGV0YykgdG8gYW55IHRtcCB0aGF0IHdhcyBub3QgY29sb3JhYmxlIGR1
ZSB0byBhIHBhdGhvbG9naWNhbCBpbnRlcmZlcmVuY2UgZmVuY2Vwb3N0LgorICAgICAgICBXZSBy
ZWFzb24gYWJvdXQgaW50ZXJmZXJlbmNlIGF0IGluc3RydWN0aW9uIGJvdW5kYXJpZXMuIFRoaXMg
bWVhbnMgdGhhdCBpZiB5b3UgaGF2ZSwgZm9yIGV4YW1wbGUsCisgICAgICAgIGFuIGluc3RydWN0
aW9uIHRoYXQgY2xvYmJlcnMgYWxsIHJlZ2lzdGVycyBsYXRlIGZvbGxvd2VkIGJ5IGFuIGluc3Ry
dWN0aW9uIHRoYXQgaGFzIGFuIGVhcmx5IGRlZgorICAgICAgICBpbiB0aGUgc2FtZSByZWdpc3Rl
ciBmaWxlLCB0aGVuIHRoZSBlYXJseSBkZWYgd2lsbCBub3QgYmUgY29sb3JhYmxlIGJlY2F1c2Ug
aXQgaW50ZXJmZXJlcyB3aXRoCisgICAgICAgIGFsbCByZWdpc3RlcnMuIFRoaXMgYWxyZWFkeSBo
YXBwZW5zIGluIG91ciB0ZXN0cywgYnV0IElSQyBzaWxlbnRseSByZXR1cm5zIHRoZSBmaXJzdCBh
c3NpZ25hYmxlCisgICAgICAgIHJlZ2lzdGVyIHRvIHN1Y2ggdG1wcy4gRm9yIHNvbWUgcmVhc29u
IHRoZSByZXN1bHRpbmcgY29kZSB3b3JrcyBPSyAtIHByb2JhYmx5IGJlY2F1c2UgdGhpcyB0ZW5k
cworICAgICAgICB0byBvbmx5IGJlIGhpdCBieSBmdXp6aW5nLCB3aGljaCBtYXkgbm90IHRoZW4g
c3RyZXNzIHRoYXQgY29kZSBlbm91Z2ggdG8gc2hha2Ugb3V0IHRoZSByZWdpc3RlcgorICAgICAg
ICBjb3JydXB0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhlIGlz
c3VlOgorICAgICAgICAKKyAgICAgICAgLSBJUkMgd2lsbCBub3cgY3Jhc2ggaWYgaXQgY291bGRu
J3QgY29sb3IgYSB0bXAuCisgICAgICAgIC0gSVJDIGRvZXNuJ3QgY3Jhc2ggb24gb3VyIHRlc3Rz
IGFueW1vcmUgYmVjYXVzZSBJIGFkZGVkIGEgcGFkSW50ZXJmZXJlbmNlKCkgdXRpbGl0eSB0aGF0
IHdvcmtzCisgICAgICAgICAgYXJvdW5kIHRoZSBpbnRlcmZlcmVuY2UgcHJvYmxlbSBieSBpbnNl
cnRpbmcgTm9wcyB0byBwYWQgYmV0d2VlbiB0aG9zZSBpbnN0cnVjdGlvbnMgd2hlcmUKKyAgICAg
ICAgICBjb25mbGF0aW5nIHRoZWlyIGVhcmx5IGFuZCBsYXRlIGFjdGlvbnMgaW50byBvbmUgaW50
ZXJmZXJlbmNlIGZlbmNlcG9zdCBjb3VsZCBjcmVhdGUgYW4KKyAgICAgICAgICB1bmNvbG9yYWJs
ZSBncmFwaC4KKyAgICAgICAgCisgICAgICAgIFBsZWFzZSBzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzU0OCNjMiBmb3IgYSBkZXRhaWxlZCBkaXNjdXNzaW9u
IG9mIGhvdyB0aGUKKyAgICAgICAgcHJvYmxlbSBjYW4gYXJpc2UuCisgICAgICAgIAorICAgICAg
ICBUaGlzIHByb2JsZW0gYWxtb3N0IG1hZGUgbWUgd2FudCB0byBhYmFuZG9uIG91ciB1c2Ugb2Yg
aW50ZXJmZXJlbmNlIGF0IGluc3RydWN0aW9uIGJvdW5kYXJpZXMsCisgICAgICAgIGFuZCBpbnRy
b2R1Y2Ugc29tZXRoaW5nIG1vcmUgY29tcHJlaGVuc2l2ZSwgbGlrZSBpbnRlcmZlcmVuY2UgYXQg
dmFyaW91cyBzdGFnZXMgb2YgYW4KKyAgICAgICAgaW5zdHJ1Y3Rpb24ncyBleGVjdXRpb24uIFRo
ZSByZWFzb24gd2h5IEkgZGlkbid0IGRvIHRoaXMgaXMgdGhhdCB0aGlzIHByb2JsZW0gb25seSBh
cmlzZXMgaW4gd2VsbAorICAgICAgICBjb25maW5lZCBjb3JuZXIgY2FzZXM6IHlvdSBuZWVkIGFu
IGluc3RydWN0aW9uIHRoYXQgZG9lcyBhIGxhdGUgdXNlIG9yIGRlZiBmb2xsb3dlZCBieSBhbgor
ICAgICAgICBpbnN0cnVjdGlvbiB0aGF0IGRvZXMgYW4gZWFybHkgZGVmLiBSZWdpc3RlciBjbG9i
YmVycyBjb3VudCBhcyBkZWZzIGZvciB0aGlzIGVxdWF0aW9uLgorICAgICAgICBGb3J0dW5hdGVs
eSwgZWFybHkgZGVmcyBhcmUgcmFyZSwgYW5kIGV2ZW4gd2hlbiB0aGV5IGRvIGhhcHBlbiwgeW91
IHN0aWxsIG5lZWQgdGhlIHByZXZpb3VzCisgICAgICAgIGluc3RydWN0aW9uIHRvIGhhdmUgYSBs
YXRlIHNvbWV0aGluZy4gTGF0ZSB1c2VzIGFyZSByYXJlIGFuZCBtYW55IGluc3RydWN0aW9ucyBk
b24ndCBoYXZlIGRlZnMgYXQKKyAgICAgICAgYWxsLCB3aGljaCBtZWFucyB0aGF0IGl0J3MgYWN0
dWFsbHkgcHJldHR5IGNvbW1vbiBmb3IgYW4gaW5zdHJ1Y3Rpb24gdG8gbm90IGhhdmUgYW55dGhp
bmcgbGF0ZS4KKyAgICAgICAgVGhpcyBtZWFucyB0aGF0IHRoZSBwYWRJbnRlcmZlcmVuY2UoKSBz
dHJhdGVneSBpcyBpZGVhbDogb3VyIGFsZ29yaXRobXMgc3RheSBzaW1wbGUgYmVjYXVzZSB0aGV5
CisgICAgICAgIG9ubHkgaGF2ZSB0byB3b3JyeSBhYm91dCBpbnRlcmZlcmVuY2UgYXQgYm91bmRh
cmllcywgYW5kIHdlIHJhcmVseSBpbnNlcnQgYW55IE5vcHMgaW4KKyAgICAgICAgcGFkSW50ZXJm
ZXJlbmNlKCkgc28gdGhlIElSIHN0YXlzIG5pY2UgYW5kIGNvbXBhY3QuIFRob3NlIE5vcHMgZ2V0
IHJlbW92ZWQgYnkgYW55IHBoYXNlIHRoYXQgZG9lcworICAgICAgICBEQ0UsIHdoaWNoIGluY2x1
ZGVzIGVsaW1pbmF0ZURlYWRDb2RlKCksIGFsbG9jYXRlU3RhY2soKSwgYW5kIHJlcG9ydFVzZWRS
ZWdpc3RlcnMoKS4gSW4gcHJhY3RpY2UKKyAgICAgICAgYWxsb2NhdGVTdGFjaygpIGtpbGxzIHRo
ZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gZmluYWxseSByZWZhY3RvcnMgb3VyIHBh
c3Npbmcgb2YgUmVnaXN0ZXJTZXQgdG8gcGFzcyBpdCBieSB2YWx1ZSwgc2luY2UgaXQncyBzbWFs
bAorICAgICAgICBlbm91Z2ggdGhhdCB3ZSdyZSBub3QgZ2FpbmluZyBhbnl0aGluZyBieSB1c2lu
ZyByZWZlcmVuY2VzLiBPbiB4ODYsIFJlZ2lzdGVyU2V0IG91Z2h0IHRvIGJlCisgICAgICAgIHNt
YWxsZXIgdGhhbiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3Bl
Y2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3Bl
Y2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MpOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBT
cGVjaWFsLmg6CisgICAgICAgICogYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OkNDYWxsU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OmV4dHJhQ2xvYmJlcmVkUmVncyk6
CisgICAgICAgICogYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5oOgorICAgICAgICAqIGIzL2Fpci9B
aXJJbnN0Lmg6CisgICAgICAgICogYjMvYWlyL0Fpckluc3RJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okluc3Q6OmV4dHJhQ2xvYmJlcmVkUmVncyk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okluc3Q6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKiBiMy9haXIv
QWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjppdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZyk6CisgICAgICAgICogYjMvYWlyL0FpclBhZElu
dGVyZmVyZW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwYWRJbnRlcmZl
cmVuY2UpOgorICAgICAgICAqIGIzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuaDogQWRkZWQuCisg
ICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxFdmVyeXRoaW5nKToK
KyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6
OmlzRW1wdHkpOgorCiAyMDE2LTEwLTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBVc2UgdGhlIHJlamVjdCgpIGhlbHBlciBmdW5jdGlvbiBmb3IgY29uZGl0aW9u
YWxseSB0aHJvd2luZyBUeXBlRXJyb3JzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0Fpckxvd2VyRW50cnlTd2l0Y2guY3BwCiAgICAgYjMv
YWlyL0Fpckxvd2VyTWFjcm9zLmNwcAogICAgIGIzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIu
Y3BwCisgICAgYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKICAgICBiMy9haXIvQWlyUGhh
c2VTY29wZS5jcHAKICAgICBiMy9haXIvQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAKICAgICBi
My9haXIvQWlyU2ltcGxpZnlDRkcuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3MCw2ICs1
NzAsOCBAQAogCQkwRjlCMURCNDFDMEU0MkE1MDBFNUJGRDIgLyogRlRMT3V0cHV0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUIxREIzMUMwRTQy
QTUwMEU1QkZEMiAvKiBGVExPdXRwdXQuY3BwICovOyB9OwogCQkwRjlCMURCNzFDMEU0MkJEMDBF
NUJGRDIgLyogRlRMT1NSRXhpdEhhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlCMURCNTFDMEU0MkJEMDBFNUJGRDIgLyogRlRMT1NSRXhp
dEhhbmRsZS5jcHAgKi87IH07CiAJCTBGOUIxREI4MUMwRTQyQkQwMEU1QkZEMiAvKiBGVExPU1JF
eGl0SGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjlCMURCNjFDMEU0MkJEMDBFNUJGRDIgLyogRlRMT1NSRXhpdEhhbmRsZS5oICovOyB9Owor
CQkwRjlDQUJDODFEQjU0QTc4MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUNBQkM2MURCNTRB
NzYwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZlcmVuY2UuY3BwICovOyB9OworCQkwRjlDQUJDOTFE
QjU0QTdBMDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlDQUJDNzFEQjU0QTc2MDAwOEU4M0IgLyog
QWlyUGFkSW50ZXJmZXJlbmNlLmggKi87IH07CiAJCTBGOUQzMzcwMTY1REJCOTAwMDVBRDM4NyAv
KiBEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5RDMzNkUxNjVEQkI4RDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAgKi87
IH07CiAJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTQxN0ZGQzRF
NjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgKi87IH07CiAJCTBGOUQzMzk3MTdGRkM0RTYw
MDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQu
aCAqLzsgfTsKQEAgLTI4MzYsNiArMjgzOCw4IEBACiAJCTBGOUIxREIzMUMwRTQyQTUwMEU1QkZE
MiAvKiBGVExPdXRwdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RlRMT3V0cHV0LmNwcDsgcGF0aCA9IGZ0bC9GVExPdXRwdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjlCMURCNTFDMEU0MkJEMDBFNUJGRDIgLyogRlRMT1NSRXhpdEhhbmRs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExPU1JFeGl0SGFu
ZGxlLmNwcDsgcGF0aCA9IGZ0bC9GVExPU1JFeGl0SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5QjFEQjYxQzBFNDJCRDAwRTVCRkQyIC8qIEZUTE9TUkV4aXRIYW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT1NSRXhpdEhhbmRsZS5o
OyBwYXRoID0gZnRsL0ZUTE9TUkV4aXRIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY5Q0FCQzYxREI1NEE3NjAwMDhFODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQYWRJbnRlcmZlcmVuY2Uu
Y3BwOyBwYXRoID0gYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGOUNBQkM3MURCNTRBNzYwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZl
cmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyUGFkSW50ZXJmZXJl
bmNlLmg7IHBhdGggPSBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAvKiBEaXNhc3NlbWJsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlzYXNzZW1ibGVyLmNw
cDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0ZsdXNoZWRBdC5jcHA7
IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVzaGVkQXQuaDsgcGF0aCA9IGRmZy9ERkdGbHVz
aGVkQXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNzMsNiArNTA3Nyw4IEBA
CiAJCQkJMjY0MDkxRkExQkUyRkQ0MTAwNjg0REIyIC8qIEFpck9wY29kZS5vcGNvZGVzICovLAog
CQkJCTBGQjM4NzhDMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3Bw
ICovLAogCQkJCTBGQjM4NzhEMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJsb2NrT3Jk
ZXIuaCAqLywKKwkJCQkwRjlDQUJDNjFEQjU0QTc2MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJl
bmNlLmNwcCAqLywKKwkJCQkwRjlDQUJDNzFEQjU0QTc2MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJm
ZXJlbmNlLmggKi8sCiAJCQkJMEZFQzg1NUUxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2Nv
cGUuY3BwICovLAogCQkJCTBGRUM4NTVGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3Bl
LmggKi8sCiAJCQkJMEY0NTcwM0ExQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdp
c3RlcnMuY3BwICovLApAQCAtNzYxNSw2ICs3NjIxLDcgQEAKIAkJCQkwRkYyQ0Q1QzFCNjFBNEY4
MDA0OTU1QTggLyogREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjlDQUJDOTFEQjU0QTdBMDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9k
ZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAw
QTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtOTUzMSw2ICs5NTM4
LDcgQEAKIAkJCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjky
OUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5
Q0FCQzgxREI1NEE3ODAwMDhFODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMzg3OTIxQkZEMzFBMTAwRTNBQjFFIC8qIEZUTENvbXBp
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRThEMUMxQjkwMTNDMzAwMzQ2QjUyIC8qIEpT
TmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAJKHJldmlzaW9uIDIwNzQwOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBTdGFja21hcFNwZWNpYWw6OnJlcG9ydFVz
ZWRSZWdpc3RlcgogICAgIHZhbHVlLT5tX3VzZWRSZWdpc3RlcnMubWVyZ2UodXNlZFJlZ2lzdGVy
cyk7CiB9CiAKLWNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcFNwZWNpYWw6OmV4dHJhQ2xvYmJl
cmVkUmVncyhJbnN0JiBpbnN0KQorUmVnaXN0ZXJTZXQgU3RhY2ttYXBTcGVjaWFsOjpleHRyYUNs
b2JiZXJlZFJlZ3MoSW5zdCYgaW5zdCkKIHsKICAgICBTdGFja21hcFZhbHVlKiB2YWx1ZSA9IGlu
c3Qub3JpZ2luLT5hczxTdGFja21hcFZhbHVlPigpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC02
Myw3ICs2Myw3IEBAIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcFNwZWNpYWw6OmV4dHIKICAg
ICByZXR1cm4gdmFsdWUtPmxhdGVDbG9iYmVyZWQoKTsKIH0KIAotY29uc3QgUmVnaXN0ZXJTZXQm
IFN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYgaW5zdCkKK1Jl
Z2lzdGVyU2V0IFN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYg
aW5zdCkKIHsKICAgICBTdGFja21hcFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxTdGFj
a21hcFZhbHVlPigpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAkocmV2aXNpb24gMjA3NDA4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZXBvcnRV
c2VkUmVnaXN0ZXJzKEFpcjo6SW5zdCYsIGNvbnN0IFJlZ2lzdGVyU2V0Jikgb3ZlcnJpZGU7Ci0g
ICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEFpcjo6SW5zdCYp
IG92ZXJyaWRlOwotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYUNsb2JiZXJlZFJlZ3MoQWly
OjpJbnN0Jikgb3ZlcnJpZGU7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFFYXJseUNsb2JiZXJlZFJl
Z3MoQWlyOjpJbnN0Jikgb3ZlcnJpZGU7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFDbG9iYmVyZWRS
ZWdzKEFpcjo6SW5zdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgZG9lcyBu
b3Qgb3ZlcnJpZGUgZ2VuZXJhdGUoKSBvciBkdW1wSW1wbCgpL2RlZXBEdW1wSW1wbCgpLiBXZSBo
YXZlIG1hbnkgc29tZQogICAgIC8vIHN1YmNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgdGhhdC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5j
cHAJKHJldmlzaW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q0NhbGxTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEyICsxNDIsMTIgQEAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIENDYWxsU3BlY2lhbDo6Z2VuZXJhdAogICAgIHJldHVybiBDQ2FsbEhl
bHBlcnM6Okp1bXAoKTsKIH0KIAotY29uc3QgUmVnaXN0ZXJTZXQmIENDYWxsU3BlY2lhbDo6ZXh0
cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYpCitSZWdpc3RlclNldCBDQ2FsbFNwZWNpYWw6OmV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKQogewogICAgIHJldHVybiBtX2VtcHR5UmVnczsK
IH0KIAotY29uc3QgUmVnaXN0ZXJTZXQmIENDYWxsU3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdz
KEluc3QmKQorUmVnaXN0ZXJTZXQgQ0NhbGxTcGVjaWFsOjpleHRyYUNsb2JiZXJlZFJlZ3MoSW5z
dCYpCiB7CiAgICAgcmV0dXJuIG1fY2xvYmJlcmVkUmVnczsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuaAkocmV2aXNpb24gMjA3NDA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsOCArNTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBhZG1pdHNT
dGFjayhJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVwb3J0
VXNlZFJlZ2lzdGVycyhJbnN0JiwgY29uc3QgUmVnaXN0ZXJTZXQmKSBvdmVycmlkZTsKICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgZ2VuZXJhdGUoSW5zdCYsIENDYWxsSGVscGVycyYsIEdlbmVyYXRp
b25Db250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhRWFybHlD
bG9iYmVyZWRSZWdzKEluc3QmKSBvdmVycmlkZTsKLSAgICBjb25zdCBSZWdpc3RlclNldCYgZXh0
cmFDbG9iYmVyZWRSZWdzKEluc3QmKSBvdmVycmlkZTsKKyAgICBSZWdpc3RlclNldCBleHRyYUVh
cmx5Q2xvYmJlcmVkUmVncyhJbnN0Jikgb3ZlcnJpZGU7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFD
bG9iYmVyZWRSZWdzKEluc3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRT
dHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGRlZXBEdW1wSW1wbChQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJJbnN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0LmgJKHJldmlzaW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOCArMTI4LDggQEAgcHVibGljOgogCiAg
ICAgLy8gUmVwb3J0cyBhbnkgYWRkaXRpb25hbCByZWdpc3RlcnMgY2xvYmJlcmVkIGJ5IHRoaXMg
b3BlcmF0aW9uLiBOb3RlIHRoYXQgZm9yIGVmZmljaWVuY3ksCiAgICAgLy8gZXh0cmFDbG9iYmVy
ZWRSZWdzKCkgb25seSB3b3JrcyBmb3IgdGhlIFBhdGNoIG9wY29kZS4KLSAgICBjb25zdCBSZWdp
c3RlclNldCYgZXh0cmFDbG9iYmVyZWRSZWdzKCk7Ci0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzKCk7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFDbG9iYmVyZWRS
ZWdzKCk7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKTsKIAogICAg
IC8vIEl0ZXJhdGUgb3ZlciBhbGwgRGVmJ3MgdGhhdCBoYXBwZW4gYXQgdGhlIGVuZCBvZiBhbiBp
bnN0cnVjdGlvbi4gWW91IHN1cHBseSBhIHBhaXIKICAgICAvLyBpbnN0cnVjdGlvbnMuIFRoZSBp
bnN0cnVjdGlvbnMgbXVzdCBhcHBlYXIgbmV4dCB0byBlYWNoIG90aGVyLCBpbiB0aGF0IG9yZGVy
LCBpbiBzb21lIGJhc2ljCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpcklu
c3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAyMDc0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEzICs0NCwx
MyBAQCB2b2lkIEluc3Q6OmZvckVhY2goY29uc3QgRnVuY3RvciYgZnVuY3RvCiAgICAgICAgIH0p
OwogfQogCi1pbmxpbmUgY29uc3QgUmVnaXN0ZXJTZXQmIEluc3Q6OmV4dHJhQ2xvYmJlcmVkUmVn
cygpCitpbmxpbmUgUmVnaXN0ZXJTZXQgSW5zdDo6ZXh0cmFDbG9iYmVyZWRSZWdzKCkKIHsKICAg
ICBBU1NFUlQoa2luZC5vcGNvZGUgPT0gUGF0Y2gpOwogICAgIHJldHVybiBhcmdzWzBdLnNwZWNp
YWwoKS0+ZXh0cmFDbG9iYmVyZWRSZWdzKCp0aGlzKTsKIH0KIAotaW5saW5lIGNvbnN0IFJlZ2lz
dGVyU2V0JiBJbnN0OjpleHRyYUVhcmx5Q2xvYmJlcmVkUmVncygpCitpbmxpbmUgUmVnaXN0ZXJT
ZXQgSW5zdDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKQogewogICAgIEFTU0VSVChraW5kLm9w
Y29kZSA9PSBQYXRjaCk7CiAgICAgcmV0dXJuIGFyZ3NbMF0uc3BlY2lhbCgpLT5leHRyYUVhcmx5
Q2xvYmJlcmVkUmVncygqdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAko
cmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVy
YXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJBaXJJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkFpckxpdmVuZXNzLmgiCisjaW5jbHVkZSAiQWlyUGFkSW50ZXJmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkFpclRtcElubGlu
ZXMuaCIKICNpbmNsdWRlICJBaXJUbXBXaWR0aC5oIgpAQCAtODQ0LDkgKzg0NSwxMCBAQCBwdWJs
aWM6CiAKICAgICAgICAgUmVnIHJlZyA9IG1fY29sb3JlZFRtcFtBYnNvbHV0ZVRtcE1hcHBlcjx0
eXBlPjo6YWJzb2x1dGVJbmRleCh0bXApXTsKICAgICAgICAgaWYgKCFyZWcpIHsKLSAgICAgICAg
ICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBUbXBzIHRoYXQgaW50ZXJmZXJlLiBBIFRtcCB0aGF0
IG5ldmVyIGludGVyZmVyZSB3aXRoIGFueXRoaW5nCi0gICAgICAgICAgICAvLyBjYW4gdGFrZSBh
bnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICByZWcgPSBtX2NvZGUucmVnc0luUHJpb3JpdHlPcmRl
cih0eXBlKS5maXJzdCgpOworICAgICAgICAgICAgZGF0YUxvZygiRkFUQUw6IE5vIGNvbG9yIGZv
ciAiLCB0bXAsICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiQ29kZTpcbiIpOworICAgICAg
ICAgICAgZGF0YUxvZyhtX2NvZGUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVnOwogICAgIH0KQEAgLTkyOCw2
ICs5MzAsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBidWlsZChJbnN0KiBwcmV2SW5zdCwgSW5z
dCogbmV4dEluc3QsIGNvbnN0IHR5cGVuYW1lIFRtcExpdmVuZXNzPHR5cGU+OjpMb2NhbENhbGMm
IGxvY2FsQ2FsYykKICAgICB7CisgICAgICAgIGlmICh0cmFjZURlYnVnKQorICAgICAgICAgICAg
ZGF0YUxvZygiQnVpbGRpbmcgYmV0d2VlbiAiLCBwb2ludGVyRHVtcChwcmV2SW5zdCksICIgYW5k
ICIsIHBvaW50ZXJEdW1wKG5leHRJbnN0KSwgIjpcbiIpOwogICAgICAgICBJbnN0Ojpmb3JFYWNo
RGVmV2l0aEV4dHJhQ2xvYmJlcmVkUmVnczxUbXA+KAogICAgICAgICAgICAgcHJldkluc3QsIG5l
eHRJbnN0LAogICAgICAgICAgICAgWyZdIChjb25zdCBUbXAmIGFyZywgQXJnOjpSb2xlLCBBcmc6
OlR5cGUgYXJnVHlwZSwgQXJnOjpXaWR0aCkgewpAQCAtOTQzLDYgKzk0Nyw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnVHlwZSAhPSB0eXBlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNlRGVidWcpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEFkZGluZyBkZWYtZGVmIGVkZ2U6ICIsIGFyZywgIiwgIiwg
b3RoZXJBcmcsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+YWRkRWRnZShh
cmcsIG90aGVyQXJnKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsK
QEAgLTk3OSw4ICs5ODUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZm9yIChjb25zdCBUbXAmIGxpdmVUbXAgOiBsb2NhbENhbGMubGl2ZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGxpdmVUbXAgIT0gdXNlVG1wKQorICAgICAgICAgICAgICAgIGlmIChsaXZl
VG1wICE9IHVzZVRtcCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2VEZWJ1ZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBZGRpbmcgZGVmLWxpdmUgZm9yIGNv
YWxlc2NhYmxlOiAiLCBkZWZUbXAsICIsICIsIGxpdmVUbXAsICJcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBhZGRFZGdlKGRlZlRtcCwgbGl2ZVRtcCk7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUaGUgbmV4dCBpbnN0cnVjdGlvbiBjb3VsZCBo
YXZlIGVhcmx5IGNsb2JiZXJzIG9yIGVhcmx5IGRlZidzLiBXZSBuZWVkIHRvIGNvbnNpZGVyCkBA
IC0xMDI2LDYgKzEwMzUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IFRtcCYgbGl2ZVRtcCA6IGxpdmVUbXBzKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChsaXZlVG1wLmlzR1AoKSA9PSAodHlwZSA9PSBBcmc6OkdQKSk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2VEZWJ1ZykK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBZGRpbmcgZGVmLWxpdmUgZWRn
ZTogIiwgYXJnLCAiLCAiLCBsaXZlVG1wLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIGFkZEVkZ2UoYXJnLCBsaXZlVG1wKTsKICAgICAgICAgICAgICAg
ICB9CiAKQEAgLTEyNTYsNiArMTI2OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcnVuKCkKICAg
ICB7CisgICAgICAgIHBhZEludGVyZmVyZW5jZShtX2NvZGUpOworICAgICAgICAKICAgICAgICAg
aXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdPblR5cGU8QXJnOjpHUD4oKTsKICAgICAgICAgaXRl
cmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdPblR5cGU8QXJnOjpGUD4oKTsKIApAQCAtMTU2OSw3ICsx
NTg0LDcgQEAgcHJpdmF0ZToKIHZvaWQgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcoQ29kZSYg
Y29kZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwgIml0ZXJhdGVkUmVnaXN0
ZXJDb2FsZXNjaW5nIik7Ci0KKyAgICAKICAgICBJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZyBp
dGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZyhjb2RlKTsKICAgICBpdGVyYXRlZFJlZ2lzdGVyQ29h
bGVzY2luZy5ydW4oKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
UGFkSW50ZXJmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpclBhZEludGVyZmVyZW5j
ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNs
dWRlICJBaXJJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK3ZvaWQgcGFk
SW50ZXJmZXJlbmNlKENvZGUmIGNvZGUpCit7CisgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChjb2RlKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgeworICAgICAgICBi
b29sIHByZXZIYWRMYXRlID0gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4
ID0gMDsgaW5zdEluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbnN0SW5kZXgpIHsKKyAgICAgICAg
ICAgIEluc3QmIGluc3QgPSBibG9jay0+YXQoaW5zdEluZGV4KTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYm9vbCBoYXNFYXJseURlZiA9IGZhbHNlOworICAgICAgICAgICAgYm9vbCBoYXNM
YXRlID0gZmFsc2U7CisgICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCisgICAgICAgICAgICAg
ICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocm9sZSkgeworICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAgICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkxhdGVVc2U6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpEZWY6
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpaRGVmOgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpV
c2VEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpVc2VaRGVmOgorICAgICAgICAg
ICAgICAgICAgICAgICAgaGFzTGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CisgICAgICAgICAg
ICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNMYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6VXNlOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6Q29sZFVzZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlVzZUFkZHI6CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gUGF0Y2gp
IHsKKyAgICAgICAgICAgICAgICBoYXNFYXJseURlZiB8PSAhaW5zdC5leHRyYUVhcmx5Q2xvYmJl
cmVkUmVncygpLmlzRW1wdHkoKTsKKyAgICAgICAgICAgICAgICBoYXNMYXRlIHw9ICFpbnN0LmV4
dHJhQ2xvYmJlcmVkUmVncygpLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKGhhc0Vhcmx5RGVmICYmIHByZXZIYWRMYXRlKQorICAgICAgICAg
ICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4LCBOb3AsIGluc3Qub3JpZ2luKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgcHJldkhhZExhdGUgPSBoYXNMYXRlOworICAgICAg
ICB9CisgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICB9Cit9CisKK30g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRl
cmZlcmVuY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclBhZEludGVyZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIENvZGU7CisKKy8vIFRoaXMgaXNuJ3QgYSBwaGFzZSAt
IGl0J3MgbWVhbnQgdG8gYmUgYSB1dGlsaXR5IHRoYXQgb3RoZXIgcGhhc2VzIHVzZS4gQWlyIHJl
YXNvbnMgYWJvdXQgbGl2ZW5lc3MgYnkKKy8vIHJlYXNvbmluZyBhYm91dCBpbnRlcmZlcmVuY2Ug
YXQgYm91bmRhcmllcyBiZXR3ZWVuIGluc3RydWN0aW9ucy4gVGhpcyBjYW4gZ28gd3JvbmcgLSBm
b3IgZXhhbXBsZSwgYQorLy8gbGF0ZSB1c2UgaW4gb25lIGluc3RydWN0aW9uIGRvZXNuJ3QgYWN0
dWFsbHkgaW50ZXJmZXJlIHdpdGggYW4gZWFybHkgZGVmIG9mIHRoZSBuZXh0IGluc3RydWN0aW9u
LCBidXQKKy8vIEFpciB0aGlua3MgdGhhdCBpdCBkb2VzLiBUaGlzIGlzIGNvbnZlbmllbnQgYmVj
YXVzZSBpdCB3b3JrcyBncmVhdCBpbiB0aGUgbW9zdCBjb21tb24gY2FzZTogZWFybHkgdXNlcwor
Ly8gYW5kIGxhdGUgZGVmcy4gSW4gcHJhY3RpY2UsIG9ubHkgdGhlIHJlZ2lzdGVyIGFsbG9jYXRv
cnMgbmVlZCB0byB1c2UgdGhpcywgc2luY2Ugb25seSB0aGV5IG5lZWQgdG8gYmUKKy8vIGFibGUg
dG8gY29sb3IgdGhlIGludGVyZmVyZW5jZSBncmFwaCB1c2luZyBhIGJvdW5kZWQgbnVtYmVyIG9m
IGNvbG9ycy4KKy8vCisvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzU0OCNjMiBmb3IgbW9yZSBpbmZvLgorCit2b2lkIHBhZEludGVyZmVyZW5jZShDb2Rl
Jik7CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lh
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lh
bC5oCShyZXZpc2lvbiAyMDc0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
clNwZWNpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdmlydHVhbCBDQ2FsbEhlbHBlcnM6Okp1bXAgZ2VuZXJhdGUoSW5zdCYsIENDYWxsSGVs
cGVycyYsIEdlbmVyYXRpb25Db250ZXh0JikgPSAwOwogCi0gICAgdmlydHVhbCBjb25zdCBSZWdp
c3RlclNldCYgZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYpID0gMDsKLSAgICB2aXJ0dWFs
IGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZ2lzdGVyU2V0IGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWdpc3RlclNldCBleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYpID0gMDsKICAg
ICAKICAgICAvLyBCeSBkZWZhdWx0LCB0aGlzIHJldHVybnMgZmFsc2UuCiAgICAgdmlydHVhbCBi
b29sIGlzVGVybWluYWwoSW5zdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMjA3NDA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQWlySW5zZXJ0aW9uU2V0Lmgi
CiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJMaXZlbmVzcy5oIgor
I2luY2x1ZGUgIkFpclBhZEludGVyZmVyZW5jZS5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUu
aCIKICNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIApAQCAtNDEsNiArNDIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiB2b2lkIHNwaWxsRXZlcnl0aGluZyhD
b2RlJiBjb2RlKQogewogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShjb2RlLCAic3BpbGxFdmVy
eXRoaW5nIik7CisgICAgCisgICAgcGFkSW50ZXJmZXJlbmNlKGNvZGUpOwogCiAgICAgLy8gV2Ug
d2FudCB0byBrbm93IHRoZSBzZXQgb2YgcmVnaXN0ZXJzIHVzZWQgYXQgZXZlcnkgcG9pbnQgaW4g
ZXZlcnkgYmFzaWMgYmxvY2suCiAgICAgSW5kZXhNYXA8QmFzaWNCbG9jaywgVmVjdG9yPFJlZ2lz
dGVyU2V0Pj4gdXNlZFJlZ2lzdGVycyhjb2RlLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZpc2lvbiAyMDc0MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsx
MDcsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG51bWJlck9mU2V0RlBScygpIGNvbnN0OwogICAg
IHNpemVfdCBudW1iZXJPZlNldFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5jb3Vu
dCgpOyB9CiAgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmlz
RW1wdHkoKTsgfQorICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIAogICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUg
fTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291852</attachid>
            <date>2016-10-17 11:58:06 -0700</date>
            <delta_ts>2016-10-17 14:22:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26326</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NDE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBA
CisyMDE2LTEwLTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyOjpJUkMgZG9lc24ndCBuZWVkIHRvIGhhdmUgYSBzcGVjaWFsLWNhc2UgZm9yIHVuY29sb3Jl
ZCBUbXBzIHNpbmNlIHRoZXkgYWxsIGdldCBjb2xvcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI4ODA0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgQmVmb3JlIHIyMDc0MDgsIElSQyBoYWQgYSBtb2RlIHdoZXJlIGl0IHdvdWxk
IHNpbGVudGx5IGFzc2lnbiB0aGUgZmlyc3QgYXNzaWduYWJsZSByZWdpc3RlciAoc28KKyAgICAg
ICAgJXJheCwgJXhtbTAsIGV0YykgdG8gYW55IHRtcCB0aGF0IHdhcyBub3QgY29sb3JhYmxlIGR1
ZSB0byBhIHBhdGhvbG9naWNhbCBpbnRlcmZlcmVuY2UgZmVuY2Vwb3N0LgorICAgICAgICBXZSBy
ZWFzb24gYWJvdXQgaW50ZXJmZXJlbmNlIGF0IGluc3RydWN0aW9uIGJvdW5kYXJpZXMuIFRoaXMg
bWVhbnMgdGhhdCBpZiB5b3UgaGF2ZSwgZm9yIGV4YW1wbGUsCisgICAgICAgIGFuIGluc3RydWN0
aW9uIHRoYXQgY2xvYmJlcnMgYWxsIHJlZ2lzdGVycyBsYXRlIGZvbGxvd2VkIGJ5IGFuIGluc3Ry
dWN0aW9uIHRoYXQgaGFzIGFuIGVhcmx5IGRlZgorICAgICAgICBpbiB0aGUgc2FtZSByZWdpc3Rl
ciBmaWxlLCB0aGVuIHRoZSBlYXJseSBkZWYgd2lsbCBub3QgYmUgY29sb3JhYmxlIGJlY2F1c2Ug
aXQgaW50ZXJmZXJlcyB3aXRoCisgICAgICAgIGFsbCByZWdpc3RlcnMuIFRoaXMgYWxyZWFkeSBo
YXBwZW5zIGluIG91ciB0ZXN0cywgYnV0IElSQyBzaWxlbnRseSByZXR1cm5zIHRoZSBmaXJzdCBh
c3NpZ25hYmxlCisgICAgICAgIHJlZ2lzdGVyIHRvIHN1Y2ggdG1wcy4gRm9yIHNvbWUgcmVhc29u
IHRoZSByZXN1bHRpbmcgY29kZSB3b3JrcyBPSyAtIHByb2JhYmx5IGJlY2F1c2UgdGhpcyB0ZW5k
cworICAgICAgICB0byBvbmx5IGJlIGhpdCBieSBmdXp6aW5nLCB3aGljaCBtYXkgbm90IHRoZW4g
c3RyZXNzIHRoYXQgY29kZSBlbm91Z2ggdG8gc2hha2Ugb3V0IHRoZSByZWdpc3RlcgorICAgICAg
ICBjb3JydXB0aW9uLiBBbHNvLCB0aGlzIGNhbiBvbmx5IGhhcHBlbiBmb3IgZmxvYXRpbmcgcG9p
bnQgcmVnaXN0ZXJzLCBzbyBpdCdzIGhhcmQgdG8gZ2V0IGFuCisgICAgICAgIGV4Y2l0aW5nIGNy
YXNoLiBUaGUgd29yc3QgY2FzZSBpcyB0aGF0IHlvdXIgbnVtYmVycyBnZXQgYWxsIG1lc3NlZCB1
cC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGZpeGVzIHRoZSBpc3N1ZToKKyAgICAg
ICAgCisgICAgICAgIC0gSVJDIHdpbGwgbm93IGNyYXNoIGlmIGl0IGNhbid0IGNvbG9yIGEgdG1w
LgorICAgICAgICAKKyAgICAgICAgLSBJUkMgZG9lc24ndCBjcmFzaCBvbiBvdXIgdGVzdHMgYW55
bW9yZSBiZWNhdXNlIEkgYWRkZWQgYSBwYWRJbnRlcmZlcmVuY2UoKSB1dGlsaXR5IHRoYXQgd29y
a3MKKyAgICAgICAgICBhcm91bmQgdGhlIGludGVyZmVyZW5jZSBwcm9ibGVtIGJ5IGluc2VydGlu
ZyBOb3BzIHRvIHBhZCBiZXR3ZWVuIHRob3NlIGluc3RydWN0aW9ucyB3aGVyZQorICAgICAgICAg
IGNvbmZsYXRpbmcgdGhlaXIgZWFybHkgYW5kIGxhdGUgYWN0aW9ucyBpbnRvIG9uZSBpbnRlcmZl
cmVuY2UgZmVuY2Vwb3N0IGNvdWxkIGNyZWF0ZSBhbgorICAgICAgICAgIHVuY29sb3JhYmxlIGdy
YXBoLgorICAgICAgICAKKyAgICAgICAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM1NDgjYzIgZm9yIGEgZGV0YWlsZWQgZGlzY3Vzc2lvbiBvZiBob3cgdGhl
CisgICAgICAgIHByb2JsZW0gY2FuIGFyaXNlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwcm9i
bGVtIGFsbW9zdCBtYWRlIG1lIHdhbnQgdG8gYWJhbmRvbiBvdXIgdXNlIG9mIGludGVyZmVyZW5j
ZSBhdCBpbnN0cnVjdGlvbiBib3VuZGFyaWVzLAorICAgICAgICBhbmQgaW50cm9kdWNlIHNvbWV0
aGluZyBtb3JlIGNvbXByZWhlbnNpdmUsIGxpa2UgaW50ZXJmZXJlbmNlIGF0IHZhcmlvdXMgc3Rh
Z2VzIG9mIGFuCisgICAgICAgIGluc3RydWN0aW9uJ3MgZXhlY3V0aW9uLiBUaGUgcmVhc29uIHdo
eSBJIGRpZG4ndCBkbyB0aGlzIGlzIHRoYXQgdGhpcyBwcm9ibGVtIG9ubHkgYXJpc2VzIGluIHdl
bGwKKyAgICAgICAgY29uZmluZWQgY29ybmVyIGNhc2VzOiB5b3UgbmVlZCBhbiBpbnN0cnVjdGlv
biB0aGF0IGRvZXMgYSBsYXRlIHVzZSBvciBkZWYgZm9sbG93ZWQgYnkgYW4KKyAgICAgICAgaW5z
dHJ1Y3Rpb24gdGhhdCBkb2VzIGFuIGVhcmx5IGRlZi4gUmVnaXN0ZXIgY2xvYmJlcnMgY291bnQg
YXMgZGVmcyBmb3IgdGhpcyBlcXVhdGlvbi4KKyAgICAgICAgRm9ydHVuYXRlbHksIGVhcmx5IGRl
ZnMgYXJlIHJhcmUsIGFuZCBldmVuIHdoZW4gdGhleSBkbyBoYXBwZW4sIHlvdSBzdGlsbCBuZWVk
IHRoZSBwcmV2aW91cworICAgICAgICBpbnN0cnVjdGlvbiB0byBoYXZlIGEgbGF0ZSBzb21ldGhp
bmcuIExhdGUgdXNlcyBhcmUgcmFyZSBhbmQgbWFueSBpbnN0cnVjdGlvbnMgZG9uJ3QgaGF2ZSBk
ZWZzIGF0CisgICAgICAgIGFsbCwgd2hpY2ggbWVhbnMgdGhhdCBpdCdzIGFjdHVhbGx5IHByZXR0
eSBjb21tb24gZm9yIGFuIGluc3RydWN0aW9uIHRvIG5vdCBoYXZlIGFueXRoaW5nIGxhdGUuCisg
ICAgICAgIFRoaXMgbWVhbnMgdGhhdCB0aGUgcGFkSW50ZXJmZXJlbmNlKCkgc3RyYXRlZ3kgaXMg
aWRlYWw6IG91ciBhbGdvcml0aG1zIHN0YXkgc2ltcGxlIGJlY2F1c2UgdGhleQorICAgICAgICBv
bmx5IGhhdmUgdG8gd29ycnkgYWJvdXQgaW50ZXJmZXJlbmNlIGF0IGJvdW5kYXJpZXMsIGFuZCB3
ZSByYXJlbHkgaW5zZXJ0IGFueSBOb3BzIGluCisgICAgICAgIHBhZEludGVyZmVyZW5jZSgpIHNv
IHRoZSBJUiBzdGF5cyBuaWNlIGFuZCBjb21wYWN0LiBUaG9zZSBOb3BzIGdldCByZW1vdmVkIGJ5
IGFueSBwaGFzZSB0aGF0IGRvZXMKKyAgICAgICAgRENFLCB3aGljaCBpbmNsdWRlcyBlbGltaW5h
dGVEZWFkQ29kZSgpLCBhbGxvY2F0ZVN0YWNrKCksIGFuZCByZXBvcnRVc2VkUmVnaXN0ZXJzKCku
IEluIHByYWN0aWNlCisgICAgICAgIGFsbG9jYXRlU3RhY2soKSBraWxscyB0aGVtLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBhbHNvIGZpbmFsbHkgcmVmYWN0b3JzIG91ciBwYXNzaW5nIG9mIFJl
Z2lzdGVyU2V0IHRvIHBhc3MgaXQgYnkgdmFsdWUsIHNpbmNlIGl0J3Mgc21hbGwKKyAgICAgICAg
ZW5vdWdoIHRoYXQgd2UncmUgbm90IGdhaW5pbmcgYW55dGhpbmcgYnkgdXNpbmcgcmVmZXJlbmNl
cy4gT24geDg2LCBSZWdpc3RlclNldCBvdWdodCB0byBiZQorICAgICAgICBzbWFsbGVyIHRoYW4g
YSBwb2ludGVyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9CM1N0YWNr
bWFwU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6OmV4dHJh
Q2xvYmJlcmVkUmVncyk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6OmV4dHJh
RWFybHlDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKiBiMy9CM1N0YWNrbWFwU3BlY2lhbC5oOgor
ICAgICAgICAqIGIzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpDQ2FsbFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6Q0NhbGxTcGVjaWFsOjpleHRyYUNsb2JiZXJlZFJlZ3MpOgorICAgICAgICAq
IGIzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuaDoKKyAgICAgICAgKiBiMy9haXIvQWlySW5zdC5oOgor
ICAgICAgICAqIGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpJbnN0OjpleHRyYUNsb2JiZXJlZFJlZ3MpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0
OjpleHRyYUVhcmx5Q2xvYmJlcmVkUmVncyk6CisgICAgICAgICogYjMvYWlyL0Fpckl0ZXJhdGVk
UmVnaXN0ZXJDb2FsZXNjaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXRlcmF0ZWRS
ZWdpc3RlckNvYWxlc2NpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cGFkSW50ZXJmZXJlbmNlKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAqIGIz
L2Fpci9BaXJTcGVjaWFsLmg6CisgICAgICAgICogYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnNwaWxsRXZlcnl0aGluZyk6CisgICAgICAgICog
aml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojppc0VtcHR5KToK
KwogMjAxNi0xMC0xNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIHRoZSByZWplY3QoKSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbmRpdGlvbmFsbHkgdGhyb3dp
bmcgVHlwZUVycm9ycy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGIzL2Fpci9BaXJMb3dlckVudHJ5U3dpdGNoLmNwcAogICAgIGIzL2Fpci9BaXJMb3dl
ck1hY3Jvcy5jcHAKICAgICBiMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAorICAgIGIz
L2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCiAgICAgYjMvYWlyL0FpclBoYXNlU2NvcGUuY3Bw
CiAgICAgYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwCiAgICAgYjMvYWlyL0FpclNp
bXBsaWZ5Q0ZHLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzAsNiArNTcwLDggQEAKIAkJ
MEY5QjFEQjQxQzBFNDJBNTAwRTVCRkQyIC8qIEZUTE91dHB1dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlCMURCMzFDMEU0MkE1MDBFNUJGRDIg
LyogRlRMT3V0cHV0LmNwcCAqLzsgfTsKIAkJMEY5QjFEQjcxQzBFNDJCRDAwRTVCRkQyIC8qIEZU
TE9TUkV4aXRIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5QjFEQjUxQzBFNDJCRDAwRTVCRkQyIC8qIEZUTE9TUkV4aXRIYW5kbGUuY3Bw
ICovOyB9OwogCQkwRjlCMURCODFDMEU0MkJEMDBFNUJGRDIgLyogRlRMT1NSRXhpdEhhbmRsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5QjFEQjYx
QzBFNDJCRDAwRTVCRkQyIC8qIEZUTE9TUkV4aXRIYW5kbGUuaCAqLzsgfTsKKwkJMEY5Q0FCQzgx
REI1NEE3ODAwMDhFODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlDQUJDNjFEQjU0QTc2MDAwOEU4M0Ig
LyogQWlyUGFkSW50ZXJmZXJlbmNlLmNwcCAqLzsgfTsKKwkJMEY5Q0FCQzkxREI1NEE3QTAwMDhF
ODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5Q0FCQzcxREI1NEE3NjAwMDhFODNCIC8qIEFpclBhZEludGVy
ZmVyZW5jZS5oICovOyB9OwogCQkwRjlEMzM3MDE2NURCQjkwMDA1QUQzODcgLyogRGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OUQzMzZFMTY1REJCOEQwMDVBRDM4NyAvKiBEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQkwRjlE
MzM5NjE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk0MTdGRkM0RTYwMDczQzJCQyAv
KiBERkdGbHVzaGVkQXQuY3BwICovOyB9OwogCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyog
REZHRmx1c2hlZEF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjlEMzM5NTE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggKi87IH07CkBA
IC0yODM2LDYgKzI4MzgsOCBAQAogCQkwRjlCMURCMzFDMEU0MkE1MDBFNUJGRDIgLyogRlRMT3V0
cHV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTE91dHB1dC5j
cHA7IHBhdGggPSBmdGwvRlRMT3V0cHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5QjFEQjUxQzBFNDJCRDAwRTVCRkQyIC8qIEZUTE9TUkV4aXRIYW5kbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMT1NSRXhpdEhhbmRsZS5jcHA7IHBh
dGggPSBmdGwvRlRMT1NSRXhpdEhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOUIxREI2MUMwRTQyQkQwMEU1QkZEMiAvKiBGVExPU1JFeGl0SGFuZGxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTE9TUkV4aXRIYW5kbGUuaDsgcGF0aCA9IGZ0
bC9GVExPU1JFeGl0SGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUNB
QkM2MURCNTRBNzYwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZlcmVuY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjlDQUJDNzFEQjU0QTc2MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclBhZEludGVyZmVyZW5jZS5oOyBwYXRo
ID0gYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjlEMzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBk
aXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5RDMzOTQxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGbHVzaGVkQXQuY3BwOyBwYXRoID0gZGZn
L0RGR0ZsdXNoZWRBdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzk1
MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHRmx1c2hlZEF0Lmg7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDczLDYgKzUwNzcsOCBAQAogCQkJCTI2NDA5
MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bjb2RlcyAqLywKIAkJCQkwRkIzODc4
QzFCRkJDNDREMDBFM0FCMUUgLyogQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcCAqLywKIAkJCQkw
RkIzODc4RDFCRkJDNDREMDBFM0FCMUUgLyogQWlyT3B0aW1pemVCbG9ja09yZGVyLmggKi8sCisJ
CQkJMEY5Q0FCQzYxREI1NEE3NjAwMDhFODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5jcHAgKi8s
CisJCQkJMEY5Q0FCQzcxREI1NEE3NjAwMDhFODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5oICov
LAogCQkJCTBGRUM4NTVFMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmNwcCAqLywK
IAkJCQkwRkVDODU1RjFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5oICovLAogCQkJ
CTBGNDU3MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAq
LywKQEAgLTc2MTUsNiArNzYyMSw3IEBACiAJCQkJMEZGMkNENUMxQjYxQTRGODAwNDk1NUE4IC8q
IERGR011bHRpR2V0QnlPZmZzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM3ODEwRTE3
OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY5Q0FCQzkxREI1NEE3QTAwMDhFODNCIC8qIEFpclBhZEludGVyZmVyZW5jZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBE
RkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKQEAgLTk1MzEsNiArOTUzOCw3IEBACiAJCQkJ
QTc0REVGOTUxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUNBQkM4MURCNTRB
NzgwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQjM4NzkyMUJGRDMxQTEwMEUzQUIxRSAvKiBGVExDb21waWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUzM0U4RDFDMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3RhY2ttYXBTcGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCShyZXZpc2lvbiAyMDc0MDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIHZvaWQgU3RhY2ttYXBTcGVjaWFsOjpyZXBvcnRVc2VkUmVnaXN0ZXIK
ICAgICB2YWx1ZS0+bV91c2VkUmVnaXN0ZXJzLm1lcmdlKHVzZWRSZWdpc3RlcnMpOwogfQogCi1j
b25zdCBSZWdpc3RlclNldCYgU3RhY2ttYXBTcGVjaWFsOjpleHRyYUNsb2JiZXJlZFJlZ3MoSW5z
dCYgaW5zdCkKK1JlZ2lzdGVyU2V0IFN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdz
KEluc3QmIGluc3QpCiB7CiAgICAgU3RhY2ttYXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+
YXM8U3RhY2ttYXBWYWx1ZT4oKTsKICAgICBBU1NFUlQodmFsdWUpOwpAQCAtNjMsNyArNjMsNyBA
QCBjb25zdCBSZWdpc3RlclNldCYgU3RhY2ttYXBTcGVjaWFsOjpleHRyCiAgICAgcmV0dXJuIHZh
bHVlLT5sYXRlQ2xvYmJlcmVkKCk7CiB9CiAKLWNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcFNw
ZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3QpCitSZWdpc3RlclNldCBT
dGFja21hcFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3QpCiB7CiAg
ICAgU3RhY2ttYXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4o
KTsKICAgICBBU1NFUlQodmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3RhY2ttYXBTcGVjaWFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3RhY2ttYXBTcGVjaWFsLmgJKHJldmlzaW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1
Miw4IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVy
cyhBaXI6Okluc3QmLCBjb25zdCBSZWdpc3RlclNldCYpIG92ZXJyaWRlOwotICAgIGNvbnN0IFJl
Z2lzdGVyU2V0JiBleHRyYUVhcmx5Q2xvYmJlcmVkUmVncyhBaXI6Okluc3QmKSBvdmVycmlkZTsK
LSAgICBjb25zdCBSZWdpc3RlclNldCYgZXh0cmFDbG9iYmVyZWRSZWdzKEFpcjo6SW5zdCYpIG92
ZXJyaWRlOworICAgIFJlZ2lzdGVyU2V0IGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEFpcjo6SW5z
dCYpIG92ZXJyaWRlOworICAgIFJlZ2lzdGVyU2V0IGV4dHJhQ2xvYmJlcmVkUmVncyhBaXI6Oklu
c3QmKSBvdmVycmlkZTsKIAogICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG92ZXJyaWRl
IGdlbmVyYXRlKCkgb3IgZHVtcEltcGwoKS9kZWVwRHVtcEltcGwoKS4gV2UgaGF2ZSBtYW55IHNv
bWUKICAgICAvLyBzdWJjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoYXQuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCShyZXZpc2lv
biAyMDc0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lh
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMiArMTQyLDEyIEBAIENDYWxsSGVscGVyczo6
SnVtcCBDQ2FsbFNwZWNpYWw6OmdlbmVyYXQKICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1w
KCk7CiB9CiAKLWNvbnN0IFJlZ2lzdGVyU2V0JiBDQ2FsbFNwZWNpYWw6OmV4dHJhRWFybHlDbG9i
YmVyZWRSZWdzKEluc3QmKQorUmVnaXN0ZXJTZXQgQ0NhbGxTcGVjaWFsOjpleHRyYUVhcmx5Q2xv
YmJlcmVkUmVncyhJbnN0JikKIHsKICAgICByZXR1cm4gbV9lbXB0eVJlZ3M7CiB9CiAKLWNvbnN0
IFJlZ2lzdGVyU2V0JiBDQ2FsbFNwZWNpYWw6OmV4dHJhQ2xvYmJlcmVkUmVncyhJbnN0JikKK1Jl
Z2lzdGVyU2V0IENDYWxsU3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKQogewogICAg
IHJldHVybiBtX2Nsb2JiZXJlZFJlZ3M7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNDYWxsU3BlY2lhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmgJKHJldmlzaW9uIDIwNzQwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDggKzU3LDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgYWRtaXRzU3RhY2soSW5zdCYs
IHVuc2lnbmVkIGFyZ0luZGV4KSBvdmVycmlkZTsKICAgICB2b2lkIHJlcG9ydFVzZWRSZWdpc3Rl
cnMoSW5zdCYsIGNvbnN0IFJlZ2lzdGVyU2V0Jikgb3ZlcnJpZGU7CiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIGdlbmVyYXRlKEluc3QmLCBDQ2FsbEhlbHBlcnMmLCBHZW5lcmF0aW9uQ29udGV4dCYp
IG92ZXJyaWRlOwotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYUVhcmx5Q2xvYmJlcmVkUmVn
cyhJbnN0Jikgb3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhQ2xvYmJlcmVk
UmVncyhJbnN0Jikgb3ZlcnJpZGU7CisgICAgUmVnaXN0ZXJTZXQgZXh0cmFFYXJseUNsb2JiZXJl
ZFJlZ3MoSW5zdCYpIG92ZXJyaWRlOworICAgIFJlZ2lzdGVyU2V0IGV4dHJhQ2xvYmJlcmVkUmVn
cyhJbnN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWVwRHVtcEltcGwoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCShyZXZp
c2lvbiAyMDc0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI4LDggKzEyOCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFJlcG9y
dHMgYW55IGFkZGl0aW9uYWwgcmVnaXN0ZXJzIGNsb2JiZXJlZCBieSB0aGlzIG9wZXJhdGlvbi4g
Tm90ZSB0aGF0IGZvciBlZmZpY2llbmN5LAogICAgIC8vIGV4dHJhQ2xvYmJlcmVkUmVncygpIG9u
bHkgd29ya3MgZm9yIHRoZSBQYXRjaCBvcGNvZGUuCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4
dHJhQ2xvYmJlcmVkUmVncygpOwotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYUVhcmx5Q2xv
YmJlcmVkUmVncygpOworICAgIFJlZ2lzdGVyU2V0IGV4dHJhQ2xvYmJlcmVkUmVncygpOworICAg
IFJlZ2lzdGVyU2V0IGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCk7CiAKICAgICAvLyBJdGVyYXRl
IG92ZXIgYWxsIERlZidzIHRoYXQgaGFwcGVuIGF0IHRoZSBlbmQgb2YgYW4gaW5zdHJ1Y3Rpb24u
IFlvdSBzdXBwbHkgYSBwYWlyCiAgICAgLy8gaW5zdHJ1Y3Rpb25zLiBUaGUgaW5zdHJ1Y3Rpb25z
IG11c3QgYXBwZWFyIG5leHQgdG8gZWFjaCBvdGhlciwgaW4gdGhhdCBvcmRlciwgaW4gc29tZSBi
YXNpYwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGlu
ZXMuaAkocmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMyArNDQsMTMgQEAgdm9pZCBJ
bnN0Ojpmb3JFYWNoKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0bwogICAgICAgICB9KTsKIH0KIAotaW5s
aW5lIGNvbnN0IFJlZ2lzdGVyU2V0JiBJbnN0OjpleHRyYUNsb2JiZXJlZFJlZ3MoKQoraW5saW5l
IFJlZ2lzdGVyU2V0IEluc3Q6OmV4dHJhQ2xvYmJlcmVkUmVncygpCiB7CiAgICAgQVNTRVJUKGtp
bmQub3Bjb2RlID09IFBhdGNoKTsKICAgICByZXR1cm4gYXJnc1swXS5zcGVjaWFsKCktPmV4dHJh
Q2xvYmJlcmVkUmVncygqdGhpcyk7CiB9CiAKLWlubGluZSBjb25zdCBSZWdpc3RlclNldCYgSW5z
dDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKQoraW5saW5lIFJlZ2lzdGVyU2V0IEluc3Q6OmV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkKIHsKICAgICBBU1NFUlQoa2luZC5vcGNvZGUgPT0gUGF0
Y2gpOwogICAgIHJldHVybiBhcmdzWzBdLnNwZWNpYWwoKS0+ZXh0cmFFYXJseUNsb2JiZXJlZFJl
Z3MoKnRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRl
ZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHJldmlzaW9uIDIw
NzQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3Rl
ckNvYWxlc2NpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQWlySW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNs
dWRlICJBaXJMaXZlbmVzcy5oIgorI2luY2x1ZGUgIkFpclBhZEludGVyZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJBaXJUbXBJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQWlyVG1wV2lkdGguaCIKQEAgLTg0NCw5ICs4NDUsMTAgQEAgcHVibGljOgogCiAgICAg
ICAgIFJlZyByZWcgPSBtX2NvbG9yZWRUbXBbQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29s
dXRlSW5kZXgodG1wKV07CiAgICAgICAgIGlmICghcmVnKSB7Ci0gICAgICAgICAgICAvLyBXZSBv
bmx5IGNhcmUgYWJvdXQgVG1wcyB0aGF0IGludGVyZmVyZS4gQSBUbXAgdGhhdCBuZXZlciBpbnRl
cmZlcmUgd2l0aCBhbnl0aGluZwotICAgICAgICAgICAgLy8gY2FuIHRha2UgYW55IHJlZ2lzdGVy
LgotICAgICAgICAgICAgcmVnID0gbV9jb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkuZmly
c3QoKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBObyBjb2xvciBmb3IgIiwgdG1wLCAi
XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkNvZGU6XG4iKTsKKyAgICAgICAgICAgIGRhdGFM
b2cobV9jb2RlKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlZzsKICAgICB9CkBAIC05MjgsNiArOTMwLDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgYnVpbGQoSW5zdCogcHJldkluc3QsIEluc3QqIG5leHRJbnN0
LCBjb25zdCB0eXBlbmFtZSBUbXBMaXZlbmVzczx0eXBlPjo6TG9jYWxDYWxjJiBsb2NhbENhbGMp
CiAgICAgeworICAgICAgICBpZiAodHJhY2VEZWJ1ZykKKyAgICAgICAgICAgIGRhdGFMb2coIkJ1
aWxkaW5nIGJldHdlZW4gIiwgcG9pbnRlckR1bXAocHJldkluc3QpLCAiIGFuZCAiLCBwb2ludGVy
RHVtcChuZXh0SW5zdCksICI6XG4iKTsKICAgICAgICAgSW5zdDo6Zm9yRWFjaERlZldpdGhFeHRy
YUNsb2JiZXJlZFJlZ3M8VG1wPigKICAgICAgICAgICAgIHByZXZJbnN0LCBuZXh0SW5zdCwKICAg
ICAgICAgICAgIFsmXSAoY29uc3QgVG1wJiBhcmcsIEFyZzo6Um9sZSwgQXJnOjpUeXBlIGFyZ1R5
cGUsIEFyZzo6V2lkdGgpIHsKQEAgLTk0Myw2ICs5NDcsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGFyZ1R5cGUgIT0gdHlwZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFjZURlYnVnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBBZGRpbmcgZGVmLWRlZiBlZGdlOiAiLCBhcmcsICIsICIsIG90aGVyQXJnLCAi
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmFkZEVkZ2UoYXJnLCBvdGhlckFy
Zyk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CkBAIC05NzksOCAr
OTg1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZvciAoY29u
c3QgVG1wJiBsaXZlVG1wIDogbG9jYWxDYWxjLmxpdmUoKSkgewotICAgICAgICAgICAgICAgIGlm
IChsaXZlVG1wICE9IHVzZVRtcCkKKyAgICAgICAgICAgICAgICBpZiAobGl2ZVRtcCAhPSB1c2VU
bXApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNlRGVidWcpCisgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgQWRkaW5nIGRlZi1saXZlIGZvciBjb2FsZXNjYWJsZTog
IiwgZGVmVG1wLCAiLCAiLCBsaXZlVG1wLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgYWRk
RWRnZShkZWZUbXAsIGxpdmVUbXApOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gVGhlIG5leHQgaW5zdHJ1Y3Rpb24gY291bGQgaGF2ZSBlYXJseSBj
bG9iYmVycyBvciBlYXJseSBkZWYncy4gV2UgbmVlZCB0byBjb25zaWRlcgpAQCAtMTAyNiw2ICsx
MDM1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9y
IChjb25zdCBUbXAmIGxpdmVUbXAgOiBsaXZlVG1wcykgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobGl2ZVRtcC5pc0dQKCkgPT0gKHR5cGUgPT0gQXJnOjpHUCkpOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNlRGVidWcpCisgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQWRkaW5nIGRlZi1saXZlIGVkZ2U6ICIsIGFyZywg
IiwgIiwgbGl2ZVRtcCwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICBhZGRFZGdlKGFyZywgbGl2ZVRtcCk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0x
MjU2LDYgKzEyNjksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bigpCiAgICAgeworICAgICAg
ICBwYWRJbnRlcmZlcmVuY2UobV9jb2RlKTsKKyAgICAgICAgCiAgICAgICAgIGl0ZXJhdGVkUmVn
aXN0ZXJDb2FsZXNjaW5nT25UeXBlPEFyZzo6R1A+KCk7CiAgICAgICAgIGl0ZXJhdGVkUmVnaXN0
ZXJDb2FsZXNjaW5nT25UeXBlPEFyZzo6RlA+KCk7CiAKQEAgLTE1NjksNyArMTU4NCw3IEBAIHBy
aXZhdGU6CiB2b2lkIGl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nKENvZGUmIGNvZGUpCiB7CiAg
ICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKGNvZGUsICJpdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2lu
ZyIpOwotCisgICAgCiAgICAgSXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcgaXRlcmF0ZWRSZWdp
c3RlckNvYWxlc2NpbmcoY29kZSk7CiAgICAgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcucnVu
KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVy
ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQ
YWRJbnRlcmZlcmVuY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJQYWRJbnRlcmZlcmVuY2UuaCIKKworI2lm
IEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSAiQWlySW5z
ZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCit2b2lkIHBhZEludGVyZmVyZW5j
ZShDb2RlJiBjb2RlKQoreworICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQoY29kZSk7Cisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgYm9vbCBwcmV2SGFk
TGF0ZSA9IGZhbHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IDA7IGluc3RJ
bmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5zdEluZGV4KSB7CisgICAgICAgICAgICBJbnN0JiBp
bnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJv
b2wgaGFzRWFybHlEZWYgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgaGFzTGF0ZSA9IGZhbHNl
OworICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAorICAgICAgICAgICAgICAgIFsmXSAoQXJn
JiwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCkgeworICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVh
cmx5RGVmOgorICAgICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlEZWYgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpMYXRlVXNlOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RGVmOgorICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6WkRlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkxhdGVDb2xkVXNlOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VXNlRGVmOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VXNlWkRlZjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhhc0xhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTY3JhdGNoOgorICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzRWFybHlEZWYgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGF0ZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OlVzZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkNvbGRVc2U6
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpVc2VBZGRyOgorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7CisgICAgICAg
ICAgICAgICAgaGFzRWFybHlEZWYgfD0gIWluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKS5p
c0VtcHR5KCk7CisgICAgICAgICAgICAgICAgaGFzTGF0ZSB8PSAhaW5zdC5leHRyYUNsb2JiZXJl
ZFJlZ3MoKS5pc0VtcHR5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChoYXNFYXJseURlZiAmJiBwcmV2SGFkTGF0ZSkKKyAgICAgICAgICAgICAgICBpbnNl
cnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgTm9wLCBpbnN0Lm9yaWdpbik7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHByZXZIYWRMYXRlID0gaGFzTGF0ZTsKKyAgICAgICAgfQorICAgICAg
ICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CisgICAgfQorfQorCit9IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRl
cmZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBB
aXIgeworCitjbGFzcyBDb2RlOworCisvLyBUaGlzIGlzbid0IGEgcGhhc2UgLSBpdCdzIG1lYW50
IHRvIGJlIGEgdXRpbGl0eSB0aGF0IG90aGVyIHBoYXNlcyB1c2UuIEFpciByZWFzb25zIGFib3V0
IGxpdmVuZXNzIGJ5CisvLyByZWFzb25pbmcgYWJvdXQgaW50ZXJmZXJlbmNlIGF0IGJvdW5kYXJp
ZXMgYmV0d2VlbiBpbnN0cnVjdGlvbnMuIFRoaXMgY2FuIGdvIHdyb25nIC0gZm9yIGV4YW1wbGUs
IGEKKy8vIGxhdGUgdXNlIGluIG9uZSBpbnN0cnVjdGlvbiBkb2Vzbid0IGFjdHVhbGx5IGludGVy
ZmVyZSB3aXRoIGFuIGVhcmx5IGRlZiBvZiB0aGUgbmV4dCBpbnN0cnVjdGlvbiwgYnV0CisvLyBB
aXIgdGhpbmtzIHRoYXQgaXQgZG9lcy4gVGhpcyBpcyBjb252ZW5pZW50IGJlY2F1c2UgaXQgd29y
a3MgZ3JlYXQgaW4gdGhlIG1vc3QgY29tbW9uIGNhc2U6IGVhcmx5IHVzZXMKKy8vIGFuZCBsYXRl
IGRlZnMuIEluIHByYWN0aWNlLCBvbmx5IHRoZSByZWdpc3RlciBhbGxvY2F0b3JzIG5lZWQgdG8g
dXNlIHRoaXMsIHNpbmNlIG9ubHkgdGhleSBuZWVkIHRvIGJlCisvLyBhYmxlIHRvIGNvbG9yIHRo
ZSBpbnRlcmZlcmVuY2UgZ3JhcGggdXNpbmcgYSBib3VuZGVkIG51bWJlciBvZiBjb2xvcnMuCisv
LworLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NDgj
YzIgZm9yIG1vcmUgaW5mby4KKwordm9pZCBwYWRJbnRlcmZlcmVuY2UoQ29kZSYpOworCit9IH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAkocmV2aXNp
b24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1
YWwgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRlKEluc3QmLCBDQ2FsbEhlbHBlcnMmLCBHZW5l
cmF0aW9uQ29udGV4dCYpID0gMDsKIAotICAgIHZpcnR1YWwgY29uc3QgUmVnaXN0ZXJTZXQmIGV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKSA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBSZWdp
c3RlclNldCYgZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKSA9IDA7CisgICAgdmlydHVhbCBSZWdp
c3RlclNldCBleHRyYUVhcmx5Q2xvYmJlcmVkUmVncyhJbnN0JikgPSAwOworICAgIHZpcnR1YWwg
UmVnaXN0ZXJTZXQgZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKSA9IDA7CiAgICAgCiAgICAgLy8g
QnkgZGVmYXVsdCwgdGhpcyByZXR1cm5zIGZhbHNlLgogICAgIHZpcnR1YWwgYm9vbCBpc1Rlcm1p
bmFsKEluc3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIwNzQwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgogI2luY2x1ZGUg
IkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyTGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJB
aXJQYWRJbnRlcmZlcmVuY2UuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCiAjaW5jbHVk
ZSA8d3RmL0luZGV4TWFwLmg+CiAKQEAgLTQxLDYgKzQyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkK
IHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwgInNwaWxsRXZlcnl0aGluZyIpOwor
ICAgIAorICAgIHBhZEludGVyZmVyZW5jZShjb2RlKTsKIAogICAgIC8vIFdlIHdhbnQgdG8ga25v
dyB0aGUgc2V0IG9mIHJlZ2lzdGVycyB1c2VkIGF0IGV2ZXJ5IHBvaW50IGluIGV2ZXJ5IGJhc2lj
IGJsb2NrLgogICAgIEluZGV4TWFwPEJhc2ljQmxvY2ssIFZlY3RvcjxSZWdpc3RlclNldD4+IHVz
ZWRSZWdpc3RlcnMoY29kZS5zaXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMjA3NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDggQEAgcHVi
bGljOgogICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKICAgICBzaXplX3QgbnVt
YmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQogICAg
IAorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5pc0VtcHR5KCk7IH0K
KyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07Cg==
</data>
<flag name="review"
          id="314960"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>